• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

deathseeker25

[Open Source] CLM-Codificador em Linguagem Matemática 0.1.1

36 mensagens neste tópico

Boas,

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:

Código-fonte

Executável

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.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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....

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tambem me aconteceu uma cena.

Escrevi o meu nome e apareceu tambem uma letra :?

Mas parece estar a andar. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tambem me aconteceu uma cena.

Escrevi o meu nome e apareceu tambem uma letra :?

Mas parece estar a andar. :P

Uma letra? Isso é mais grave....que letra foi?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora tive a testar outra vex e ja percebi.

Escrevi a primeira letra do nome em Maiuscula. lol

O programa so traduz minusculas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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.

Cumps e obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tá porreiro sim senhor ;) tive de compilar o code em linux mas correu na mesma ;) qualquer dia aprendo c também lol :P 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Tá porreiro sim senhor ;) tive de compilar o code em linux mas correu na mesma ;) qualquer dia aprendo c também lol :P 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:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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.

Cumps e obrigado

cof cof cof

Eu avisei...:P

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.....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :P era isto que queria dizer ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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.

Cumps e obrigado

cof cof cof

Eu avisei...:P

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.....

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...

Cumps

P.S. Agora já dizes cof cof ne? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :P

E a cena de não retornar espaços no meu codigo também me irrita ;)

O meu está feito em c++:

Link

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...;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ya tudo isto é um começo para um projecto grande. A ver vamos....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

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 :P ), 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.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

essa de estragar um disco rígido ao executar um programa em c trancende-me :|

Se pudesses explicar :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
essa de estragar um disco rígido ao executar um programa em c trancende-me :|

Se pudesses explicar :P

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

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version

LIBCMT.LIB Multithread static library, retail version

MSVCRT.LIB Import library for MSVCRT.DLL, retail version

Return Value

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.

Parameters:

string -- Storage location for data

n -- Maximum number of characters to read

stream -- Pointer to FILE structure

Remarks

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....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

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:

Código-fonte

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.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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..

etc ..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
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..

etc ..

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 :D ) 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.)..

Por isso é que necessito de sugestões... :)

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
dava jeito também uma opção para copiar o texto codificado

É mais uma sugestão a adoptar.... :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

dá jeito para depois poderes passar o texto codificado a outra pessoa e ela descodificar depois mas já com outro programa

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
dá jeito para depois poderes passar o texto codificado a outra pessoa e ela descodificar depois mas já com outro programa

Exacto...tambem vou elaborar um descodificador. Mas isso é posteriormente. Por agora, vou concentrar-me em afinar e acrescentar funções ao codificador. Depois o descodificador é outra história.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas...ainda nao li tudo a 100%...vou ler...mas pelo k me pareceu..tu codificas o codigo..e depois o programa tem k fazer o processo inverso...senao axo k o programa nao tem mta piada...axo eu...mas ao fazer o processo inverso n sei s vai dar mto bom resultado!! vou analisar o programa...e depois comento melhor...n kero desanimar ninguem... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Convidado
Este tópico está fechado a novas respostas.