sábado, 16 de mayo de 2015

Libro de programacion en C en el entorno GNOME


Alguna ves se ha preguntado ¿Hay alguna libreria graficas en C o si es posible manejar Strings de una forma poco mas sencilla que la propia del lenguaje?

En este libro encontrara respuestas a muchas preguntas tales como esas.

La idea es que usted lea este libro y lo ponga en practica para el desarrollo de aplicaciones graficas y otros usos.  

Pero GNOME es para GNU/Linux ¿entonces esto funcionara en Windows?
Si funcionara, de hecho yo  trabajo en Windows y me funciona. Usted puede buscar un par de tutoriales en la web.

Yo uso el code blocks y gtk para crear las interfaces y todo va bien.

¡¡¡Suerte y adelante!!!

Descarge aqui el Libro de programacion en el entorno GNOME

SITIOS RELACIONADOS
Freek Frees (Facebook)
Freek Frees (Blog)

jueves, 5 de febrero de 2015

Calcular el MCD (Minimo Comun Multiplo) (Codigo en C)

A veces es complicado calcular el MCD de grandes numeros, aquì hay un codigo en C para facilitar esta tarea.

Este codigo ademas de calcular el MCD puede determinar si un numero es primo o no, y cosas relacionadas Es una aplicacion de consola,

Descarge el codigo fuente aqui.

Descarga el archivo ejecutable aqui (usuarios windows)

NOTA para cuando calcule el MCD los numeros apareceran al reves es decir que los divisores aparecen a las izquierda y los numeros a la derecha
es posible que algunos procesadores no puedan ejecutar este programa, entonces usted puede compilarlo manualmente con su compilador favorito



Nota: Esto ha sido codificado en el Dev-C++

#include <stdio.h>

//Si no se incluye <stdbool.h>, no podra usar los datos bool
#include <stdbool.h>


//este metodo solo retorna true o false, a este metodo llega como argumento el numero a probar
bool es_primo(int num){
//si se trata del 1 al 3 es primo
if(num==1 || num==2 || num==3) return true;
//sino, verificamos que el numero sea distinto de cero, y mayor que cero
if(num && num>0)
{
if(num%2==0) return false;
int i;
//recorremos del 2 hasta un numero antes del numero a probar
for(i=3;i<num;i++){
/*
Si el residuo de num / i == 0
entonces el numero es divisible por otro numero, lo cual rompe
la regla de los numeros primos.
Retornamos false inmediatamente
*/
if(num%i==0) return false;
i++;
}
//si en el recorrido no retorno false, es numero primo
return true;
}
//si num=0 o num<0 el numero tampoco es primo
else return false;
}

//Funcion para imprimir el Minimo Comun multiplo
int getDivisor(int num) {
//si numero>1, es un error matematico
if(num<1) return 0;
//sino, si es 1, 2  retornamos el numero 
else if(num==1 || num==2) return num;
else
{
//si 2 es divisor de num retornamos 2
if(num%2==0) return 2;
int i;
//recorremos con un fot, hasta la mitad num, y avanzamos de 2 en 2
for(i=3;i<(num/2)+1;i++) {
//si es divisor i de num, lo retornamos
if(num%i==0) return i;
i++;
}
//si al final no tenia divisor, retornamos num
return num;
}
}
void opcion1(){
printf("Ingrese la cantidad de numeros a probar:  ");
int cant,num,i,cantPrimos=0;
scanf("%i",&cant);
for(i=1;i<=cant;i++) {
printf("Ingrese numero: ");
scanf("%i",&num);
if(es_primo(num)) {
printf("%i es un numero primo\n",num);
cantPrimos++;
}
else printf("%i no es un numero primo\n",num);
}
if(cantPrimos) printf("%i numeros eran primos\n",cantPrimos);
}

void opcion2() {
printf("\nNo somos responsables de lo que pueda pasar si ingresa un rango muy grande\nIngrese el rango de numeros a imprimir\nDesde: ");
int desde,hasta;
scanf("%i",&desde);
printf("Hasta: ");
scanf("%i",&hasta);
int i,cant=0;
for(i=desde;i<=hasta;i++) {
if(es_primo(i)) {
printf("%i\n",i);
cant++;
}
}
printf("Rango: %i - %i\tHay %i numeros primos",desde,hasta,cant);
}

void opcion3() {
printf("\nIngrese el rango de numeros a imprimir\nDesde: ");
int desde,hasta;
scanf("%i",&desde);
printf("Hasta: ");
scanf("%i",&hasta);
int i,cant=0;
for(i=desde;i<=hasta;i++) {
if(es_primo(i)) cant++;
}
printf("Rango: %i - %i\tHay %i numeros primos",desde,hasta,cant);
}

void opcion4(){
printf("Se va a calcular el MDC de cuantos numeros?: ");
int cant,num,i;
scanf("%i",&cant);
for(i=1;i<=cant;i++) {
printf("Ingrese numero: ");
scanf("%i",&num);
//Obtenemos el divisor del numero ingresado, y lo guardamos en aux
int aux=getDivisor(num);
//si numero < 1 es un error matematico
if(!aux) printf("Error matematico\n");
//Si se trata de 1, lo imprimiimos y no entramos en el while
else if(num==1) printf("1\n");
else {
//hasta que aux sea cero
while(aux) {
//si es 1, lo imprimimos
if(aux==1) {
printf("\t1");
//con esto terminamos el while
aux=0;
}
//Si el divisor del numeros no es el mismo
else if(aux!=num) {
printf("%i\t%i\n",aux,num);
/*
Ahora actualizamos num, num lo dividimos entre su divisor,
y nuevamente actualizamos aux, con el divisor de num.
*/
num=(num/aux);
aux=getDivisor(num);
}
else {
//Cuando el divisor (axu) es el mismo num, finalizamos el while
printf("%i\t%i\n\t1\n",aux,num);
aux=0;
}
}
}
}
}
int main(){
printf("Este programa puede:");
int opcion;
while(opcion) {
printf("\n1.Determinar si un numero es primo o no\n2.Imprimir los numeros primos desde y hasta donde lo indique\n3.Determinar cuandos numeros primos hay en un rango\n4.Calcular el MCD de un numero\n0.Salir del programa\nPresione la opcion que desea: ");
scanf("%i",&opcion);
if(opcion==1) opcion1();
else if(opcion==2) opcion2();
else if(opcion==3) opcion3();
else if(opcion==4) opcion4();
else if(opcion) printf("Error: opcion incorrecta\n");
}
printf("\n");
system("pause");
return 0;
}

viernes, 16 de enero de 2015

Instalación del IDE Dev c++ en Windows

En este tutorial explicaremos cómo instalar el dev c++
Antes que nada, descarga dev c++ desde la página oficial.
¿Cuál descargar?. Las versiones beta son las que aun están en desarrollo, algunas con errores, etc. Las estables son las mejore. Usted decida la que descarga. En mi caso opté por la más reciente.

No olvides donde lo dejaste.
  • Haz clic derecho sobre el archivo, y selecciona ejecutar como administrador, y pon la contraseña, si es que te pide
  • Selecciona tu idioma de preferencia durante la instalación, presiona OK
  • Aparece el diálogo donde muestra la licencia del software, leela, luego, clic en acepto
  • Selecciona el tipo de instalación, Yo recomiendo seleccionar la instalación completa, en mi caso seleccionare: Full y luego, clic en siguiente
  • Muy importante este paso, el lugar donde se instalara debe ser en: C:\Dev-Cpp Si no se hace en este directorio, es posible tener problemas más adelante, clic en instalar
  • Espera mientras se instala
  • Clic en finalizar
  • Luego, esperamos que carge, y nos pregunta el idioma en que estara nuestro programa, nos desplazamos hasta abajo donde dice: Spanish (Latino Améria), y presionamos Next
  • Luego seleccione su fuente, color y estilo de ícono preferido y clic en next
  • Luego clic en next. Espere mientras se termina de instalar y configurar nuestro programa.
  • Esto es todo, el programa esta listo.
Esta animación demuestra como debemos instalarlo

Pasos

IMPORTANTE SI SU CUENTA NO TIENE PERMISOS DE ADMINISTRADOR:
Para cuando use Dev c++, siempre debe hacer clic derecho sobre el programa y ejecutar como administrador, de lo contrario tendra problemas como:
  • Dev c++ estará en Inglés
  • No podrá crear proyectos
  • Tendrar error al abrir proyectos ya existentes
Encuentrános en Facebook como: Freek Frees - Tecnología, Conocimiento y Software libre

miércoles, 14 de enero de 2015

Determinar si un numero es primo (código en C)

//Si no se incluye <stdbool.h>, no podra usar los datos bool
#include <stdbool.h>
#include <stdio.h>
//este metodo solo retorna true o false, a este metodo llega como argumento el numero a probar
bool es_primo(int num){
//si se trata del 1 al 3 es primo
if(num==1 || num==2 || num==3) return true;
//sino, verificamos que el numero sea distinto de cero, y mayor que cero
if(num && num>0)
{
if(num/2==0) return false;
int i;
//recorremos del 3 hasta un numero antes del numero a probar
for(i=3;i<num;i++){
/*
Si el residuo de num / i == 0
entonces el numero es divisible por otro numero, lo cual rompe
la regla de los numeros primos.
Retornamos false inmediatamente
*/
if(num%i==0) return false;
//con esto nos sercioramos que no se vuelva a dividir entre pares,
//porque ya lo hicimos antes, asi que ahora las divisiones seran de numero impares
//ejemplo_ entre 3,5,7,9, etc
i++;
}
//si en el recorrido no retorno false, es numero primo
return true;
}
//si num=0 o num<0 el numero tampoco es primo
else return false;
}
int main(){
printf("Ingrese la cantidad de numeros que desea probar: ");
int cant;
scanf("%i",&cant);
int i;
for(i=1;i<=cant;i++) {
printf("Ingrese numero: ");
int num;
scanf("%i",&num);
//mandamos como parametro numero ingresado
//si returna true, es primo, sino no lo es
if(es_primo(num)) printf("El numero es primo\n");
else printf("El numero no es primo\n");
}
printf("\n");
system("pause");
return 0;
}

Encuentranos en Facebook como Freek Frees

lunes, 8 de diciembre de 2014

Notacion Polaca Inversa - Notacion postfija con codigo (Segunda parte)

Ver la primera parte del articulo
Un ejemplo de como hacer una calculadora sencilla en Java con rpn:
Descarga el archivo: Parser.java
Descarga el archivo: Pila.java
Descarga la calculadora en formato .jar

¿Como usar el archivo Parser.java?

 - crear un nuevo proyecto con eclipse o netbeans.
 - crear una nueva clase con el nombre: Parser
(con inicial mayuscula). Ahora borre lo que tiene su clase, copie el contenido del archivo Parser.java y peguelo en su clase Parser.
 - cree otra clase con otro nombre por ejemplo Calcular.

En su clase Calcular usted debería tener algo como lo siguiente:

import java.util.Scanner;
public class Calcular {
public static void main(String[] ar) {
Parser calculador=new Parser();
Scanner teclado=new Scanner(System.in);
System.out.print("Ingrese su expresion: ");
String expresion=teclado.next();
System.out.println("El resultado es: "+calculador.calcular(expresion));
}
}

Ahora este código debería funcionar.

Búscanos en Facebook como: Freek Frees
Si te ha servido el articulo te animo a que lo compartas

lunes, 3 de noviembre de 2014

Notacion Polaca Inversa - Notacion Postfija (Parte 1)

La notación polaca inversa, notación de postfijo, o notación posfija, (en inglés, Reverse Polish notation, o RPN), es un método algebraico alternativo de introducción de datos. Su nombre viene por analogía con la relacionada notación polaca, una notación de prefijo introducida en 1920 por el matemático polaco Jan Łukasiewicz, en donde cada operador está antes de sus operandos. En la notación polaca inversa es al revés, primero están los operandos y después viene el operador que va a realizar los cálculos sobre ellos. Tanto la notación polaca como la notación polaca inversa no necesitan usar paréntesis para indicar el orden de las operaciones mientras la aridad del operador sea fija. Leer mas en wikipedia

Ver la segunda parte del articulo con código fuente disponible


Existen varias notaciones para representar expresiones aritméticas, que se diferencian en el orden en que se escriben los argumentos (operandos) de los operadores. Las más relevantes son:

Notación infija: La notación habitual. El orden es primer operando, operador, segundo operando. 
Notación prefija: El orden es operador, primer operando, segundo operando. 
Notación postfija: El orden es primer operando, segundo operando, operador. 
Notación funcional: Se escribe el operador/función y despues, entre paréntesis, los operadores separados por comas. 

La notación infija tiene el problema de que en expresiones con más de un operador existe ambiguedad sobre cual es el orden de evaluación. Por ejemplo, la expresión 8/4/2 se puede interpretar como (8/4)/2 o bien como 8/(4/2). Las otras notaciones no sufren este problema.

Un problema interesante en computación es poder convertir expresiones en notación INFIJA a su equivalente en notacion POSTFIJA. 

Dada la expresión A+B se dice que está en notación INFIJA, y su nombre se debe a que el operador (+) esta entre los operadores (A y B). 

La ventaja de usar expresiones en notación polaca postfija radica en que no son necesarios los paréntesis para indicar orden de operación, ya que este queda establecido por ubicación de los operadores con respecto a los operandos. 

Para convertir una expresión dada en notación infija a una notación postfija, deberán establecerse previamente ciertas condiciones


Convertir de notacion infija a postfija

Pseudocódigo

1. Inicializar la pila
2. Repetir hasta que no haya caracteres en la expresión de
entrada
2.1 Leer un carácter de la expresión
2.2 Si es un operando se pasa a la expresión postfija de salida
2.3 Si el elemento es un operador distinto de ‘)’ entonces:
2.3.1 Si la pila está vacía se mete en la pila.
2.3.2 Si la pila NO está vacía
• Si la prioridad del operador es mayor que la prioridad del
operador de la cima de la pila ⇒ se mete en la pila
• Si la prioridad del operador es menor o igual que la prioridad
del operador de la cima de la pila ⇒ se saca el operador de la
cima y se coloca en la expresión postfija. Volvemos a 2.3
2.4 Si el elemento es el operador ‘)’ entonces:
2.4.1 Se sacan operadores de la pila hasta encontrar el paréntesis ‘(‘
que se elimina (las expresiones postfijas no llevan paréntesis)
3. Al finalizar el recorrido por la expresión aritmética se pasa todo
el contenido de la pila a la expresión postfija

Evaluar una expresion postfija para obtener su resultado

Pseudocódigo

1. Inicializar la pila
2. Repetir hasta que no haya caracteres en la expresión
a evaluar
2.1 Obtener el siguiente item de la expresión
2.2 Si el elemento es un operando se mete en la pila
2.3 Si el elemento es un operador (denominado &) entonces:
2.3.1 Se extraen los dos elementos superiores de la pila,
denominados Op2 y Op1 respectivamente.
2.3.2 Se evalúa el resultado de Op1 & Op2 y se almacena en Z
2.3.3 Se introduce Z en la cima de la pila
3. Obtener el valor de la expresión de la cima de la pila

¿Necesitas mas documentacion o informacion?
Puedes ir a los siguientes enlaces
Documentacion en pdf
Presentacion en PowerPoint


Visita nuestra pagina en Facebook

martes, 5 de agosto de 2014

Crear una USB booteable con Kali Linux desde Windows


Primero que nada hacer una copia de seguridad de lo que tengas en tu USB, además debes saber que cuando el proceso termine no podras guardar nada mas en tu USB a menos que la formatees

Win32DiskImager-0.9.5-install  y obviamente Kali Linux

Ahora procedemos con la Instalacion de win32 

Le damos permisos para ejecutarse, luego, clic en next



Ahora marcamos donde dice: I acept the agreement y clic en next0

Si quieres puedes cambiar la ruta de instalación del programa en mi caso lo dejo por defecto y clic en next

Next

Si quieres tener un icono en el escritorio marca la opción y clic en next

Ahora clic en Install

Por ultimo clic en Finalizar

 Luego se debe formatear el pendrive/USB en fat32
Abrimos el programa ya instalado le damos permisos y nos saldrá algo como la imagen siguiente. Luego seleccionamos donde se muestra en la imagen y ahí buscamos el sistema operativo. Si no aparece ningún archivo, marcar la opción “.” Y seleccionar el archivo y clic en Abrir



Nos aparece al lado izquierdo la letra de nuestra USB. Si es la que le corresponde le damos a Write. 

Clic en Yes
Cuando haya terminado dice write successful clic en Ok y cerrar con el botón exit
Eso es todo el pendrive ya es booteable
Visitanos en Facebook FreeK FreeS