Codigo para encontrar primer dia del año en pascal

Bueno ya q me dejaron hacer un calendario en pascal y para ubicar el primer dia del año tuve q usar la conguencia d zeller , pero ya q la congruencia d zeller solo encuentra los dias desde los 1753 en adelante por una modificacion q hubo en el calendario tube que usar otro metodo para encotrar el dia . rango año 1400 en adelante.

aqui dejo la formula para la congruencia d zellers

Z:= (700 + ((26*MES) -2) DIV 10 + DIA + B + (B DIV 4) + (C DIV 4) – (2 * C )) MOD 7;

usaremos esta parte para encontrar si el año es bisiesto o no lo es

((Y MOD 4) = 0) AND ((Y MOD 100) <> 0) OR ((Y MOD 400) = 0)

aqui les dejo el codigo

PROGRAM ZELLER;

{ MoYo }

USES CRT;

VAR

Y, Z, A, B, C, M : INTEGER ;

{ N, J, O, P, R, Q, S : INTEGER; }

BEGIN

CLRSCR;

REPEAT

WRITE (‘THE YEAR (1400 .. 2600):’); READLN (Y);
WRITELN;

UNTIL (Y > 1400) AND (Y <>=3) THEN

A:= 1-2;
B:= Y MOD 100;
C:= Y DIV 100;

Z:= (700 + ((26*A) -2) DIV 10 + 1 + B + (B DIV 4) + (C DIV 4) – (2 * C )) MOD 7;

{ this part is the same of gettin the data for Z

N:= 26*A;
J:= B DIV 4;
O:= C DIV 4;
P:= 2*C;
R:= N-2;
Q:= R DIV 10;
S:= 700+Q+D+B+D+J+O-P;
Z:= S MOD 7; }

IF Y = 1400 THEN

BEGIN

Z := 5;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

END;

END;
{*****************************************************************}

IF (Y >= 1401) AND (Y <= 1500) THEN BEGIN Z := (702 + ((26*A) -2) DIV 10 + 1 + B + (B DIV 4) + (C DIV 4) – (2 * C )) MOD 7; IF ((Y MOD 4) = 0) AND ((Y MOD 100) <> 0) OR ((Y MOD 400) = 0) THEN

Z := Z-1;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

ELSE

Z := Z-1;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

END;

END;

END;

{******************************************************************}

IF (Y >= 1501) AND (Y <= 1700) THEN BEGIN Z := (703 + ((26*A) -2) DIV 10 + 1 + B + (B DIV 4) + (C DIV 4) – (2 * C )) MOD 7; IF ((Y MOD 4) = 0) AND ((Y MOD 100) <> 0) OR ((Y MOD 400) = 0) THEN

Z := Z-1;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

ELSE

Z := Z-1;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

END;

END;

END;

{*********************************************************}

IF (Y >= 1701) AND (Y <= 1751) THEN BEGIN Z := (704 + ((26*A) -2) DIV 10 + 1 + B + (B DIV 4) + (C DIV 4) – (2 * C )) MOD 7; IF ((Y MOD 4) = 0) AND ((Y MOD 100) <> 0) OR ((Y MOD 400) = 0) THEN

Z := Z-1;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

ELSE

Z := Z-1;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

END;

END;

END;

{********************************************************}

IF Y = 1748 THEN
BEGIN

Z:= 6 ;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

END;

END;

{********************************************************}

IF Y = 1752 THEN
BEGIN

Z:= 4 ;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

END;

END;

{*************************************************************}

IF (Y >= 1753) AND (Y <= 2600) THEN BEGIN { BEGIN LEAPYEAR } IF ((Y MOD 4) = 0) AND ((Y MOD 100) <> 0) OR ((Y MOD 400) = 0) THEN

{ IF ((Y MOD 4) = 0)
THEN
WRITELN (‘THE YEAR IS A LEAP YEAR’)
ELSE
BEGIN
IF ((Y MOD 100) <> 0)
THEN
WRITELN (‘THE YEAR IS NOT A LEAP YEAR’);
END; }

{ END LEAPYEAR }

{ PRINT DAYS }

Z:= Z – 1;

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

ELSE

CASE Z OF

2 : WRITE (‘MONDAY’);
3 : WRITE (‘TUESDAY’);
4 : WRITE (‘WEDNESDAY’);
5 : WRITE (‘THURSDAY’);
6 : WRITE (‘FRIDAY’);
0 : WRITE (‘SATURDAY’);
1 : WRITE (‘SUNDAY’);

END;

{ END PRINT DAYS }

WRITELN;

END;

END;

END;

READKEY

END.

hay otras formas mas faciles d encontrar el dia pero yo lo hice d esta forma y salio largo el proceso.

Sorting en pascal

bueno ense;are aki un metodo d sorting en pascal, (metodo de ordenamiento) espero les sea d mucha ayuda.

SELECTING SORTING

PROGRAM pruebasorting; { nombre del programa}

{ made by MoYo }
USES CRT;

CONST { usaremos la constante numberofelementsinuse = el numero de elementos en el array
que son 10}

numberofelementsinuse = 10;

TYPE { declaramos el array con los 10 elementos }

thearraytype = array [1..10] of byte;

VAR {declaramos las variables q usaremos }

currentindex, leftmostindex, locationoflowestvalue : integer; {currentindex = numeroenuso , lefmosindex = numero menos, locationflowestvalue = localizacion de el numero menor}
lowestvalue : integer; {numero mas bajo}
thearray : thearraytype; {el array}

{iniciamos una procedure}
PROCEDURE sorting (VAR thearray : thearraytype;
numberofelementsinuse : integer);

VAR {declaramos las variables q seran usadas en la procedure}

currentindex, leftmostindex, locationoflowestvalue : integer;
lowestvalue : integer;

BEGIN

IF (numberofelementsinuse >= 2) THEN
BEGIN
leftmostindex := 1;

REPEAT
lowestvalue := thearray[leftmostindex];
locationoflowestvalue := leftmostindex;

FOR currentindex := leftmostindex + 1 TO numberofelementsinuse DO

IF (thearray[currentindex] < style=”color: rgb(51, 51, 255);”> BEGIN
lowestvalue := thearray[currentindex];
locationoflowestvalue := currentindex;
END;

thearray[locationoflowestvalue] := thearray[leftmostindex];
thearray[leftmostindex] := lowestvalue;
INC (leftmostindex);

UNTIL (leftmostindex = numberofelementsinuse);

END;

END;

BEGIN

thearray[1] := 1;
thearray[2] := 7;
thearray[3] := 8;
thearray[4] := 6;
thearray[5] := 10;
thearray[6] := 15;
thearray[7] := 45;
thearray[8] := 23;
thearray[9] := 2;
thearray[10] := 14;

sorting(thearray, numberofelementsinuse) ;

END.

Uso de Sockets y Threads en aplicaciones Cliente-Servidor en Java

Aquí les traigo un código de una sencilla aplicación cliente-servidor hecho en Java.

La aplicación maneja la comunicación por sockets y usa multihilos (threads) igual de forma remota. Aunque el programa en sí no tiene un uso muy práctico en la realidad, les puede dar una base de lo que es la comunicación por sockets y el uso de los threads.

La aplicación consta del programa cliente y el programa servidor. El servidor recibe las ordenes del cliente para ejecutar movimientos de 2 figuras en 4 direcciones
Se necesita depurar el servidor primero para que funcione, y el cliente tiene que compilarse y luego depurar el applet.

Éste es el código del servidor:

import java.io.*;
import java.applet.Applet;
import java.awt.*;
import java.net.*;
public class Servidor extends Frame
{
int x=180,y=300,i;
int m=180,n=360,s;
boolean flag=false;
Button b1,b2,b3,b4,b5,b6,b7,b8;
TextArea area;
ServerSocket serverSocket=null;
Socket clientSocket=null;
PrintWriter out;
BufferedReader in;
String entrada;
Receive R;
public Servidor()
{
super(“Servidor para uso de Sockets y Threads”);
setLayout(new FlowLayout());
add(area=new TextArea(15,35));
resize(400,450);
show();
repaint();
connect();
R=new Receive();
R.start();
}
public void connect()
{
showText(“Estado: Conectando…”);
try
{
serverSocket = new ServerSocket(80);
clientSocket = serverSocket.accept();
out = new PrintWriter(clientSocket.getOutputStream(),true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
}
catch(Exception e)
{
if (flag=false)
{
showError(e.toString());showError(e.toString());
}
flag=true;
}
showText(“Estado: Conectado”);
}
public void disconnect()
{
showText(“Estado: Desconectando…”);
try
{
out.close();
in.close();
clientSocket.close();
serverSocket.close();
flag=false;
}
catch(Exception e)
{
if (flag=false)
{
showError(e.toString());
}
flag=true;
}
showText(“Estado: Desconectado”);
}
public void showError(String S)
{
area.appendText(“Estado: Desconectado…”+”\n”+”Vuelva a cargar el cliente y el servidor…”+”\n”);
}
public void showText(String S)
{
area.appendText(S+”\n”);
}
public class Receive extends Thread
{
public void run()
{
while (true)
{
try
{
if ((entrada = in.readLine())!=null);
{
showText(entrada);
if (entrada.equals(“Cuadro arriba”))
n=n-30;
if (entrada.equals(“Círculo arriba”))
y=y-30;
if (entrada.equals(“Cuadro abajo”))
n=n+30;
if (entrada.equals(“Círculo abajo”))
y=y+30;
if (entrada.equals(“Cuadro izquierda”))
m=m-30;
if (entrada.equals(“Círculo izquierda”))
x=x-30;
if (entrada.equals(“Cuadro derecha”))
m=m+30;
if (entrada.equals(“Círculo derecha”))
x=x+30;
if (entrada.equals(“Adiós!!!”))
break;
repaint();
}
}
catch(Exception e)
{
showError(e.toString());
}
}
}
}
public void send(String a)
{
out.println(a);
showText(“Local: “+a);
}
public void paint( Graphics g ) {
g.setColor(Color.red);
g.fillOval(x,y,50,50);
g.setColor(Color.blue);
g.fillRect(m,n,50,50);
}
public static void main (String args [])
{
new Servidor();
}
}

Y el código del cliente:Descarga la aplicación

Espero que sea de utilidad para alguien.

KobraSoft®

Código simple de encriptación en VB

Aquí les va este código, que a pesar de ser sencillo es muy útil para encriptar bases de datos de seguridad baja.

El código se puede ingresar en un módulo para tener una rápida referencia a él.

public function encriptar()

Dim indice As Integer = 1
Dim longitud As Integer = 0
Dim valornumerico As Integer = 1
Dim encryptar As String = “”

longitud = Len(Trim(TextBox1.Text))
Dim caracteres(longitud) As String
For indice = 1 To longitud
caracteres(indice) = Mid(TextBox1.Text, x, 1)
caracteres(indice) = Chr(Asc(caracteres(indice)) + valornumerico)
encryptar = encryptar & caracteres(indice)
Next indice
Return encryptar

end functionEl código para desencriptar es igual, pero la variable “valornumerico” en lugar de agregarse se resta.

public function desencriptar()

Dim indice As Integer = 1
Dim longitud As Integer = 0
Dim valornumerico As Integer = 1
Dim desencryptar As String = “”

longitud = Len(Trim(TextBox2.Text))
Dim caracteres(longitud) As String
For indice = 1 To longitud
caracteres(indice) = Mid(TextBox2.Text, x, 1)
caracteres(indice) = Chr(Asc(caracteres(indice)) – valornumerico)
desencryptar = desencryptar & caracteres(indice)
Next indice
Return desencryptar

end functionEl código lo único que hace es tomar el valor en ASCII de cada caracter dentro del textbox y le suma una cantidad determinada, devolviendo los valores convertidos en una cadena encriptada.
El valor que necesitan cambiar es el de la variable “valornumerico” que es el que determinará el valor que se agregará al caracter.

Recomiendo que tengan una tabla ASCII al lado a la hora de incrustar este código en su sistema, ya que si le dan un valor demasiado grande a “valornumerico” terminará marcando un error de desbordamiento. El valor convertido (caracter ASCII + variable) no debe sobrepasar el valor de 255, que es el máximo de la tabla ASCII.

Este es el código completo como puede incrustarse dentro del módulo (con sus ligeras correciones para mi uso personal).

Dim x As Integer = 1
Dim l As Integer = 0
Dim c As Integer = 37
Public crypt, dcrypt, txtbox1, txtbox2 As String
Public flag1 As Boolean = False
Public Function encrypt()
x = 1
Try
flag1 = False
crypt = “”
l = Len(txtbox1.Trim)
Dim caracteres(l) As String
For x = 1 To l
caracteres(x) = Mid(txtbox1, x, 1)
caracteres(x) = Chr((Asc(caracteres(x)) – c) * 3)
crypt = crypt & caracteres(x)
Next x
Return crypt
Catch
MessageBox.Show(“Insertó un caracter no válido. Favor de intentar de nuevo”, _
“Error de código”, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
flag1 = True
End Try
End Function
Public Function decrypt()
x = 1
l = (txtbox2.Trim.Length)
Dim caracteres(l) As String
dcrypt = “”
For x = 1 To l
caracteres(x) = Mid(txtbox2, x, 1)
caracteres(x) = Chr((Asc(caracteres(x)) / 3) + c)
dcrypt = dcrypt & caracteres(x)
Next x
Return dcrypt
End Function

Desde cualquier formulario se puede hacer llamada a la función encrypt o decrypt (según sea el caso). La cadena a encriptar sólo se necesitan agregar a la variable txtbox1 y la que se va a desencriptar se agrega a txtbox2. En este caso el valor que utilice para alterar el caracter ASCII fue 37, haciendo la pequeña modificación al código para que en lugar de sólo sumar o restar éste ahora además se multiplique o divida por 3 para dar la cadena final.

Como ven, el código se puede modificar fácilmente a gusto del programador para que tenga mayores niveles de encriptación, o simplemente sea un código personalizado.

El código fue 100% programado por su servidor, y lo pongo a disposición de cualquiera que guste utilizarlo o modificarlo a su antojo. Sólo pido que si va a ser publicado en otro lado se respete la fuente.

KobraSoft® 2006

Nuevas herramientas de seguridad añadidas al blog

Se han añadido algunas herramientas de seguridad de gran utilidad de la empresa Panda Software (creadores de Panda Antivirus) .

Estas herramientas las pueden ver al lado derecho debajo de los links.

Las utilidades son las siguientes:

  • Top 5 virus de las últimas . Muestra los virus más activos de las últimas 24 horas.
  • Virusómetro Panda. Medidor de riesgo de infecciones de malware.
  • Mapa de virus. Estadísticas de los países con más infecciones registradas.
  • Utilidades de reparación y desinfección. Utilidades para curarse de determinadas infecciones.
  • Virus News. Noticias de Panda Software sobre los hechos más importantes del ámbito del malware.
  • Boletines Oxygen3. Boletines de seguridad.
  • Panda ActiveScan. Scanner antivirus online.
  • Antivirus Checker. Análisis del nivel de protección de tu equipo.
  • Panda SpyXposer. Scanner anti-spyware online.

Más adelante serán añadidas más herramientas de otros sitios, según sean catalogadas por su importancia y utilidad. Si tienen algún comentario o sugerencia pueden contestar a esta entrada.

KobraSoft® 2006