Entradas etiquetadas con Pascal
Pequeño «Krackme»…
20 feb
Bueno, hoy presento un «Crackme» que he desarrollado en Pascal. Es muy sencillo pero no es como los comunes ya que, para poder superar el reto es necesario realizar una secuencia en el teclado, por lo cual su validación es sólo por esta vía. Tal vez no dure ni diez o veinte minutos vivo, pero el objetivo es entretenerse un rato. Cuando lo resuelvan se darán cuenta que es muy conocido lo que han realizado.,
• Clic aquí para descargar.
Nota: Quien lo resuelva, si puede dejar un tutorial de cómo lo hizo estaría muy agradecido. Igualmente, pronto estaré publicando mi solución ( un poco pobre ).,
Oxygen: alternativa a AV del Windows Live Messenger
9 ene
Oxygen es una aplicación desarrollada en ObjectPascal que se encarga de sustituir al AV ( AntiVirus ) que Windows Live Messenger pide instalar cuando transferimos un archivo.
Este programa se encarga de mostrar información del archivo como:
- Nombre
- Tamaño
- Ruta
- Icono
Además en el caso de que el archivo transferido posea una extensión posiblemente peligrosa, lo notifica. También permite ejecutar el archivo directamente.
Capturas Vídeo de demostración DescargarLa descarga incluye el código fuente de la aplicación. Clic aquí para obtener los paquetes.
D & C Anagrams!: Resuelve anagramas
28 sep
¡Buenas tardes!
Hace muy poco presenté un script en Python en el cual hacía referencia a los Anagramas, fue algo curioso y sencillo. Maravillosamente, al pasar un par de días, recibí unos comentarios en los cuales me pedían o mejor dicho, me preguntaban si haría otra versión de esa aplicación pero con un toque más interactivo. Además si recordamos: «Python no es un lenguaje compilado sino interpretado.» Así que las personas que desearan usar ese script sencillamente necesitarían instalar el intérprete – Enfocándonos hacia Windows, claro está - lo cual me motivó más para realizar una aplicación en todo el sentido de la palabra y así fue como surgió D & C Anagrams!
D & C Anagrams! (Ventana principal)
Este sencillo, pero divertido programa tiene un total de 27 anagramas con diferente nivel de dificultad, variando entre tres a diez letras, así que se puede pasar un tiempo relativamente largo resolviendo éstos divertidos pasatiempos.
Es de código abierto por lo cual podrán mejorarla, agregarle más anagramas, en fin…Pulirla a su gusto, eso sí, recordando siempre respetar los derechos de autor. Está programado en ObjectPascal ( Delphi ), y se usaron los componentes AlphaControls Lite para su diseño (apariencia).
Descargas Más >
Fondo de pantalla estilo «presentación» Ubuntu
31 ago
Los que han usado Windows Se7en sabrán que él nos permite tener un fondo de pantalla al estilo de presentación, usando los denominados «temas», pues bien, Ubuntu y en general varias distros de GNU/Linux nos permiten hacer exactamente lo mismo de una manera sencilla, rápida y personalizada.
Para crearlos tenemos dos opciones. La primera de ellas es hacerlo manualmente siguiendo un formato, y la otra es hacerlo teniendo como mediadora a una aplicación.
ManualmenteBien, empecemos por éste. Como es algo relativamente sencillo de entender pondré de una vez el código.
<?xml version="1.0" encoding="UTF-8"?> <!-- Created by DC XML Creator --> <background> <starttime> <hour>0</hour> <minute>00</minute> <second>01</second> </starttime> <static> <duration>300</duration> <!-- Duración de la imagen --> <file>/home/windhack/Imágenes/OliviaWilde02.jpg</file> <!-- 1º Imagen de la presentación --> </static> <transition> <duration>1</duration> <!-- Duración de la transición --> <from>/home/windhack/Imágenes/OliviaWilde02.jpg</from> <!-- Cambiar imagen de... --> <to>/home/windhack/Imágenes/OliviaWilde09.jpg</to> <!-- ...A --> </transition> <!-- Para agregar más imágenes seguir el formato a partir de <static> hasta </transition> --> </background> <!-- Fin de la presentación -->Usando aplicación
Como sé que hacer todo manualmente a veces puede ser tedioso, ya que después de cinco (5) imágenes es una tarea bastante agotadora, decidí desarrollar una aplicación que simplifica todo éste proceso.
La aplicación se llama DC XML Creator y está desarrollada en ObjectPascal (Lazarus).
Su uso es relativamente sencillo: Seleccionamos las imágenes que deseamos usar para la presentación, el tiempo que durará cada una, los segundos de la transición Más >
Simulación de sentencia «switch (case)» en Python
5 ago
La sentencia «switch (case)» es una estructura de control que permite controlar el flujo del programa basado en el valor de una variable o expresión. Se usa comúnmente para evitar el uso de if’s anidados, lo que en cierta parte disminuye la legibilidad y rapidez de un programa.
Su funcionamiento es sencillo, si la variable o expresión tiene un número determinado de valores, se podría ejecutar una serie de acciones dependiendo de cada valor por separado.
Un ejemplo en C y Pascal:
int main() { int num = 1; switch (num) { case 0: printf("El número es cero\n"); break; case 1: printf("El número es uno\n"); break; case 2: printf("El número es dos\n"); break; /* case default: */ } return EXIT_SUCCESS; }
—
var Num:Integer = 2; begin case Num of {Inicio Case} 0:WriteLn('Cero'); 1:WriteLn('Uno'); 2:WriteLn('Dos'); else WriteLn('Desconocido'); end; {Fin Case} ReadLn; end.
Basándose en el valor de la variable Num (Integer) mostrará un mensaje de salida diferente. El default ( C ) y el else ( Pascal ) se ejecuta cuando el valor de la variable no coincide con ninguno de los valores anteriores. La mayoría de los lenguajes de programación cuentan con ésta sentencia, pero por desgracia Python no, en lugar de ello se usa una serie de bloques if-elif-else.
Aquí un ejemplo como los anteriormente vistos:
Num = 3 if Num == 0: print 'Cero' elif Num == 1: print 'Uno' elif Num == 2: print 'Dos' elif Num == 3: print 'Tres' else: print 'Desconocido...'
¡Bien!, una solución simple, efectiva, bastante fácil de trabajar pero no es elegante. Especialmente si se Más >
Valor absoluto de un número real en Pascal
14 jul
El Valor absoluto de un número real es la distancia entre el número real y el cero (0) en la recta numérica, sin tener en cuenta su signo sea éste positivo o negativo.
Por ejemplo, 15 es el valor absoluto de -15 y de 15.
Para todo número real , el valor absoluto es positivo. Se nota por y se define como:
Programando cálculo en PascalPara obtener el valor absoluto de un número, tenemos la función Abs(); de la unidad System.pas. Pero bien, como siempre, programaremos nuestra propia función (alternativa).
Tomando en cuenta el siguiente pseudocódigo podremos crear más fácil la función:
Función ValorAbsoluto(Numero)
Inicio
Si Numero < Cero Entonces
Retorno Numero * -1
De otro modo Si Numero > Cero Entonces
Retorno Numero
Sino
Retorno Cero
Fin
Pues no siendo más, aquí dejo mi función.
function AbsoluteValue(X:Real):Real; const ZeroValue = 0.0; begin if X < ZeroValue then Result := -X (* Es igual a X * (-1) *) else if X > ZeroValue then Result := X else Result := ZeroValue; end;
Cifrado César en Pascal
29 may
Versión en Pascal del algoritmo de cifrado César, programada por mí.
program CesarCifrado; {$APPTYPE CONSOLE} uses SysUtils; var Alphabet: Array [0..25] of Char=('a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v', 'w','x','y','z'); NWord:String = ''; Palabra: String; Clave:Integer; function CifrarCesar(AString:String;AKey:Integer):String; var I,J,ALength,Temp,Tmp:Integer; begin Result := ''; AString := LowerCase(AString); ALength := Length(Alphabet); if (AKey >= 1) and (AKey <= 26) then begin for I := 0 to Length(AString) do for J := 0 to ALength -1 do if (AString[I] = Alphabet[J]) then if J+AKey <= 26 then begin Temp := J+AKey; Tmp := Temp-26; NWord := NWord + Alphabet[Tmp] end else NWord := NWord + Alphabet[J+AKey]; end; Result := NWord; end; begin try WriteLn('Escriba la palabra que desea cifrar > '); ReadLn(Palabra); WriteLn('Escriba la clave para codificar (entre 1 y 24) > '); ReadLn(Clave); Write('La palabra cifrada es: ',CifrarCesar(Palabra,Clave)); ReadLn; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end.
Comparación de palabras en arreglos (arrays) diferentes
15 may
La cuestión es sencilla, necesitamos comparar cuáles palabras están en ambos arreglos (arrays ).
Pero…¿es posible hacer esto?, claro que lo es, para ello lo haremos en dos lenguajes diferentes.
El primero será en C++ y fue originalmente programado por JaAViEr.
#include <iostream> using namespace std; int main() { char *nombrex[]={"Javier","Alex","Void","Animalf","Bolivianito","RockoX","3D1","Vart","Ranefi"}; char *nombrey[]={"Javier","Esteban","NA","Ranefi","Alex","ELEMENTO","2D1","WUALA","CUEK"}; for(int i=0;i < 9;i++) { for(int a=0;a < 9;a++) { if(nombrex[i]==nombrey[a]) { cout << "La palabra " << nombrey[a] << " Coinciden en ambas listas." << endl; } } } }
Ahora mi versión en Delphi.
program Project1; {$APPTYPE CONSOLE} uses SysUtils; var NombreX: Array [0..4] of String =('Sebastian','Camilo','Milton','Julian','WindHack'); NombreY: Array [0..4] of String =('Sebastian','Diana','Spektrum','Camilo','Milton'); I,A:Integer; begin try for I := 0 to 4 do for A := 0 to 4 do if NombreX[i]=NombreY[A] then Writeln('Las palabras '+NombreY[a]+' Coinciden...'); ReadLn; except on E: Exception do begin Writeln(E.ClassName, ': ', E.Message); ReadLn; end; end; end.
Paso a explicar un poco:
Empleamos el bucle for y la condicional if para realizar esta tarea. Buscamos las palabras y las comparamos con el otro arreglo, si este llega a ser correcto mostramos en la consola el mensaje con las palabras correctas. Si se necesita comparar con más arreglos simplemente agregamos otro bucle y modificamos la condicional.program Project1; {$APPTYPE CONSOLE} uses SysUtils; var NombreX: Array [0..4] of String =('Sebastian','Camilo','Milton','Julian','WindHack'); NombreY: Array [0..4] of String =('Sebastian','Diana','Spektrum','Camilo','Milton'); NombreZ: Array [0..4] of String =('Sebastian','Diana','Spektrum','Camilo','xD'); I,A,B:Integer; begin try for I := 0 to 4 do for A := 0 to 4 do for B := 0 to 4 do if (NombreX[i]=NombreY[A]) And (NombreY[A]=NombreZ[B]) then Writeln('Las palabras '+NombreY[a]+' Coinciden...'); ReadLn; except on E: Exception do begin Writeln(E.ClassName, ': ', E.Message); ReadLn; end; end; end.Más >
Tablas de multiplicar
13 abr
Bueno, este principalmente es un código publicado por Javier (JaAViEr), en el cual hace una tabla de multiplicar usando el bucle while en C++. Me pareció interesante aunque realmente su uso no es muy funcional, pero divierte un poco.
Dejaré la aplicación original en C++ y pondré unas traducciones que hice a otros lenguajes.
- C++ (Original by Javier)
#include <iostream> using namespace std; int main() { int n,t,x=0; cout << "Ejemplo: Empezar:2 - Terminar: 10" <<endl; cout << endl << "Numero a Empezar > "; cin >> n; cout << "Numero a Terminar > "; cin >> t; while (x<=t){ cout << n << "x" << x << "=" << x*n <<endl; x++; } }
y aquí mis traducciones :
- Pascal
program project1; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; var N,T:Integer; X:Integer=0; {$IFDEF WINDOWS}{$R project1.rc}{$ENDIF} begin Writeln('Ejemplo: Empezar:2 -> Terminar:10'); Write('Numero a empezar > '); Readln(N); Write('Numero a terminar > '); Readln(T); while X<=T do begin Write(N,'x',X,'=',x*N,' '); Inc(X); end; end.
- Python (Soy novato en él, así que perdonen errores…)
print("Tabla de multiplicar") X = 0 N = input("Introduzca el numero a iniciar > ") T = input("Introduzca el numero para finalizar > ") while X <= T: print N,"x",X,"=",X*N," " X += 1
- Ruby (Ni hablar apenas aprendí hoy, xD)
print 'Tablas de multiplicar' print 'Introduzca el numero a iniciar > ' Num = gets.chomp print 'Introduzca el numero para finalizar > ' Ter = gets.chomp X = 0 #Bucles N = Num.to_i T = Ter.to_i while X <= T print N,'x',X,'=',N*X,' ' X += 1 end
Agrego la traducción a Java gracias a Jh0uBrt.
import java.io.*; public class Mult { public static void main(String[] args) throws IOException { BufferedReader linea = new BufferedReader( new InputStreamReader(System.in)); System.out.println("Tabla de Más >
Serie Fibonacci en Pascal
30 mar
Uno de los retos o mejor dicho ejercicio que realiza todo programador, es la famosa sucesión Fibonacci. Para los que no saben que es pueden visitar la Wikipedia.
He desarrollado una aplicación en consola que la realiza, espero les sea de utilidad.
program Fibonacci; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; var A,B,C,D,I:Integer; Salir:Boolean = False; Opcion: ShortInt; J:String; begin Writeln('Obtener la serie Fibonacci'); Writeln; repeat I := 3; J := '.:WindHack:.'; Writeln; Writeln('Seleccione una opción'); Writeln; Writeln('1. - Calcular Fibonacci'); Writeln('2. - Salir'); Writeln; while 0 = 0 do begin Write('Introduce la opción: '); Readln(Opcion); if (Opcion > 0) and (Opcion <= 2) then Break; end; Case Opcion of 1:begin Writeln('Ingrese el número hasta donde se calculará...'); Readln(A); while A<1 do begin Writeln('Ingrese un número mayor a 0...'); Readln(A); Writeln; end; B := 0; C := 1; D := B+C; Writeln('Serie Fibonacci con ',A,' términos'); Writeln; if A=1 then Write(B); if A=2 then Write(B,' ',C); if A=3 then Write(B,' ',C,' ',D); if A>3 then while I<a></a>

