Comprimir y Extraer archivos






Esta clase representa el formato de datos gzip, que utiliza un algoritmo estándar del sector para archivos sin pérdidas de compresión y descompresión.El formato incluye un valor de comprobación de la prueba cíclica de redundancia para detectar daños en los datos. El formato de datos gzip utiliza el mismo algoritmo que la DeflateStream clase, pero se puede extender para utilizar otros formatos de compresión.



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Compression;
using System.IO;


namespace GZipStream_I
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)//Comprimir
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
Compresion(ofd.FileName);
}
}

private void button2_Click(object sender, EventArgs e)//Descomprimir
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
Descompresion(ofd.FileName);
}

}

public static void Compresion(string NombreArchivo)
{
FileStream Archivo;
try
{
// Leemos el archivo a comprimir
Archivo = new FileStream(NombreArchivo, FileMode.Open, FileAccess.Read,                                     FileShare.Read);

//Definimos el buffer con el tamaño del archivo
byte[] btBuffer = new byte[Archivo.Length];

//Almacenamos los bytes del archivo en el buffer
int intCount = Archivo.Read(btBuffer, 0, btBuffer.Length);
Archivo.Close();

//Definimos el nuevo stream que nos va a permitir grabar el zip
FileStream Salida = new FileStream(NombreArchivo + ".zip", FileMode.Create,                                   FileAccess.Write);

//Rutina de compresion usando GZipStream
GZipStream gzsArchivo = new GZipStream(Salida,                                                                                 CompressionMode.Compress, true);

//Escribimos el resultado
gzsArchivo.Write(btBuffer, 0, btBuffer.Length);
gzsArchivo.Close();

//Cerramos el archivo
Salida.Flush();
Salida.Close();

MessageBox.Show("Compresion realizada correctamente al archivo: " +                                               NombreArchivo + ".zip");
}
catch (Exception ex)
{
MessageBox.Show("Ocurrió un error al comprimir: " + ex.Message);

}
}


Código de Barras




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Codigo_de_Barras_I
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void button1_Click(object sender, EventArgs e)
{
Zen.Barcode.Code128BarcodeDraw codigobarras=Zen.Barcode.BarcodeDrawFactory.Code128WithChecksum;
pictureBox1.Image = codigobarras.Draw(textBox1.Text, 100);
}
}
}


Código QR - Quick Response






Un código QR (del inglés Quick Response code, "código de respuesta rápida") es un módulo para almacenar información en una matriz de puntos o en un código de barras bidimensional. Fue creado en 1994 por la compañía japonesa Denso Wave, subsidiaria de Toyota. Presenta tres cuadrados en las esquinas que permiten detectar la posición del código al lector. El objetivo de los creadores (un equipo de dos personas en Denso Wave, dirigido por Masahiro Hara) fue que el código permitiera que su contenido se leyera a alta velocidad.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace QRCode_I
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Zen.Barcode.CodeQrBarcodeDraw codigoqr = Zen.Barcode.BarcodeDrawFactory.CodeQr;
pictureBox1.Image = codigoqr.Draw(textBox1.Text, 50);
}

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}




Radio Online




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Radio_Internet
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = @"http://radio.skypherence.com:8000/radiomozart";
}

private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = @"http://streaming202.radionomy.com:80/ABC-Classic";
}
}
}



Reproductor con Windows Media Player





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Reproductor_WMP
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog abrir = new OpenFileDialog();
abrir.Filter = "Todos los archivos|*.*";
if (abrir.ShowDialog() == DialogResult.OK)
{
axWindowsMediaPlayer1.URL = abrir.FileName;
}
}

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}


Enviar texto al Bloc de Notas




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;

namespace Navegar
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
String textoentrada = textBox1.Text;
Clipboard.SetText(textoentrada);
Process.Start("notepad.exe");
}

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void button3_Click(object sender, EventArgs e)
{
textBox1.Clear();
}
}
}


Código Polibio




Rostro de  escultura de Polibio, 
Viena, Austria


Polibio fue un historiador griego (208 a. C. - 126 a. C.). Enviado como rehén a Roma historió los hechos de ese país. Es considerado uno de los maestros del relato historicofilosófico por su Historia general de Roma.

Polibio nació en Megalópolis, Grecia, y fue deportado a Roma luego de la conquista de su lugar natal. Escribió la primera gran historia apologética de los romanos. Prontamente apareció en los circuitos aristocráticos de los Escipión, ilustre familia patricia de la Antigua Roma.


En su libro Historias hace mención al Método de cifrado atribuido a sus contemporáneos Cleoxeno y Democleto, basado en coordenadas. Aunque parece ser que la historia ha querido atribuir la invención del método a Polibio.
Se sustituye el valor alfabético por el de dos cifras que corresponden al de una tabla previamente fabricada.
El alfabeto griego utilizado inicialmente esta compuesto de 24 letras, con lo cual, la tabla de coordenadas contiene 5 columnas y 5 líneas. Políbio propuso utilizar la 25 coordenada como inicio y final de una transmisión.
En el alfabeto latino, existen 26 letras por lo cual una misma coordenada se utiliza para dos letras. La tabla de coordenadas mas común es la que cuenta con K/Q en la misma coordenada (semejanza de sonidos) pero, también existe alguna en la que se utiliza la misma coordenada para I/J.







Polibio aparece en los libros de Criptografía como el inventor de un procedimiento para escribir las letras como pares de números. Mediante una tabla se hace corresponder a cada carácter de un alfabeto de 25 letras un par de números. La tabla de Polibio tiene la forma siguiente:


12345
1ABCDE
2FGHI/JK
3LMNOP
4QRSTU
5VWXYZ


Por ejemplo, la palabra Polibio se escribiría 35 34 31 24 12 24 34.




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Codigo_Polibio
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string textoentrada;

private void button1_Click(object sender, EventArgs e)
{
textoentrada = textBox1.Text;

Dictionary<string, string> polibio = new Dictionary<string, string>
{
{"a","11" }, {"b","12" }, {"c","13" }, {"d","14" }, {"e","15" },
{"f","21" }, {"g","22" }, {"h","23" }, {"i","24" }, {"j","24" },
{"k","25" }, {"l","31" }, {"m","32" }, {"n","33" }, {"o","34" },
{"p","35" }, {"q","41" }, {"r","42" }, {"s","43" }, {"t","44" },
{"u","45" }, {"v","51" }, {"w","52" }, {"x","53" }, {"y","54" },
{"z","55" },
};
foreach (char letra in textoentrada)
{
string resultado = polibio[letra.ToString()].Trim();
textBox2.AppendText(resultado);
}
}

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void button3_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
}
}

}


Código Morse




Fue desarrollado por Alfred Vail mientras colaboraba en 1830 con Samuel Morse en la invención del telégrafo eléctrico. Vail creó un método según el cual cada letra o número era transmitido de forma individual con un código consistente en rayas y puntos, es decir, señales telegráficas que se diferencian en el tiempo de duración de la señal activa. La duración del punto es la mínima posible. Una raya tiene una duración de aproximadamente tres veces la del punto. Entre cada par de símbolos de una misma letra existe una ausencia de señal con duración aproximada a la de un punto. Entre las letras de una misma palabra, la ausencia es de aproximadamente tres puntos. Para la separación de palabras transmitidas el tiempo es de aproximadamente tres veces el de la raya. Morse reconoció la idoneidad de este sistema y lo patentó junto con el telégrafo eléctrico. Fue conocido como American Morse Code y fue utilizado en la primera transmisión por telégrafo.

En sus comienzos, el alfabeto Morse se empleó en las líneas telegráficas mediante los tendidos de cable que se fueron instalando. Más tarde, se utilizó también en las transmisiones por radio, sobre todo en el mar y en el aire, hasta que surgieron las emisoras y los receptores de radiodifusión mediante voz.

En la actualidad, el alfabeto Morse tiene aplicación casi exclusiva en el ámbito de los radioaficionados y Scouts, y aunque fue exigido frecuentemente su conocimiento para la obtención de la licencia de radioperador aficionado hasta el año 2005, posteriormente, los organismos que conceden esa licencia en todos los países están invitados a dispensar del examen de telegrafía a los candidatos.

También se utiliza en la aviación instrumental para sintonizar las estaciones VOR, ILS y NDB. En las cartas de navegación está indicada la frecuencia junto con una señal Morse que sirve, mediante radio, para confirmar que ha sido sintonizada correctamente.






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Morse_I
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

string textoentrada;

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void button3_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
}

private void button1_Click(object sender, EventArgs e)
{

textoentrada = textBox1.Text;

Dictionary<string, string> codigomorse = new Dictionary<string, string>
   {
{"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", "--.. "}, {"0", "-----"}, {"1", ".----"},
{"2", "..---"}, {"3", "...--"}, {"4", "....-"}, {"5", "....."},
{"6", "-...."}, {"7", "--..."}, {"8", "---.."}, {"9", "----."},
{" ", " // " },
   };

Interés Compuesto


     El interés compuesto representa la acumulación de intereses que se han generado en un período determinado por un capital inicial (CI) o principal a una tasa de interés (r) durante (n) periodos de imposición, de modo que los intereses que se obtienen al final de cada período de inversión no se retiran sino que se reinvierten o añaden al capital inicial, es decir, se capitalizan.




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace InteresCompuestoForms
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

// Variables
float capital, redito, tiempo, interes, monto, tipo;

//Borrar
private void button3_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
}

private void button1_Click(object sender, EventArgs e)
{
//Entrada
capital = float.Parse(textBox1.Text);
redito = float.Parse(textBox2.Text);
tiempo = float.Parse(textBox3.Text);
tipo = redito / 100;


Reloj digital





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Reloj_digital_I
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
}


Conjetura de Goldbach


Christian Goldbach

En teoría de números, la conjetura de Goldbach es uno de los problemas abiertos más antiguos en matemáticas. A veces se le califica del problema más difícil en la historia de esta ciencia. Concretamente, G.H. Hardy en 1921 en su famoso discurso pronunciado en la Sociedad Matemática de Copenhage comentó que probablemente la conjetura de Goldbach no es sólo uno de los problemas no resueltos más difíciles de la teoría de números, sino de todas las matemáticas. Su enunciado es el siguiente:
Todo número par mayor que 2 puede escribirse como suma de dos números primos. Christian Goldbach 1742




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Goldbach
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int numero;

private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}

private void button1_Click(object sender, EventArgs e)
{

numero = int.Parse(textBox1.Text);

Boolean[] ePrimo = new Boolean[numero];
for (int i = 2; i < numero; i++)
ePrimo[i] = true;

//determina los primos < numero usando el algoritmo de la criba de Eratostenes.

for (int i=2; i*i < numero; i++)
{
if (ePrimo [i])
{
for (int j = i; i * j < numero; j++)
ePrimo[i * j] = false;
}
}

// Cuenta los primos

int primos = 0;
for (int i=2; i < numero; i++)
{
if(ePrimo[i])
{
primos++;
}
}


TinyBASIC



Dispone de un manual de 60 paginas y este BASIC esta enfocado a la programación de micro controladores.

No dispone de excesiva información.

Arduino es una tarjeta con un microcontrolador ARM, que se programa usando Sketch, un lenguaje basado en Processing. Todo es de código abierto y la verdad es que aprender a usar Sketch no es realmente complicado. Simplemente hay que trabajar un par de semanas con constancia y se verá lo fácil que es programar un Arduino.

Sin embargo, no falta quien busque alternativas a Sketch. El candidato favorito es sin duda el lenguaje BASIC, quizás porque éste fue uno de los primeros que se usó en las computadoras de 8 bits, que se podía programar como intérprete y que no utilizaba mucha memoria, amén de que su conjunto de instrucciones es muy sencillo. Por ello, no es de sorprenderse que ya se haya portado más de una versión de BASIC a esta plataforma. Mike Field hizo este trabajo portando el código en ensamblador de un procesador 68000 creando así Tiny BASIC para Arduino.

El proyecto se basa en el código fuente de Tiny BASIC (ver referencias). Tiny BASIC no es el BASIC mejor pero como un sistema experimental, en donde el autor debe haber aprendido bastante, suena razonablemente interesante. Por ejemplo, Tiny BASIC no tiene THEN después de una instrucción IF. Aparte de ello, un intérprete para Arduino no tiene sentido si no se liga a los puertos de entrada/salida, entre muchas otras características para hacerlo útil. Por eso Field le agregó instrucciones como MOTORS x,y; DELAY <ms> y SENSORS(). Todas estas instrucciones son dependientes de la plataforma por lo que el autor da un mecanismo para añadirlas.

https://www.unocero.com/2013/11/21/tiny-basic-para-la-plataforma-arduino/




Conjetura de Collatz

Lothar Collatz



La conjetura de Collatz es una conjetura de teoría de números, debida a Lothar Collatz, que fue quien la propuso en 1937. La conjetura también es conocida como conjetura 3n + 1. La conjetura puede ser descrita como sigue. Tómese cualquier entero positivo n. Si n es par, divídase por 2 para obtener n / 2. Si n es impar, multiplíquese por 3 y súmese 1 para obtener 3n + 1. Repítase el proceso indefinidamente. La conjetura dice que independientemente del número por el que se empiece, siempre se alcanzará el 1, concretamente la secuencia 4,2,1 que se repetirá indefinidamente.

Descripción formal
Sea la siguiente operación, aplicable a cualquier número entero positivo:
Si el número es par, se divide entre 2.
Si el número es impar, se multiplica por 3 y se suma 1.

La conjetura de Collatz es: El proceso alcanzará eventualmente el número 1, independiente del entero positivo que haya sido elegido inicialmente.

El menor i tal que ai = 1 se denomina tiempo de parada total de n. La conjetura asegura que n tiene un tiempo de parada total bien definido. Si, para algún n, tal que i no exista, se dirá que n tiene un tiempo de parada infinito y la conjetura es falsa.

Dado un número cualquiera, podemos considerar su órbita, es decir, las imágenes sucesivas al iterar la función. Por ejemplo, si n=13:

Si observamos este ejemplo, la órbita de 13 es periódica, es decir, se repite indefinidamente a partir de un momento dado):13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1,...

La conjetura dice que siempre alcanzaremos el 1 (y por tanto el ciclo 4, 2, 1) para cualquier número con el que comencemos. Ejemplos:
Comenzando en n = 6, uno llega a la siguiente sucesión: 6, 3, 10, 5, 16, 8, 4, 2, 1.
Empezando en n = 11, la sucesión tarda un poco más en alcanzar el 1: 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.




Empezando n = 27, la sucesión tiene 112 pasos, llegando hasta 9232 antes de descender a 1: 27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1.