Sunday 2 July 2017

Opções De Javascript Leitura Como Binário


ReadAsBinaryString diz que os dados devem ser representados como uma string binária. Onde: cada byte é representado por um número inteiro no intervalo 0..255. O JavaScript originalmente não possuía um tipo binário (até o suporte do WebGL da ECMAScript 5 da matriz digitada (detalhes abaixo) - foi substituído pelo ArrayBuffer do ECMAScript 2015) e, portanto, eles foram com um String com a garantia de que nenhum caractere armazenado na String seria Fora do intervalo 0..255. (Eles poderiam ter ido com uma matriz de Números em vez disso, mas eles talvez não fossem grandes, as cordas são mais eficientes em memória do que grandes matrizes de Números, pois os Números são de ponto flutuante.) Se você estiver lendo um arquivo que é principalmente texto em um script ocidental ( Principalmente inglês, por exemplo), então essa seqüência vai se parecer muito com texto. Se você ler um arquivo com caracteres Unicode nele, você deve notar uma diferença, uma vez que as strings JavaScript são UTF-16 (detalhes abaixo) e, portanto, alguns caracteres terão valores acima de 255, enquanto uma string binária de acordo com a especificação da API do Arquivo não teria Quaisquer valores acima de 255 (você tem dois caracteres individuais para os dois bytes do ponto de código Unicode). Se você estiver lendo um arquivo que não é texto (uma imagem, talvez), você ainda provavelmente obterá um resultado muito semelhante entre readAsText e readAsBinaryString. Mas com readAsBinaryString você sabe que não haverá qualquer tentativa de interpretar as seqüências de vários bytes como caracteres. Você não sabe se você usa readAsText. Porque readAsText usará uma determinação de codificação para tentar descobrir o que é a codificação de arquivos e depois mapeá-lo para as seqüências UTF-16 JavaScripts. Você pode ver o efeito se você criar um arquivo e armazená-lo em algo diferente de ASCII ou UTF-8. (No Windows, você pode fazer isso por meio do Bloco de notas, como Salvar como um menu suspenso de codificação com o Unicode, com o qual, olhando os dados, eles parecem significar UTF-16 Estou certo de que o Mac OS e os editores do nix têm uma característica similar.) Heres Uma página que despeja o resultado da leitura de um arquivo nas duas formas: se eu usar isso com um arquivo Testing 1 2 3 armazenado no UTF-16, aqui estão os resultados que recebo: como você pode ver, readAsText interpretou os personagens e então eu recebi 13 (o comprimento do Testing 1 2 3) e readAsBinaryString não conseguiu, e eu consegui 28 (o BOM de dois bytes mais dois bytes para cada personagem). XMLHttpRequest. response com responseType arraybuffer é suportado em HTML 5. As cadeias de JavaScript são UTF-16 pode parecer uma declaração estranha e não apenas Unicode No, uma string de JavaScript é uma série de unidades de código UTF-16, você vê pares de substituição como dois JavaScript individuais Mesmo que, de fato, o par substituto como um todo é apenas um personagem. Veja o link para obter detalhes. DigitalFresh: a string é o dado binário. Como você comentou, publiquei um exemplo que pode ajudar. O JavaScript não possui um tipo quotbinaryquot e, portanto, eles foram com um String com a garantia de que nenhum caractere armazenado na string ficaria fora do intervalo 0..255. (Eles poderiam ter ido com uma série de números, em vez disso, mas eles não tinham 39). O exemplo mostra como obter o valor bruto de um quotcharacterquot da string. Ndash T. J. Crowder 30 de junho 10 às 5:09 morpheus: porque essas coisas são assíncronas, não pode extrair exceções que você precisa olhar para a interface para ver se existe alguma maneira assíncrona de relatar erros. E, de fato, o FileReader está ativado para isso. Quando você usa um arquivo: 4747 URL, o domínio do documento é nulo, o que tende a fechá-lo de muitas coisas (eu não sei os detalhes, eu nunca o faço), especialmente. Quando o SOP entra nisso. Tenho certeza de que ele é até o navegador, pelo menos por enquanto, como a parte de segurança da especificação ainda é provisória: w3.orgTRFileAPIsecurity-discussão, mas eu não esperaria que ele funcionasse. Ndash T. J. Crowder Nov 5 10 às 18:12 Muito obrigado TJCrowder - Eu exclui meu comentário para evitar que outros sejam enganados pela minha simplificação, e obrigado por publicar os detalhes - Estou certo de que outros acharão seus comentários muito mais úteis (e lendo o O artigo é realmente uma boa ideia, como você diz, se alguém estiver atrapalhando nesta área). Ndash Brian M. Hunt 30 de dezembro 14 em 14: 16 Como parte de uma série de artigos, discuto alguns dos desafios que enfrentei ao tentar construir um editor de ícones on-line gratuito HTML5 e JavaScript. Eu queria que os usuários pudessem abrir e editar arquivos de ícones existentes no meu editor de ícones. Como os arquivos de ícones podem conter vários quadros, eu precisava acessar esses quadros individuais para que eles pudessem ser exibidos e estar disponíveis para editar para o usuário. O número, tamanho e localização dos quadros contidos em um ícone são todos armazenados no cabeçalho do ícone. O cabeçalho do ícone é um bytes de coleção localizado no início de um arquivo de ícone, então eu precisava ler os dados binários contidos no arquivo. Agora podemos ler arquivos facilmente no navegador sem ter que enviar dados de volta para um servidor. Nesta edição eu mostro como você pode ler dados binários de um arquivo local no navegador usando a API de Arquivo HTML5. Para começar, iriam adicionar um elemento de entrada e definir o atributo de tipo para o arquivo, então, em um bloco de script, vamos processar as entradas do arquivo no evento de troca. lt corpo gt160160160160160160160160160160160160160160160160160160160160160160160160160160160160 160160160160 lt tipo id entrada quotbrowseOpenquot quotfilequot gt 160160160160 lt script type quottextjavascriptquot gt 160160160160160160160160 var FileInput document. getElementById (quotbrowseOpenquot) 160160160160160160160160 função fileInput. onchange () 160160160160160160160160160160160160 código para lidar com onchange evento vai aqui 160160160160 160160160160 160160160160 lt gt roteiro gt corpo lt Agora precisamos adicionar o código para lidar com o evento onchange. Aqui, vamos criar um objeto FileReader. Usaremos o método readAsBinaryString do objeto FileReader, que nos dará os dados binários brutos. Podemos passar um objeto File para o readAsBinaryString se quisermos ler o arquivo inteiro ou podemos passar um objeto Blob se apenas quisermos ler uma determinada seção de um arquivo. Neste exemplo, vamos passar um objeto File para ler o arquivo inteiro. Nós também precisamos lidar com o evento onloadend do FileReader como os dados que lida com readAsBinaryString só está disponível para usar uma vez todo o arquivo ou blob foi lido pelo FileReader. Nosso código no manipulador de eventos onchange agora parece assim. 160160160160160160160160 var fr nova FileReader () 160160160160160160160160 função fr. onloadend () 160160160160160160160160160160160160 código para lidar com onloadend evento 160160160160 160160160160 160160160160160160160160 fr. readAsBinaryString (este. files 0) No manipulador de eventos onloadend podemos acessar os dados que acaba de ser lido através do FileReaders Atributo de resultado. Podemos então loop através do atributo de resultado e chamar o método charCodeAt para retornar um valor inteiro de cada byte. Neste exemplo, eu vou converter o byte para uma representação de seqüência hexadecimal usando toString (16), crie uma string longa e, em seguida, exiba a string para o usuário. Este é o exemplo completo de trabalho. lt DOCTYPE HTML cabeça gt lt html gt lt gt título 160160160160 lt gtReading dados binários com a API de arquivos e JavaScriptlt título gt cabeça lt gt lt gt160160160160160160160160160160160160160160160160160160160160160160160160160160160160 corpo 160160160160 lt tipo id entrada quotbrowseOpenquot quotfilequot gt 160160160160 lt script type quottextjavascriptquot gt 160160160160160160160160 var FileInput document. getElementById (quotbrowseOpenquot) 160160160160160160160160 função fileInput. onchange () 160160160160160160160160160160160160 var fr FileReader novo () 160160160160160160160160160160160160 função fr. onloadend () 160160160160160160160160160160160160160160160160 var resultado este. result 160160160160160160160160160160160160160160160160 var hex quotquot 160160160160160160160160160160160160160160160160 para (var i 0 i lt esta. result. length i) 160160160160160160160160160160160160160160160160160160160160 Var byteStr result. charCodeAt (i).toString (16) 160160160160160160160160160160160 160160160160160160160160160 se (byteStr. length lt 2) 160160160160160160160160160160160160160160160160160160160160160160160160 byteStr quot0quot byteStr 160160160160160160160160160160160160160160160160160160160160 160160160160160160160160160160160160160160160160160160160160 hex quot quot byteStr 160160160160160160160160160160160160160160160160 160160160160160160160160160160160160160160160160 alerta (hex) 160160160160160160160160160160160160 160160160160160160160160160160160160 fr. readAsBinaryString (este. files 0) 160160160160160160160160 160160160160 lt gt corpo do script gt lt lt html gtjDataView fornece um padrão Maneira de ler arquivos binários em todos os navegadores. Ele segue a especificação DataView e até o estende para um uso mais prático. Explicação Existem três maneiras de ler um arquivo binário a partir do navegador. O primeiro é baixar o arquivo através do XHR com charsetx-user-defined. Você obtém o arquivo como um String. E você precisa reescrever todas as funções de decodificação (getUint16, getFloat32.). Todos os navegadores suportam isso. Então os navegadores que implementaram o WebGL também adicionaram ArrayBuffers. É um buffer simples que pode ser lido com visualizações chamadas TypedArrays (Int32Array, Float64Array). Você pode usá-los para decodificar o arquivo, mas isso não é muito útil. Tem grande inconveniente, não pode ler dados não alinhados. É suportado pelo Firefox 4 e pelo Chrome 7. Uma nova revisão da especificação adicionou DataViews. É uma visão em torno de seu buffer que pode ler tipos de dados arbitrários diretamente através de funções: getUint32, getFloat64. Somente o Chrome 9 o suporta. JDataView fornece a API DataView para todos os navegadores usando a melhor opção disponível entre Strings, TypedArrays e DataViews. Veja as especificações para uma API detalhada. Khronos. orgregistrywebgldocspecTypedArray-spec. html6. Qualquer código escrito para DataView funcionará com jDataView (exceto se ele escrever algo). Construtor novo jDataView (buffer, offset, comprimento). O buffer pode ser uma String ou uma API de especificação ArrayBuffer O wrapper satisfaz todos os getters de especificações. GetInt8 (byteOffset) getUint8 (byteOffset) getUint8 (byteOffset) getUint8 (byteOffset, littleEndian) getUint16 (byteOffset, littleEndian) getInt32 (byteOffset, littleEndian) getUint32 (byteOffset, littleEndian) getFloat32 (byteOffset, littleEndian) getFloat64 (byteOffset, littleEndian) Especificação estendida O parâmetro byteOffset é Agora opcional. Se você omiti-lo, ele lerá logo após o último deslocamento de leitura. Você pode interagir com o ponteiro interno com essas duas funções. Procurar (byteOffset): move o ponteiro interno para a posição tell (): Retorna a posição atual Adição de utilitários getChar e getString. Adição de createBuffer, um utilitário para criar facilmente buffers com o último tipo de armazenamento disponível (String ou ArrayBuffer). Falhas Somente a API de leitura está sendo embrulhada, jDataView não fornece nenhum método definido. A implementação Float64 em strings não possui precisão total. Primeiro precisamos de um arquivo. Ou você obtém isso através do XHR ou use o utilitário createBuffer. Bits, Bytes e Bases: Escreva um JavaScript BinaryDecimalHexadecimal Converter Tutorial rápido sobre notação exponencial (você pode ignorar isso se você já o conhece). A notação exponencial é uma forma compacta de expressar múltiplos de um número. Por exemplo, como você viu na tabela: 10 3 10times10times10 1000 Uma declaração equivalente em palavras é: Dez para o terceiro poder é igual a dez vezes dez vezes dez que também é igual a mil. O expoente (3, neste caso), conta quantas vezes multiplicar a base (10, neste caso). Qualquer número levantado para a 0ª potência é igual a 1. Isso é para números binários (base 2) é semelhante, mas agora há apenas dois dígitos disponíveis (0 e 1), e os valores de lugar estão aumentando os poderes de dois. A tabela seguinte mostra o mesmo número (3.897) na representação binária. Obviamente, é preciso muito mais dígitos do que na base de dez Representação Binária de 3.897 é: 1111 0011 1001 Verifique-se por si mesmo e certifique-se de que tudo acrescenta Bits e Bytes Cada dígito binário é chamado um pouco. Use a tabela acima para ver quantos bits requer para representar 3.897. Vá em frente, aguarde bem. Isso é direito, doze bits. O bit mais certo (o único bit) é o bit menos significativo e o bit mais à esquerda (os dois mil e quarenta e oito bits) é o bit mais significativo. Uma vez que é fácil perder o seu lugar ao ler uma longa série de 0s e 1s, os números binários são frequentemente exibidos em grupos de 4 bits, como este: 1111 0011 1001. Dois desses grupos de 4 bits (oito bits no total) fazem um Byte. Qual é a unidade básica para medir o tamanho de uma memória digital ou dispositivo de armazenamento. O que você pode armazenar em um byte Pense em quantos números diferentes podem ser codificados com um byte. (Pode ajudar a fazer uma analogia com os números decimais primeiro: quantos números diferentes você pode codificar com 2 dígitos quantos com 3 dígitos) Um kilobyte (kB abreviado) não é 1000 bytes, como você pode pensar se conhece os prefixos da métrica . Como este é o mundo digital, tudo está em poder de 2, então um kilobyte é de 1024 bytes (2 10 bytes). Da mesma forma, um megabyte (MB) é 1024 x 1024 bytes (1.048.576 bytes 2 20 bytes). Hexadecimal: Base 16 Os números binários são bons para computadores, mas não são particularmente úteis para as pessoas usar. No entanto, quando você está programando uma máquina que funciona com números binários, às vezes é útil trabalhar com números representados como poderes de 2 em vez de potências de 10. A notação hexadecimal (base 16) é freqüentemente usada por esse motivo. Como seria de esperar, em hexadecimal existem 16 dígitos, e cada dígito representa uma potência de 16. Usamos dígitos decimais para 0ndash9 e as primeiras seis letras do alfabeto, AndashF, para os dígitos hexadecimais correspondentes aos números decimais 10ndash15. A tabela abaixo mostra os primeiros 16 números (começando com zero) em notação binária, hexadecimal e decimal. Números Binário, Hexadecimal e Decimal Desde 16 2 4. Não é surpreendente ver que um dígito hexadecimal corresponde a 4 bits. Você pode ver o que a representação hexadecimal para 3.897 seria Outro fato interessante que você pode ter notado é que o bit menos significativo da representação binária indica se o número é ímpar ou par. Os algoritmos de código de correção de erros para transmissão e recebimento de dados (usados ​​em tudo, desde transmissões de satélite da NASA até telefones celulares para leitores de CD) geralmente fazem uso desta propriedade. Uma maneira fácil de ter seus elementos de entrada alinhados ordenadamente é usar um elemento HTML ltTABLEgt (um exemplo é mostrado abaixo). A tabela possui duas colunas. Cada entrada é uma linha separada na tabela. Os rótulos estão na primeira coluna e os campos de entrada estão na segunda coluna. Os rótulos estão alinhados na margem direita da coluna e os campos de entrada estão alinhados na margem esquerda da coluna. O código HTML para esta tabela de exemplo também é mostrado (abaixo da tabela em si). ltFORM METHODpostgt ltTABLE BORDER1 ALIGNCENTER CELLPADDING10gt ltTRgt ltTH COLSPAN2gtBinaryDecimalHexadecimal conversor de interface ExampleltTHgt ltTRgt ltTRgt ltTD ALIGNRIGHTgtltBgtBinary: ltBgtltTDgt ltTD ALIGNLEFTgtltINPUT NAMEbin Value0 somente de leitura onChangeConvertBin (forma) SIZE10gtltINPUTgtltTDgt ltTRgt ltTRgt ltTD ALIGNRIGHTgtltBgtDecimal: ltBgtltTDgt ltTD ALIGHLEFTgtltINPUT NAMEdec Value0 somente de leitura onChangeConvertDec (forma) SIZE10gtltINPUTgtltTDgt ltTRgt ltTRgt ltTD ALIGNRIGHTgtltBgtHexadecimal: ltBgtltTDgt LtTD ALIGNLEFTgtltINPUT NAMEhex VALUE0 readonly onChangeConvertHex (formulário) SIZE10gtltINPUTgtltTdgt ltTRgt ltTABLEgt ltFORMgt Notas sobre o código da tabela HTML. Observe que o tamanho de cada elemento de entrada na tabela é o mesmo. Você terá que descobrir os tamanhos apropriados para seus elementos de entrada para que eles acomodem o mesmo intervalo de valores (lembre-se de que os números binários geralmente requerem mais dígitos). Observe que cada um dos elementos de entrada usa o evento onChange para chamar uma função JavaScript. Assim, quando o usuário muda um valor, esta função é chamada para atualizar os valores para as outras duas representações. Nós tentamos apenas cobrir alguns pontos-chave para que você comece, nem todos os detalhes sobre como a tabela é montada. Há uma referência na Bibliografia com informações detalhadas sobre como escrever tabelas HTML. Ao usar essa referência, você deve ser capaz de responder todas as questões que ainda você tiver sobre a tabela. A primeira entrada na Bibliografia é uma excelente referência para informações sobre como escrever um algoritmo de conversão de base. Combinado com o material disponível aqui, você deve ser capaz de montar um conversor binário decimais. By the way, então você pode verificar suas respostas às perguntas anteriores na Introdução: Um byte pode codificar 256 (2 8) valores exclusivos. A representação hexadecimal para 3.897 é F39. Cada dígito hexadecimal corresponde a 4 bits da representação binária: 1111 0011 1001. Termos e conceitos Para fazer este projeto, você deve entender os seguintes termos e conceitos (pesquisa de fundo para preencher quaisquer lacunas em seu conhecimento): binário (base 2 ), Decimal (base 10), hexadecimal (base 16), bit, byte, kilobyte (kB), megabtye (MB), radix (base numérica). Conceitos básicos de HTML: comece tags e tags de fim, comentários, a seção ltHEADgt, a seção ltSCRIPTgt, a seção ltBODYgt, a seção ltFORMgt, a etiqueta ltINPUTgt, a etiqueta ltTABLEgt, para alinhar seu s de forma perfeita. Conceitos de JavaScript: funções, variáveis, objetos, propriedades, métodos, eventos, arrays. Conceitos gerais de programação: palavras reservadas, instruções de controle (por exemplo, se. Else declarações, para e while loops) operadores: operadores aritméticos: mais, menos, vezes, divisão, módulo (. -. ...), operadores de atribuição: e. . . -. . . Operadores de comparação: e. Lt. Gt. Lt. Gt. . Operadores lógicos: AND, OR e NOT, (ampamp ...). Usando a representação binária de inteiros descritos na Introdução, quantos inteiros únicos podem ser representados com 8 bits Com 12 bits Com n bits, onde n é um inteiro positivo Usando a representação hexadecimal de inteiros descritos na Introdução, quantos inteiros únicos podem Ser representado com 2 dígitos hexadecimais Com 3 dígitos hexadecimais Com n dígitos hexadecimais, onde n é um inteiro positivo Bibliografia Explicação de uma implementação JavaScript da conversão base: A. Bogomolny. (N. d.). Implementação de Algoritmos de Conversão Base de Matemática Interativa Miscelânea e Puzzles. Recuperado em 17 de março de 2014, de cut-the-knot. orgrecurrenceconversion. shtml Você pode encontrar um tutorial JavaScript passo a passo no link abaixo. Depois de estudar o tutorial, você deve ser capaz de responder a todas as perguntas listadas acima e você estará pronto para escrever uma calculadora simples. Webteacher Software. (2006). Tutorial de JavaScript para o Total Non-Programmer. Webteacher Software, LLC. Recuperado 6 de junho de 2006, de webteacherjavascriptindex. html Introdução à programação por Matt Gemmell descreve o que a programação realmente é: Gemmell, M. (2007). Introdução à programação. Deans Director Tutorials amp Resources. Retirado em 14 de março de 2014, de deansdirectortutorialsLingoIntroductionToProgramming. pdf HTML Forms reference: W3C. (1999). Formulários em documentos HTML, especificação HTML 4.01. World Wide Web Consortium: Instituto de Tecnologia de Massachusetts, Instituto Nacional de Pesquisa em Informática e Automática, Universidade de Keio. Retirado em 6 de junho de 2006, de w3.orgTRREC-html40interactforms. html Referência de tabelas HTML: W3C. (1999). Tabelas em documentos HTML. World Wide Web Consortium: Instituto de Tecnologia de Massachusetts, Instituto Nacional de Pesquisa em Informática e Automática, Universidade de Keio. Retirado 6 de junho de 2006, de w3.orgTRREC-html40structtables. html Uma lista de palavras reservadas em JavaScript (você não pode usar essas palavras para nomes de funções ou variáveis ​​em seu programa, porque são reservados para a própria linguagem de programação): Kit JavaScript. (2006). Palavras reservadas JavaScript. Retirado em 6 de junho de 2006, de JavaScriptkitjsrefreserved. shtml Uma referência de JavaScript: Mozilla Developer Network e Contribuintes Individuais. (2013, 14 de dezembro). Referência de JavaScript. Retirado 14 de março de 2014, de developer. mozilla. orgen-USdocsWebJavaScriptReference Se você se interessar e começar a fazer muito desenvolvimento web, você pode querer usar um editor de texto que seja um pouco mais sofisticado do que o Notepad. Um editor projetado para desenvolvimento e programação web pode ajudar na formatação para que seu código seja mais legível, mas ainda produz arquivos de texto simples. Esse tipo de editor também pode preencher detalhes de codificação HTML específicos da web e realçar a sintaxe (por exemplo, codificação automática de cores do HTML), o que pode ajudá-lo a encontrar erros. Uma opção é o CoffeeCup HTML Editor, que está disponível em versões gratuitas e totalmente apresentadas para Microsoft Windows e Apple OS X. Materiais e equipamentos Computador com navegador da Web (por exemplo, Internet Explorer, Firefox) Programa de edição de texto, como o Bloco de notas, alternativamente. Experimente um editor HTML como CoffeeCup se desejar ajuda adicional com formatação e sintaxe. As opções incluem versões gratuitas e totalmente apresentadas para o Microsoft Windows e o Apple OS X. Procedimento Experimental Usando o que você aprendeu sobre a representação de números inteiros em diferentes bases e programação em JavaScript, crie um conversor binário decimais. O programa deve ter campos de entrada separados para cada tipo de número. Lembre-se de que as representações binárias geralmente usam mais dígitos do que representações decimais ou hexadecimais, então ajuste os tamanhos de seus campos de entrada de acordo. Use os campos de entrada no evento Cambiar para que, quando o usuário insira um número em um dos campos, os outros dois são atualizados com o novo número, convertidos para a base apropriada. Existem várias sub-tarefas aqui. Leve as subtarefas uma de cada vez e gradualmente crie as capacidades do seu programa. Verifique se o código de cada subtarefa está funcionando corretamente antes de passar para a próxima subtração. Teste seu programa, verificando as conversões de cada tipo de entrada. Aqui estão algumas dicas de programação geralmente aplicáveis ​​a ter em mente à medida que você começou com este projeto. Planeje seu trabalho. Pensamento metódico através de todas as etapas para resolver seu problema de programação. Tente distribuir as tarefas em funções curtas e gerenciáveis. Pense sobre a interface para cada função: quais argumentos precisam ser passados ​​para a função para que ele possa fazer seu trabalho. Use uma nomeação cuidadosa, boa formatação e comentários descritivos para tornar seu código compreensível. Dê suas funções e nomes de variáveis ​​que refletem seu propósito no programa. Uma boa escolha de nomes torna o código mais legível. Descarte as declarações no corpo de uma função para que seja claro onde o código da função começa e termina. Descarte as declarações seguindo uma instrução if, else, for, ou while control. Dessa forma, você pode ver facilmente quais declarações são executadas para um determinado ramo ou loop em seu código. Os comentários descritivos são como notas para você. Muitas vezes na programação, você terá um problema semelhante ao que você já resolveu antes. Se o seu código for bem comentado, tornará mais fácil voltar e reutilizar peças dele mais tarde. Seus comentários irão ajudá-lo a lembrar como você resolveu o problema anterior. Trabalhe de forma incremental. Quando você está criando um programa, é quase inevitável que ao longo do caminho você também crie bugs. Os erros são erros no seu código que fazem com que seu programa se comporte de maneiras que você não pretendia, ou que ele parasse de funcionar completamente. Quanto mais linhas de código, mais chances de erros. Então, especialmente quando você começa, é importante trabalhar de forma incremental. Faça apenas uma mudança de cada vez, certifique-se de que funciona como esperado e, em seguida, avance. Com JavaScript, isso é fácil de fazer. Para verificar o seu código, tudo que você precisa fazer é usar seu navegador da Web para abrir o arquivo HTML que contém seu código. Depois de fazer uma alteração no código com o seu editor de texto, basta salvar o arquivo e, em seguida, mude para o seu navegador e pressione o botão de recarregar a página para ver a mudança de ação. Teste para se certificar de que seu código funciona conforme o esperado. Se o seu código tiver pontos de derivação que dependam da entrada do usuário, certifique-se de testar cada um dos pontos de derivação possíveis para garantir que não haja surpresas. Além disso, é uma boa idéia fazer backup de seu arquivo de vez em quando com um nome diferente. Dessa forma, se algo está realmente errado e você não consegue descobrir, você não precisa começar de novo. Em vez disso, você pode voltar a uma versão anterior que funcionou e começar de novo. À medida que você ganha mais experiência com um ambiente de programação particular, você poderá escrever grandes partes do código ao mesmo tempo. Mesmo assim, é importante lembrar de testar cada nova seção de código para se certificar de que funciona como esperado antes de passar para a próxima peça. Ao adquirir o hábito de trabalhar de forma incremental, reduzirá a quantidade de tempo que você gastará identificando e corrigindo erros. Ao depurar, trabalhe metodicamente para isolar o problema. Nós dissemos-lhe acima que os erros são inevitáveis, então, como você os soluciona Bem, o primeiro passo é isolar o problema: qual linha fez com que o programa pare de funcionar como esperado Se você estiver seguindo a dica anterior e trabalhando de forma incremental, você pode ser Com certeza que o problema é com a linha que você acabou de escrever. Verifique primeiro erros de digitação. Um nome de função com erros ortográficos não será reconhecido. Em JavaScript, um nome de variável com erros ortográficos simplesmente cria uma nova variável. Este é um erro fácil de fazer, e pode ser difícil de encontrar. Evite usar palavras reservadas como nomes de variáveis ​​ou funções. Teste seu programa completamente. Você deve testar o programa de forma incremental enquanto você o escreve, mas você também deve testar o programa completo para se certificar de que ele se comporta conforme o esperado. Variações Adicione funções para verificar cada entrada para se certificar de que apenas os dígitos apropriados são inseridos. Use a função de alerta JavaScript () incorporada para exibir uma mensagem informando ao usuário qual é o problema e pedindo-lhes que digitem um número válido. Generalize seu conversor para manipular a base 2 na base 36 (quando o alfabeto ficar sem letras para mais dígitos). O conversor que você escreveu foi projetado para inteiros não assinados (os inteiros positivos mais zero). E quanto a números negativos Para um projeto mais avançado, pesquise para saber como números negativos são representados na notação binária e estender seu conversor para lidar com números negativos. E quanto a números racionais Para um projeto muito mais avançado, faça pesquisas para saber como os números de ponto flutuante são representados na notação binária e estendem seu conversor para lidar com esses números. Pergunte a um perito O Fórum Ask a Expert é destinado a ser um lugar onde os alunos podem encontrar respostas para questões científicas que não conseguiram encontrar usando outros recursos. Se você tiver dúvidas específicas sobre seu projeto de feira de ciência ou feira de ciências, nossa equipe de cientistas voluntários pode ajudar. Nossos especialistas não farão o trabalho para você, mas eles vão fazer sugestões, oferecer orientação e ajudá-lo a solucionar problemas. Links Relacionados

No comments:

Post a Comment