[Open Source] CLM-Codificador em Linguagem Matemática 0.1.1 - Projectos Descontinuados - Portugal-a-Programar
[Open Source] CLM-Codificador em Linguagem Matemática 0.1.1
September 3, 2005 in Projectos Descontinuados
Na sequencia desta duvida acerca de um programa pessoal resolvi tornar este codificador um projecto publico.
Este codificador converte caracteres de texto em linguagem matemática. Cada caracter tem direito a um código numérico específico. Cada código numérico é composto por 5 dígitos que variam entre 1 e 5.
Por exemplo queremos converter a palavra "olá" para código numérico. O output ao executar o codificador seria:
444553345512345
Aqui o código é relativamente fácil de ler porque é apenas uma palavra com 3 letras. Agora imaginem um texto inteiro com mais de 1000 caracteres....só um descodificador próprio é que poderia fazer a descodificação da forma numeral para os respectivos caracteres.
Podem consultar o código que escrevi naquele post.
Podem tambem fazer download do código, assim como do executável aqui:
São ficheiros muito pequenos ainda, versão 0.1, que necessitam de ajustes e não funcionam a 100%.
A própria linguagem matemática necessita tambem de ajustes, alem de que está muito primitiva ainda, na minha opinião.
A próxima versão do programa apresentará algumas melhorias em relação a este:
➔ Aperfeiçoamento do código;
➔ Introdução de novas funções para o programa;
➔ Melhoria da linguagem matemática.
hmm não está a traduzir o texto todo..
Pois como eu disse tem algumas limitações. Só traduz até um certo numero de caracteres, mas ainda tenho de perceber porque....
Tambem me aconteceu uma cena.
Escrevi o meu nome e apareceu tambem uma letra :?
Mas parece estar a andar. 😛
Uma letra? Isso é mais grave....que letra foi?
Agora tive a testar outra vex e ja percebi.
Escrevi a primeira letra do nome em Maiuscula. lol
O programa so traduz minusculas.
Pois é mais uma correcção a fazer.
Vou ter de criar uma forma para o código identificar as maiusculas para que depois o descodificador faça a distinção.
Tá porreiro sim senhor 😉 tive de compilar o code em linux mas correu na mesma 😉 qualquer dia aprendo c também lol 😛 tenho uma questão... ele ao codificar por exemplo 45455 (p) codifica para 45455 ou seja não toca nos números... não seria melhor também codificar isto ? porque pode vir a gerar má intrepretação do código a descodificar
Peço desculpa mas não compreendi a duvida. Ao codificar o "p" codifica para 45455 e disseste que não tocava nos numeros? :roll:
Eu avisei...😛
O que o quickfire quer dizer é se por acaso inserires um número por exemplo num texto que diga " a população de lisboa são 25040" pode dar buraco depois.....
Menos confuso e simples 😛 era isto que queria dizer 😉
Hmmm já percebi...vamos ter de criar regras para todos os caracteres vbmaster. Assim não vamos precisar de resolver este tipo de problemas. Até agora só criamos regras para as 26 letras do alfabeto...
P.S. Agora já dizes cof cof ne? 😉
Pah mas num texto uma minuscula não tem grande diferença duma maiúscula. Eu no meu estava a transformar aquilo logo tudo em minusculas....mas pronto, eu ainda nem consegui transformar o meu codigo em light code, well apreciated by the teachers 😛
E a cena de não retornar espaços no meu codigo também me irrita 😉
O meu está feito em c++:
quanto ao codigo fonte podem encontrar no thread enunciado pelo death no seu 1º post.
Outra cena, num codificador nunca se dá info's nenhumas:P senão o sistema é quebrado facilmente. Além disso os grandes codificadores usam outras funções mais dificeis como eu já vi em vb, em que uma letra em determinada circunstância, por exmeplo junto a um 'a' pode dar um determinado valor, mas junto a um 'b' já dá outro completamente diferente.
E não são grandes encriptadores mesmo assim.
É um começo...😉
Ya tudo isto é um começo para um projecto grande. A ver vamos....
Já estão a ser corrigidos os bugs da versão anterior. Já foi corrigido o aspecto de só suportar tradução até 10 caracteres (passou a suportar tradução até 500 mil 😛 ), foi corrigido o problema dos numeros (cada numero passou a ser representado por um código tambem, excepto o numero 0 que não está a resultar não percebi porque ainda).
Falta acertar esse pormenor do numero 0, criar as regras para as letras maiusculas, para mais caracteres e fazer uns acertos na disponibilização de memória do programa (alocação, libertação, etc), visto que durante certas operações na execução do programa existem certos riscos.
A próxima versão deverá estar pronta em breve e peço-vos que a testem.
essa de estragar um disco rígido ao executar um programa em c trancende-me :|
Se pudesses explicar 😛
Posso explicar é claro. Eu li isto num blog de programação durante uma pesquisa no Google.
A pessoa que usa o programa é a ultima pessoa em quem podes confiar a forma correcta de utilizar o programa. Pode ser uma pessoa estupida, preguiçosa ou com intenções maliciosas. Para complicar o problema, o teclado não produz valores total e prontamente úteis. Produz os chamados "keycodes". Os keycodes devem ser traduzidos e de facto são, na maioria dos casos. Ora, somente algumas dessas traduções representam realmente um valor numérico, que consequentemente, representa um caracter numérico que só depois é convertido.
Nem sempre resultam a 100% estas conversões. Por isso é que ás vezes existem caracteres inválidos. Ou seja, ao encontrar caracteres inválidos temos aqui um grande problema.
Quando utilizamos a função "gets" (como eu estava a utilizar no código anterior á versão final), apontamos a entrada num buffer e dizemos para recolher informação até que um sinal de finalização seja detectado.
E qual o tamanho do buffer que criaste? É uma coisa que normalmente não sabes. Ou seja, o teu buffer pode ser suficiente grande para alojar as vítimas todas do 11 de Setrmbro ou os sobreviventes ao Katrina? Duvido.
Agora ele pode muito bem ser gigantesco. Enquanto não for terminado o buffer é tipo tornado. Leva tudo á frente.Isto pode fazer com que o programa vá á vida. Sem um bom sistema operativo ou sem um bom gestor de memória, pode muito bem ser um adeus para o conteudo do disco rígido ou parte dele.
Mas existem alternativas á utilização do "gets" por exemplo. Basta que o programador se habitue a verificar toda a sua documentação. Basta que o programador procure e estude todas as suas alternativas. Certezas que uma função vai ter sucesso ou que vai funcionar a 100%? Nenhumas. Nenhuma função garante sucesso completo.
Mas podes-te livrar de muita chatice ao usar "fgets" em vez de "gets". Não me venham dizer que isto é utilizado só em FILE input. Aliás, se o disserem não perdem a razão. 😉
Mas então não estavamos a falar de entrada de dados pelo teclado? Sim é verdade. A entrada de dados pelo teclado é um Ficheiro. Em C, chamamos-lhe stdio.
Aqui fica a definição do fgets:
char *fgets (char *string, int n, FILE *stream );
fgets use <stdio.h> ANSI, Win 95, Win NT Compatibility
Each of these functions returns string. NULL is returned to indicate an error or an end-of-file condition. Use feof or ferror to determine whether an error occurred.
string -- Storage location for data
n -- Maximum number of characters to read
stream -- Pointer to FILE structure
The fgets function reads a string from the input stream argument and stores it in string. fgets reads characters from the current stream position to and including the first newline character, to the end of the stream, or until the number of characters read is equal to n – 1, whichever comes first. The result stored in string is appended with a null character. The newline character, if read, is included in the string.
Percebeste? Se não compreenderem façam as perguntas....
Está disponível para download a versão 0.1.1 do Codificador em Linguagem Matemática.
Aqui ficam os links para download do código-fonte e do executável:
Foram implementadas as seguintes melhorias no programa:
➔ Melhoria do código matemático com a inclusão de mais caracteres
➔ Possibilidade da leitura de maiusculas
➔ Possibilidade de leitura de um numero de palavras muito superior.
Espero opiniões e sugestões para próxima versão e acerca desta mesma versão.
Hum .. tá fixe ..
após introduzir uma palavra podia ter a opção para introduzir mais em vez de sair logo..
Sair só quando for pressionada uma determinada tecla ..
melhorar o aspecto..
mas isso já são coisas que não são indispensaveis mas que melhoram sempre um bocado o programa e tal ..
tal como os meus professores de programação dizem,um simples utilizador olha sempre ao aspecto,tendo isso influencia as vezes na sua opinião à cerca do programa,por vezes errada..
Tens razão...o aspecto é claro que poderia ser melhorada (com uma interface gráfica amigável é uma boa oportunidade para mexer no ncurses e noutras bibliotecas gráficas 😄 ) e essa opção de introduzir novamente outra palavra antes de sair tambem me parece indispensavel.
Agora, este programa de conversão pode ser aproveitado para muito mais coisas (ler caracteres de ficheiros de texto e convertê-los,etc.)..