1
Noções Básicas de Programação com a TI-Nspire™ CX
Introdução As competências computacionais revelam-se cada vez mais imprescindíveis na eficaz resposta aos desafios profissionais e pessoais da sociedade atual, sendo expectável que tal importância seja mais expressiva nos anos que se seguem. Efetivamente, a interação com o mundo digital que nos rodeia há muito ultrapassou a mera utilização de um sistema user-friendly, geralmente com um número bastante limitado de opções standard predefinidas, passando a ser solicitado ao utilizador um papel mais ativo, de forma a contemplar a miríade de funcionalidades de um simples eletrodoméstico, como um robot de cozinha, ou do computador de bordo de um automóvel moderno. Em particular, as competências em termos da algoritmia e da programação de computadores, ainda que de uma forma básica, serão certamente fundamentais em qualquer emprego do futuro.
© FCA
Com a massificação dos computadores e dos sistemas operativos inerentes, o raciocínio computacional e a algoritmia deixaram de estar ao alcance de apenas uma minoria de técnicos altamente especializados, passando a fazer parte do quotidiano de um público cada vez mais vasto (de tal forma que, desde 2015, os alunos dos 3.º e 4.º anos de escolaridade das escolas públicas portuguesas desenvolvem aprendizagens de iniciação à programação, num projeto-piloto promovido pela Direção-Geral de Educação). Ao longo do texto será aplicada uma metodologia que permitirá ao leitor iniciar-se na aventura da programação e da algoritmia, adquirindo competências para que, de forma 1
ALGORITMIA E PROGRAMAÇÃO COM A TI-NSPIRE™ CX
autónoma, seja capaz de criar verdadeiros programas de computador. Tal possibilitará a sua gradual evolução para um grau de complexidade cujos limites serão a imaginação e a dedicação do leitor ou, numa situação extrema, a capacidade técnica do sistema de programação que iremos utilizar.
1.1 A algoritmia e a utilização de pseudocódigo Apesar de o conceito de algoritmo existir desde a Antiguidade, tendo sido usado pelos matemáticos gregos há mais de 2 mil anos, só a partir de meados do séc. XX é que a massificação dos computadores e das ciências da computação levou a uma mais ampla divulgação do seu significado, sendo considerado o fundamento de qualquer programa de computador, simples ou complexo. Pode definir-se algoritmo como uma sequência de instruções inequívocas e exequíveis, executadas eletrónica ou mecanicamente, que permite a resolução de determinado problema ou a realização de determinada tarefa. O algoritmo pode também incluir ciclos de repetição ou a análise de circunstâncias que condicionam, de forma objetiva, a concretização do mesmo. Considere que pretende substituir uma lâmpada fundida na sua habitação. Para um adulto sem limitações motoras ou cognitivas, trata-se de uma tarefa que não carece da definição de um algoritmo particularmente complexo, adotado geralmente de forma não consciente. Este algoritmo pode ser algo do género: SE a lâmpada não acende ENTÃO: Retirar a lâmpada fundida; Colocar a lâmpada nova;
FIM DE TAREFA
Neste caso, o algoritmo é bastante simplista, pois assumimos que as restantes informações, tais como avaliar a necessidade de utilização de uma escada ou perceber como remover a lâmpada, são facilmente processadas e levadas a cabo pelo operador, já que o mesmo é dotado de inteligência natural1, tendo, por isso, liberdade e capacidade para avaliar o contexto que o rodeia, processar a informação recebida e decidir de forma autónoma sobre o procedimento a efetuar. Suponha agora que pedia a mesma tarefa a uma criança ou a alguém que, por qualquer circunstância nunca tivesse contactado com “tecnologias” como uma escada, a eletricidade e/ou uma lâmpada. Certamente que o detalhe das instruções contidas no algoritmo teria de ser muito maior, explicitando, por exemplo, como utilizar a escada, quantos degraus subir, para que lado se desenrosca a lâmpada ou como se insere uma lâmpada nova. No caso 1
Por oposição ao termo inteligência artificial, na senda dos mais recentes avanços a nível informático. 2
Noções Básicas de Programação com a TI-Nspire™ CX
de um robot convencional controlado por computador, seria necessário acrescentar todos os ínfimos detalhes inerentes à operação, tais como voltar a descer os degraus depois de concluída a tarefa de substituição da lâmpada. Poder-se-ia pensar em algo do género: SE a lâmpada não acende ENTÃO:
MOVER a escada para a posição abaixo da lâmpada;
REPETIR [as operações abaixo] enquanto a altura for insuficiente: SUBIR um degrau;
ADICIONAR uma unidade ao número de degraus subidos e RETER esta informação; VERIFICAR altura. Caso seja suficiente, abandonar este ciclo;
CONTINUAR CICLO DE REPETIÇÃO [enquanto for necessário]; AGARRAR a lâmpada fundida;
REPETIR [as operações abaixo] enquanto não conseguir retirar a lâmpada:
RODAR a lâmpada fundida 10º no sentido contrário aos ponteiros do relógio;
VERIFICAR a fixação da lâmpada. Caso esteja solta, abandonar este ciclo;
CONTINUAR CICLO DE REPETIÇÃO [enquanto for necessário]; POUSAR a lâmpada fundida; AGARRAR a lâmpada nova;
POSICIONAR a lâmpada nova no casquilho;
REPETIR [as operações abaixo] até detetar que a lâmpada está fixa:
RODAR a lâmpada fundida 10º no sentido dos ponteiros do relógio;
VERIFICAR o aperto da lâmpada. Caso seja suficiente, abandonar este ciclo;
CONTINUAR CICLO DE REPETIÇÃO;
DESCER o número de degraus da escada que foram subidos [cuja informação foi retida em operação anterior];
FIM DE TAREFA
Neste caso, o nível de detalhe poderia ser considerado mais próximo do que o necessário para comandar uma máquina controlada por computador, assumindo-se desta forma como um algoritmo perfeitamente válido. A dificuldade seguinte2 prende-se com o facto de a linguagem utilizada para escrever o algoritmo não ser certamente codificada e operacionalizada de forma equivalente por
© FCA
2
Ao longo do texto, iremos navegando de dificuldade em dificuldade, até atingirmos um nível em que aplicar uma linguagem de programação se torne praticamente tão natural como escrever uma carta através de um processador de texto. 3
ALGORITMIA E PROGRAMAÇÃO COM A TI-NSPIRE™ CX
todos os computadores ou sistemas digitais. É por esta razão que se desenvolveram diversas linguagens de programação3, as quais, ao adotarem codificações que não dependem da máquina de destino, tornaram possível a programação das mesmas, em qualquer parte do mundo e de forma independente à linguagem falada no país de origem ou de destino do programa informático. Com o objetivo de simplificar a aprendizagem da algoritmia e da programação, especialmente para não falantes de língua inglesa (a partir da qual a generalidade das linguagens de programação é desenvolvida), é usual adotar-se o uso de pseudocódigo. Trata-se de uma forma genérica de escrever um algoritmo, através de uma linguagem intermédia entre a linguagem natural e uma linguagem de programação, mas bastante simples e nativa para quem a utiliza. De certa forma, foi o que aplicámos no algoritmo apresentado. (as instruções do pseudocódigo foram apresentadas sob a forma de letras maiúsculas). Desta forma, o “salto” para uma linguagem de programação efetiva torna-se bastante mais simples, sendo reduzido a uma espécie de tradução dos termos usados no pseudocódigo para os comandos específicos da linguagem de programação utilizada4. Apesar de, a nosso ver, o pseudocódigo apresentado ser legível por qualquer falante de língua portuguesa não é, de facto, geral e único. Assim, têm sido apresentadas diversas compilações de propostas de pseudocódigo em língua portuguesa, com o intuito de conferir alguma normalização ao seu uso, evitando-se eventuais erros devido a interpretações erradas dos comandos. No entanto, atendendo à própria definição de pseudocódigo, trata-se de uma linguagem que se destina a ser descodificada por um ser humano e não por uma máquina, pelo que, a este nível, a normalização da linguagem não é indispensável na maioria dos casos, contrariamente ao sucedido quando a codificação deve ser descodificada por uma máquina ou um computador. Apresentam-se de seguida alguns exemplos de instruções em pseudocódigo, com as quais o leitor poderá elaborar um número considerável de diferentes algoritmos, tal como demonstraremos na secção 1.1.6.
1.1.1 Instruções de entrada Finalidade: Utilizadas para pedir dados ao utilizador do programa. Sintaxe: LER (nome da variável) 3
Tais como Java, Python, C ou BASIC, entre outras. Este livro será desenvolvido com recurso à linguagem de programação TI-BASIC, desenvolvida pela Texas Instruments Inc.
4
Efetivamente, a linguagem de programação TI-BASIC, presente em todas as calculadoras programáveis da Texas Instruments Inc. pode considerar-se uma espécie de pseudocódigo em língua inglesa, dada a simplicidade e inteligibilidade dos comandos utilizados. 4
Noções Básicas de Programação com a TI-Nspire™ CX
Exemplo: LER (idade)
1.1.2 Instruções de saída Finalidade: Utilizadas para mostrar dados ao utilizador do programa. Sintaxe: ESCREVER (Texto entre “”; variável)
Exemplo: ESCREVER (“A sua idade é ”; idade)
1.1.3 Armazenamento de dados Finalidade: Na execução de um programa é usual a necessidade de armazenamento de dados numéricos ou alfanuméricos (texto), seja em passos intermédios do programa ou para apresentação de resultados finais. Os dados são armazenados em variáveis através do operador muitas vezes representado em algoritmia por . Sintaxe: variável expressão numérica ou valor
Exemplo: numerodias 365*idade
Este exemplo supõe a existência de uma variável idade definida anteriormente (noutra secção do programa) e calcula o número de dias correspondente ao número de anos. O resultado desta operação é armazenado numa variável denominada numerodias5.
1.1.4 Estrutura de seleção Finalidade: Realiza um conjunto alternativo de instruções, dependendo do cumprimento ou não de determinada condição. Sintaxe:
© FCA
SE [condição] ENTÃO
5
Existem algumas regras para a utilização e definição de variáveis, cuja abordagem ultrapassa o âmbito deste livro. 5
ALGORITMIA E PROGRAMAÇÃO COM A TI-NSPIRE™ CX
Instrução…. Instrução….
SENÃO
Instrução…. Instrução….
FIMSE
Exemplo: SE idade > 65 ENTÃO
ESCREVER (“Atingiu a idade de reforma”)
SENÃO
ESCREVER (“Ainda não atingiu a idade de reforma”)
FIMSE
1.1.5 Estrutura de repetição Finalidade: Processa uma sequência de instruções tantas vezes quantas as estabelecidas pela condição a que está sujeita. Sintaxe: PARA [início contador] ATÉ [fim contador] FAZER Instrução…. Instrução….
FIMPARA
Exemplo: PARA contador = 1 ATÉ 5 FAZER
ESCREVER (“Esta frase será escrita cinco vezes…”)
FIMPARA
1.1.6 Exemplos de algoritmos Utilizemos o que acabámos de descrever para estruturar um algoritmo destinado ao cálculo da área de um triângulo, conhecidos o comprimento da sua base e da sua altura. Sendo a área do triângulo calculada pelo semiproduto do comprimento da base e da altura, teremos de solicitar ao utilizador essa informação, efetuar o produto destes dois valores dividido por 2 e, por fim, apresentar o resultado. Algumas instruções destinadas à identificação do programa ou à organização da informação, entre outras, deverão ser acrescidas a estas operações. Poder-se-ia idealizar algo do género:
6
Noções Básicas de Programação com a TI-Nspire™ CX
ESCREVER (“Determinação da área de um triângulo”) ESCREVER (“Introduza a medida da base: ”) LER base
ESCREVER (“Introduza a medida da altura: ”) LER altura
area base x altura/26 ESCREVER (“A área do triângulo é”; area )
APLICAÇÃO 1 Elabore um algoritmo para a determinação das raízes de um polinómio de segundo grau, sendo pedidos ao utilizador os coeficientes do mesmo. (RESOLUÇÃO EM ANEXO)
APLICAÇÃO 2 Elabore um algoritmo para a determinação da média de idades de um determinado número de indivíduos, sendo pedidos ao utilizador o número de indivíduos e as respetivas idades. (RESOLUÇÃO EM ANEXO)
1.2 Programação com a TI-Nspire™ CX A utilização da unidade portátil TI-NspireTM CX para a elaboração de programas de computador é extremamente simples, permitindo a construção de programas de diferentes graus de complexidade. Esta calculadora gráfica possibilita ao utilizador, por um lado, automatizar procedimentos utilizados na resolução de diversos problemas em contexto real e, por outro, desenvolver competências que permitem uma sólida abordagem à iniciação da programação, facilmente transponíveis para linguagens e sistemas de programação mais complexos.
© FCA
6
De forma a evitar eventuais problemas de compatibilidade de programas escritos em português com máquinas pensadas para outros países, é boa prática evitar o uso de caracteres não universais, como acentos ou cedilhas, nas linhas de código. Excetua-se texto colocado entre aspas, que não é descodificado pelo programa, sendo impresso tal como foi introduzido. Por esta razão, a variável area foi escrita sem acento, mas no descritivo entre aspas o termo aparece com acento (área). 7
ALGORITMIA E PROGRAMAÇÃO COM A TI-NSPIRE™ CX
EXEMPLO 1.1
Modo de edição de programas
Para realizar o nosso primeiro programa, vamos tomar como base o algoritmo desenvolvido na secção 1.1.5 para a determinação da área de um triângulo. Para iniciar a edição de um novo programa, a partir do ecrã inicial da unidade portátil TI-NspireTM CX (acessível pressionando a tecla (ON), devemos escolher sucessivamente as opções (Novo), (Adicionar Editor de Programas) e (Novo), tal como ilustrado nas Figuras 1.1 e 1.2.
Figura 1.1 – Ecrã principal da unidade portátil TI-NspireTM CX
Figura 1.2 – Adicionar editor de programas
Realizando estes passos, surge uma caixa de diálogo para a introdução do nome do programa7 (neste caso, poderemos introduzir area), bastando selecionar de seguida com o cursor OK ou premir (Figura 1.3)8.
Figura 1.3 – Nome do programa
7
A partir do qual poderemos, a posteriori, solicitar a sua execução.
8
Para alternar rapidamente entre os vários campos de uma caixa de diálogo (neste caso, alternando entre Nome, Tipo, Acesso à biblioteca, OK e Cancelar), basta premir sucessivamente a tecla . 8
Noções Básicas de Programação com a TI-Nspire™ CX
Automaticamente é criada uma página de edição de programas, iniciada pela linha Prgm e finalizada pela linha EndPrgm, entre as quais iremos inserir as linhas de código correspondentes ao nosso algoritmo (Figura 1.4).
EXEMPLO 1.2
Comandos Disp e Request (entrada e saída de dados)
Passemos, então, à codificação do algoritmo. Comecemos por pedir ao sistema a saída de informação escrita (por exemplo, o título do programa: “Determinação da área do triângulo”), para a qual utilizaremos a função Disp, acessível na opção | | (Figura 1.6).
Figura 1.6 – Função Disp
Após surgir no ecrã o comando Disp, deve introduzir-se entre aspas9 o texto que pretendemos ver impresso no ecrã (neste caso, “Determinação da área do triângulo “), pressionando de seguida a tecla . O resultado deverá ser semelhante ao da Figura 1.7.
© FCA
Repare-se que a variável utilizada como contador pode ser utilizada para outros propósitos no programa, por exemplo, para apresentar o respetivo número da iteração, como exemplificado na Figura 1.18.
9
Para a introdução de aspas premir
|
. 9
ALGORITMIA E PROGRAMAÇÃO COM A TI-NSPIRE™ CX
Figura 1.18 – Ciclo For…EndFor (programa e output-2)
EXEMPLO 1.4
Utilização do ciclo If…Then…Else…EndIf (condições)
A utilização do ciclo If…Then…Else[If]…EndIf permite a realização de um conjunto alternativo de instruções, dependendo do cumprimento ou não de determinadas condições. A sintaxe deste ciclo pressupõe a indicação de uma condição (introduzida entre os termos If e Then), sendo introduzidas nas linhas seguintes as operações a realizar, se a condição for satisfeita. Caso a condição não se verifique, o programa passa para a linha Else (ou ElseIf, se quisermos definir condições alternativas adicionais), acabando com a expressão EndIf, tal como se exemplifica de seguida: If condição1 Then Instrução 1 Instrução 2
Instrução n
ElseIf condição 2 Then Instrução 1 Instrução 2
Instrução n
Else Then
Instrução 1 Instrução 2
Instrução n
EndIf
10
Noções Básicas de Programação com a TI-Nspire™ CX
Considere que pretende converter uma escala quantitativa de classificações numa escala qualitativa, de acordo com a informação da Tabela 1.1. Classificação quantitativa
Menção qualitativa
[0; 20[
Mau
[20; 50[
Reduzido
[50; 75[
Médio
[75; 90[
Elevado
[90; 100]
Excelente
Tabela 1.1 – Correspondência de classificações
EXEMPLO 1.5
odificação do algoritmo da APLICAÇÃO 2 C (média de idades)
Passemos agora à codificação de um programa que mobiliza vários dos comandos já apresentados. A Figura 1.25 apresenta uma proposta de codificação do programa correspondente ao algoritmo da APLICAÇÃO 2 (determinação da média de idades de um conjunto de pessoas) e a Figura 1.26, a visualização correspondente à execução do programa para um conjunto de quatro pessoas. Um procedimento que pode ajudar, de forma substancial, um programador menos experiente a desenvolver os seus programas com um grau de funcionalidade significativamente mais complexo, sem o correspondente acréscimo em termos de dificuldade, consiste na utilização de partes de código já efetuadas e ao dispor do utilizador (por exemplo, no site da Texas Instruments Inc., em VER LIGAÇÂO SITE!!!!). Desta forma, utilizando a função “copiar-colar”, bastam apenas algumas adaptações para que o código se ajuste a cada caso.
© FCA
Sugerimos que a aplicação seguinte seja realizada partindo do programa menus, adaptando a informação apresentada (por exemplo, o número de opções e a designação de cada opção) e “copiando–colando” a posteriori os extratos de código correspondentes às ações pretendidas.
11
ALGORITMIA E PROGRAMAÇÃO COM A TI-NSPIRE™ CX
APLICAÇÃO 5 Utilize o código seguinte, juntamente com os programas desenvolvidos anteriormente, para escrever um programa que, mediante a opção do utilizador, permita determinar a área de um triângulo ou as raízes de uma equação de segundo grau. (RESOLUÇÃO EM ANEXO)
Define menus() Prgm
© Início do menu
Para tornar o código do programa mais legível para quem o analisa, é conveniente acrescentar algumas linhas de notas, que serão ignoradas aquando da sua execução. Para isso, selecione as opções | (ações) | (inserir comentário), escrevendo a nota a seguir ao símbolo ©.
Lbl menu
O comando Lbl permite criar um ponto de referência para transferir a execução do programa. Em qualquer zona do programa, o comando Goto menu (neste caso) faz com que a execução do programa regresse a esse ponto, continuando a partir daí.
© Limpeza do ecrã da calculadora For n,1,8 Disp “ “ EndFor
© Opções do menu, visíveis ao utilizador Disp “1. Opção 1” Disp “2. Opção 2”
Permite “limpar” do ecrã da calculadora a informação de execuções anteriores, escrevendo oito linhas em branco.
Disp “3. Opção 3” Disp “4. Opção 4” Disp “5. Sair”
Disp “Escolha a opção pretendida “ Captura da tecla pressionada, que, neste caso, será armazenada na variável tecla. O © Captura da tecla pressionada comando getKey(1) pode ser digitado diretatecla:= getKey(1) mente na calculadora ou acedido a partir de | (Entrada/Saída) | (GetKey). © Execução da opção escolhida If tecla = “1” Then
Disp “Selecionou a opção 1.”
Text “Prima ENTER para continuar” Goto menu
ElseIf tecla = “2” Then
Disp “Selecionou a opção 2.”
Text “Prima ENTER para continuar” Goto menu
12
De acordo com a tecla pressionada, a execução transfere-se para a secção correspondente da estrutura de controlo If... ElseIf...EndIf. Inserir em cada zona as linhas de código correspondentes a cada opção.
Noções Básicas de Programação com a TI-Nspire™ CX
ElseIf tecla = “3” Then
Disp “Selecionou a opção 3.”
Inserir em cada zona as linhas de código correspondentes a cada opção.
Text “Prima ENTER para continuar” Goto menu
ElseIf tecla = “4” Then
Disp “Selecionou a opção 4.”
Text “Prima ENTER para continuar” Goto menu
ElseIf tecla = “5” Then
Após concluídas as instruções correspondentes a cada opção, o programa volta à linha definida acima pelo comando Lbl (neste caso, ao menu inicial).
Disp “Selecionou a opção 5.”
Text “Prima ENTER sair do programa”
EndIf
EndPrgm
1.1.6.1 Exemplos de algoritmos Neste capítulo apresentámos os fundamentos da algoritmia: • Ped quis et ommos cuptatiante voloremquo tem. Hariam voluptatur acest, etures erciisqui blatemp eriaecus dolupta quist, sustiis sam ut que ex explitis moditint veliquatibus debit velest por simolup. • Ped quis et ommos cuptatiante voloremquo tem. • Ped quis et ommos cuptatiante voloremquo tem. Hariam voluptatur acest, etures erciisqui blatemp eriaecus dolupta quist. Neste capítulo apresentámos os fundamentos da algoritmia: 1. Ped quis et ommos cuptatiante voloremquo tem. Hariam voluptatur acest, etures erciisqui blatemp eriaecus dolupta quist, sustiis sam ut que ex explitis moditint veliquatibus debit velest por simolup. 2. Ped quis et ommos cuptatiante voloremquo tem.
© FCA
3. Ped quis et ommos cuptatiante voloremquo tem. Hariam voluptatur acest, etures erciisqui blatemp eriaecus dolupta quist.
13
ALGORITMIA E PROGRAMAÇÃO COM A TI-NSPIRE™ CX
ANEXOS APLICAÇÃO 2 – Algoritmo determinação média de idades ESCREVER (“Determinação da média de idades de um conjunto de pessoas”) ESCREVER (“Introduza o número de pessoas: “) LER npessoas
somaidades 0
19
PARA contador = 1 ATÉ npessoas FAZER
ESCREVER (“Introduza a idade da pessoa “, contador) LER idade
somaidades somaidades + idade
FIMPARA
mediaidade somaidades/np
ESCREVER (“A média de idades das pessoas analisadas é “, mediaidade)
APLICAÇÃO 3 – Programar com a TI-NspireTM CX 1. A partir do ecrã inicial da unidade portátil TI-NspireTM CX (acessível pressionando a tecla , premir sucessivamente as teclas (Novo) | (Adicionar Editor de Programas) | (Novo) (Figuras 1.27 e 1.28).
Figura 1.27 – Ecrã principal da unidade portátil TI-NspireTM CX
Figura 1.28 – Adicionar editor de programas
2. Introduzir o nome do programa e selecionar com o cursor OK ou premir (Figura 1.29)10.
Para alternar rapidamente entre os vários campos de uma caixa de diálogo (neste caso, alternando entre os campos Nome, Tipo, Acesso à biblioteca, OK e Cancelar basta premir sucessivamente tecla .
10
14