Programación en C
Aunque la calculadora es una herramienta muy potente para casi todas las operaciones matemáticas que deseemos, a la hora de correr programas se ven condicionadas por dos factores: el lenguaje de programación que implementan (normalmente un intérprete de BASIC) y en segundo lugar el procesador que llevan que es bastante lento. Para ello, la solución es echar mano del ordenador y en este caso crearnos nuestras propias rutinas. Para mí, el lenguaje ideal para ello por su rapidez es C. Además tenemos la suerte de que viene implementado en Linux de serie, así como el compilador del mismo.
Voy a añadir una serie de programas simples por si los quieres probar y usar en Linux
Guadalinex trae un compilador de C instalado de serie el gcc
Para escribir un programa en C en Gualinex puedes utilizar un Editor simple de texto como Gedit y guardar el fichero con el nombre
fichero.c (es decir el nombre que quieras seguido de un punto y la letra c).
Puedes utilizar la opción de Copiar y Pegar con el código de esta página CRTL+C (copia) y CRTL+V (Pega)
Para
compilarlo y crear un ejecutable abres un xterm y escribes:
$gcc -o fichero fichero.c (
fichero es el ejecutable que te va a crear el compilador)
Para hacer
correr el ejecutable creado escribes en el xterm:
$./fichero
Programa para hallar todos los divisores de un número
/* Calcula todos los divisores de un número */
/* Juan López Sánchez (c) Jls-Soft'2003 */
#include <stdio.h>
#include <stdlib.h>
main()
{
unsigned long int numero,mitad,retardo,x=1;
inicio:system ("clear"); /*si estuvieses programando en el lado oscuro system ("cls")*/
printf("Introduce un numero para calcularle todos sus divisores: ");
scanf ("%d",&numero);
mitad=numero/2;
for (x=1;x<=mitad;++x)
{
if (numero%x==0) printf ("%d, ",x);
}
printf ("%d\n\n",numero);
printf ("JuanLopez'2003. Powered C++\n\n");
printf ("\n\nPulsa 1 + Intro para otra vez, otro numero acaba ");
scanf ("%d",&retardo);
if (retardo==1) goto inicio;
}
Programa para calcular el factorial de un número
En realidad, el cálculo del factorial es una función implementada en la calculadora, pero incluyo esta rutina que por su simpleza puede ayudar a comprender la estructura de un programa en C.
/* Programa para Calcular el factorial de un número */
/* Juan López Sánchez (c) Jls-Soft'2003 */
#include<stdio.h>
#include<stdlib.h>
main()
{
float numero,x=1,factorial;
int retardo;
inicio:system ("clear");//en el lado oscuro system ("cls");
printf("Introduce un numero para calcularle su factorial: ");
scanf ("%f",&numero);
factorial=numero; //inicializar variables//
for (x=1;x<=numero-1;++x)
{
factorial=factorial*x;
}
printf ("\n\nEl factorial de %f es %f ",numero,factorial);
printf ("\n\nJuanLopez'2003. Programado en C++\n\n");
printf ("\n\nPulsa 1 + Intro para otra vez. Otro numero acaba: ");
scanf("%d",&retardo);
if (retardo==1) goto inicio;
}
Divertido programa para trabajar el Cálculo mental.
Aplicable desde niños de 3º y 4º de Primaria.
/* Adivina un número del 1 al 100 */
/* Tienes 6 intentos */
/* Juan López Sánchez (c) Jls-Soft'2003 */
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
double rnd (long *prandom);
main ()
{
principio:system ("clear");
long inicio = time (NULL) % 65536; //semilla
long random = inicio; //random=numero entre 0 y 65535
unsigned short pensado, mayor, diferencia, otravez, n_intentos=6,x = 1;
float numero1;
numero1 = rnd (&random);
unsigned short numero = numero1 * 101;
printf ("*** Este juego trata de acertar un número del 1 al 100 ***\n");
printf("*** Primero tienes que elegir en cuántos intentos lo vas a acertar ***\n");
printf(" ¡¡¡ Con 6 intentos te garantizas casi el éxito !!!\n\n");
printf("Teclea el número de intentos y da Intro: ");
scanf("%d",&n_intentos);
printf ("*** Tienes %d intentos para acertar un número del 1 al 100 ***\n\n",n_intentos);
printf("*****************************************************************\n");
for (x = 1; x <= n_intentos; ++x)
{
printf ("\nIntento %d Introduce un número: ", x);
scanf ("%d", &pensado);
if (pensado == numero)
{
printf ("Estupendo, lo has adivinado en %d intentos", x);
goto salir;
}
mayor = (numero > pensado) ? numero : pensado;
if (mayor == numero)
{
diferencia = numero - pensado;
if (diferencia < 10)
printf ("\nTe faltan menos de 10 unidades\n");
else
printf ("\nTe faltan más de 10 unidades\n");
}
else
{
diferencia = pensado - numero;
if (diferencia < 10)
printf ("\nTe has pasado en menos de 10 unidades\n");
else
printf ("\nTe has pasado en más de 10 unidades\n");
}
}
salir:printf ("\n\nEl número era el: %d ", numero);
printf ("\nPulsa 1 más Intro para otra vez, otro número acaba ");
scanf ("%d", &otravez);
if (otravez == 1)
goto principio;
printf("\n**** Adivina ver 2.0 *****\n");
printf ("\nJuanLopez'2003. Adict to Linux\n\n");
}
double
rnd (long *prandom)
{
*prandom = (25173 * *prandom + 13849) % 65536;
return ((double) *prandom / 65535);
}
Programa para calcular el máximo común divisor de tres números
Es interesante el uso de la recursividad. La función mcd se llama a sí misma
/**************** Maximo Comun divisor ***********/
// utilizando el algoritmo de Euclides
// (c) Juan Lopez Sanchez 2003
#include<stdio.h> //libreria de entrada y salida
#include<stdlib.h> //libreria para las llamadas al sistema
unsigned long int divisor;
unsigned long int mcd(unsigned long int numero1,unsigned long int numero2);
main ()
{
unsigned long int numero_1,numero_2,numero_3;
system("clear"); // llamada al sistema, limpia la pantalla
printf("Programa para calcular el mcd de tres numeros\n");
printf(" ** Utiliza el algoritmo de Euclides **\n\n\n");
printf("Introduce primer numero: ");
scanf("%d",&numero_1);
printf("\nIntroduce segundo numero: ");
scanf("%d",&numero_2);
printf("\nIntroduce segundo numero: ");
scanf("%d",&numero_3);
mcd(numero_1,numero_2);
mcd(numero_3,divisor);
printf("\nEl maximo comun divisor es %d\n ",divisor);
printf ("\n\nFIN. (C) Jls-Soft'2003. Adict to Linux\n\n\n");
}
unsigned long int mcd(unsigned long int numero1,unsigned long int numero2)
{
unsigned long int resto,dividendo;
long int contador;
contador=1;
dividendo=numero1;
divisor=numero2;
resto=numero1%numero2;
while (contador>=0)
{
if (dividendo%divisor==0){
//printf("\nEl maximo comun divisor es %d\n ",divisor);
return (divisor);
contador=-1;
}
else{
resto=dividendo%divisor;
dividendo=divisor;
divisor=resto;
}
}
}
Programa para averiguar máximo común divisor y mínimo común múltiplo usando congruencias
// Programa para calcular el máximo común divisor y mcm de dos números usando congruencias
// (c) Juan López Sánchez ' 2005
#include <iostream>
int main (int argc, char * const argv[]) {
// insert code here...
system ("clear");
unsigned long n1,n2,n3,n4;
printf("Introduce primer número: ");
scanf("%d",&n1);
n3=n1;
printf("Introduce segundo número: ");
scanf("%d",&n2);
n4=n2;
while (n1!=n2)
{
if (n1>n2)
n1=n1-n2;
else
n2=n2-n1;
}
printf ("\n\nEl máximo común divisor es: %d\n\n",n1);
printf ("El mínimo común múltiplo es: %d",n3*n4/n1);
return 0;
}
--
JuanLopez - 17 Sep 2004
El pingüino ya no tiene frío
arriba