<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nideaderedes &#187; C/C++</title>
	<atom:link href="http://nideaderedes.urlansoft.com/tag/cc/feed/" rel="self" type="application/rss+xml" />
	<link>http://nideaderedes.urlansoft.com</link>
	<description>Un blog hecho por mí y para mí</description>
	<lastBuildDate>Thu, 10 Jun 2010 18:46:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Procesos en C: Crear un nuevo proceso con fork()</title>
		<link>http://nideaderedes.urlansoft.com/2009/10/26/procesos-en-c-crear-un-nuevo-proceso-con-fork/</link>
		<comments>http://nideaderedes.urlansoft.com/2009/10/26/procesos-en-c-crear-un-nuevo-proceso-con-fork/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 07:00:22 +0000</pubDate>
		<dc:creator>gorkau</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[fork]]></category>
		<category><![CDATA[procesos]]></category>

		<guid isPermaLink="false">http://nideaderedes.urlansoft.com/?p=933</guid>
		<description><![CDATA[Siguiendo con los artículos sobre procesos voy a poner aquí un sencillo ejemplo para ilustrar el funcionamiento de la función fork().
Esta función es la que se encarga de crear un nuevo proceso dentro de un proceso. El nuevo proceso creado es una copia exacta del original, con la única diferencia que cada uno de ellos [...]]]></description>
			<content:encoded><![CDATA[<p>Siguiendo con los artículos sobre procesos voy a poner aquí un sencillo ejemplo para ilustrar el funcionamiento de la función fork().</p>
<p>Esta función es la que se encarga de crear un nuevo proceso dentro de un proceso. El nuevo proceso creado es una copia exacta del original, con la única diferencia que cada uno de ellos tiene su propio identificador de proceso (pid).</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">int</span> pid;
&nbsp;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;PADRE: Soy el proceso padre y mi pid es: %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, getpid<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
	pid <span style="color: #339933;">=</span> fork<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
&nbsp;
	<span style="color: #666666; font-style: italic;">// En cuanto llamamos a fork se crea un nuevo proceso. En el proceso</span>
	<span style="color: #666666; font-style: italic;">// padre 'pid' contendrá el pid del proceso hijo. En el proceso hijo</span>
	<span style="color: #666666; font-style: italic;">// 'pid' valdrá 0. Eso es lo que usamos para distinguir si el código</span>
	<span style="color: #666666; font-style: italic;">// que se está ejecutando pertenece al padre o al hijo.</span>
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>pid<span style="color: #009900;">&#41;</span> <span style="color: #666666; font-style: italic;">// Este es el proceso padre</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;PADRE: Soy el proceso padre y mi pid sigue siendo: %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, getpid<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;PADRE: Mi hijo tiene el pid: %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, pid<span style="color: #009900;">&#41;</span>;
	<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">else</span> <span style="color: #666666; font-style: italic;">// Proceso hijo</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;HIJO: Soy el proceso hijo y mi pid es: %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, getpid<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;HIJO: mi padre tiene el pid: %d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, getppid<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>En un próximo post explicaré cómo convertir el proceso hijo en un nuevo proceso totalmente diferente (con el conjunto de funciones &#8216;exec&#8217;). Esto nos permitirá lanzar un programa desde dentro de otro.</p>
<hr/>
<p>¿Necesitas ayuda con algún trabajo de clase? Entra en <a href="http://buscoprofe.com" title="Ayuda con trabajos de clase">BuscoProfe.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nideaderedes.urlansoft.com/2009/10/26/procesos-en-c-crear-un-nuevo-proceso-con-fork/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Procesos en C: Ejemplo de un sencillo cronómetro con SIGALRM</title>
		<link>http://nideaderedes.urlansoft.com/2009/10/19/procesos-en-c-ejemplo-de-un-sencillo-cronometro/</link>
		<comments>http://nideaderedes.urlansoft.com/2009/10/19/procesos-en-c-ejemplo-de-un-sencillo-cronometro/#comments</comments>
		<pubDate>Sun, 18 Oct 2009 23:45:35 +0000</pubDate>
		<dc:creator>gorkau</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[procesos]]></category>
		<category><![CDATA[señales]]></category>

		<guid isPermaLink="false">http://nideaderedes.urlansoft.com/?p=919</guid>
		<description><![CDATA[Continuando con el artículo de la semana pasada sobre procesos en C hoy os dejo aquí un sencillo ejemplo de un cronómetro:

// Para las funciones pause y alarm:
#include &#60;unistd.h&#62;
// Para las constantes SIGALRM y similares
#include &#60;signal.h&#62;
&#160;
#include &#60;stdio.h&#62;
&#160;
// Esta es la función que se va a ejecutar cada vez que se reciba la
// señal SIGALRM
void contar_segundos&#40;&#41; [...]]]></description>
			<content:encoded><![CDATA[<p>Continuando con el artículo de la semana pasada sobre <a href="http://nideaderedes.urlansoft.com/2009/10/13/procesos-en-c-senales-sigint/">procesos en C</a> hoy os dejo aquí un sencillo ejemplo de un cronómetro:</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #666666; font-style: italic;">// Para las funciones pause y alarm:</span>
<span style="color: #339933;">#include &lt;unistd.h&gt;</span>
<span style="color: #666666; font-style: italic;">// Para las constantes SIGALRM y similares</span>
<span style="color: #339933;">#include &lt;signal.h&gt;</span>
&nbsp;
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Esta es la función que se va a ejecutar cada vez que se reciba la</span>
<span style="color: #666666; font-style: italic;">// señal SIGALRM</span>
<span style="color: #993333;">void</span> contar_segundos<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// Usamos static para que se conserve el valor de &quot;segundos&quot;</span>
	<span style="color: #666666; font-style: italic;">// entre cada llamada a la función</span>
	<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> segundos<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span>;
&nbsp;
	segundos<span style="color: #339933;">++</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Han pasado %d segundos.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, segundos<span style="color: #009900;">&#41;</span>;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// Asociamos la señal SIGALRM a la función contar_segundos</span>
	signal<span style="color: #009900;">&#40;</span>SIGALRM, contar_segundos<span style="color: #009900;">&#41;</span>;
&nbsp;
	<span style="color: #666666; font-style: italic;">// Ponemos en marcha un bucle</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// Establecemos una alarma para dentro de un segundo</span>
		alarm<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>;
		<span style="color: #666666; font-style: italic;">// Pausamos la ejecución del programa para que </span>
		<span style="color: #666666; font-style: italic;">// se quede esperando a recibir una señal.</span>
		pause<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<hr/>
<p>¿Necesitas ayuda con algún trabajo de clase? Entra en <a href="http://buscoprofe.com" title="Ayuda con trabajos de clase">BuscoProfe.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nideaderedes.urlansoft.com/2009/10/19/procesos-en-c-ejemplo-de-un-sencillo-cronometro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Procesos en C: Señales (SIGINT)</title>
		<link>http://nideaderedes.urlansoft.com/2009/10/13/procesos-en-c-senales-sigint/</link>
		<comments>http://nideaderedes.urlansoft.com/2009/10/13/procesos-en-c-senales-sigint/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 07:00:51 +0000</pubDate>
		<dc:creator>gorkau</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[procesos]]></category>
		<category><![CDATA[señales]]></category>
		<category><![CDATA[SIGINT]]></category>

		<guid isPermaLink="false">http://nideaderedes.urlansoft.com/?p=912</guid>
		<description><![CDATA[Una breve introducción a los procesos en C y las señales. Señal SIGINT.]]></description>
			<content:encoded><![CDATA[<p>Desde hace un tiempo tengo la idea de escribir sobre el tema de procesos y señales en C.</p>
<p>Las señales se usan para la comunicación entre procesos y manipularlos. Un ejemplo muy conocido de señal es la señal SIGINT, que se envía cuando el usuario pulsa CTRL+C durante la ejecución de un programa. Cuando el programa que estamos ejecutando recibe esta señal finalizará su ejecución.</p>
<p>En el siguiente ejemplo vamos a ver cómo podemos hacer para que el programa realice alguna acción especial cuando el usuario pulse CTRL+C. La acción a ejecutar va a ser mostrar el mensaje: &#8220;¿Por qué me interrumpes?&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #666666; font-style: italic;">// Para las funciones pause y alarm:</span>
<span style="color: #339933;">#include &lt;unistd.h&gt;</span>
<span style="color: #666666; font-style: italic;">// Para las constantes SIGALRM y similares</span>
<span style="color: #339933;">#include &lt;signal.h&gt;</span>
&nbsp;
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Esta función es la que vamos a usar como controlador de la señal SIGINT</span>
<span style="color: #993333;">void</span> despedida<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;------------------------<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;¿Por qué me interrumpes?<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;------------------------<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	raise<span style="color: #009900;">&#40;</span>SIGTERM<span style="color: #009900;">&#41;</span>;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #666666; font-style: italic;">// Asociamos la señal SIGINT con la funcion &quot;senal&quot;</span>
	signal<span style="color: #009900;">&#40;</span>SIGINT, despedida<span style="color: #009900;">&#41;</span>;
&nbsp;
	<span style="color: #666666; font-style: italic;">// Comenzamos un bucle que hará que el programa muestre sin</span>
	<span style="color: #666666; font-style: italic;">// parar el mensaje &quot;Nada nuevo por aquí&quot;</span>
	<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Nada nuevo por aquí.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>En este programa, cuando el usuario pulse CTRL+C, en lugar de cerrarse directamente, se ejecutará la función que hemos asociado con esta señal (la funcion despedida).</p>
<p>La función despedida muestra el mensaje &#8220;¿Por qué me interrumpes?&#8221; y genera la señal SIGTERM (&#8221;raise&#8221; envía una señal al propio proceso). Si no hiciéramos esto el proceso no se detendría nunca (hasta que lo &#8220;matemos&#8221; con kill). Si te aburres haz la prueba con esta funcion:</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #993333;">void</span> despedida<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;------------------------<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;¿Por qué me interrumpes?<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;------------------------<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Otra posibilidad es usar la función signal de nuevo para indicar al proceso que use la acción por defecto de SIGINT (SIG_DFL &#8211; Signal Default):</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #993333;">void</span> despedida<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;------------------------<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;¿Por qué me interrumpes?<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;------------------------<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	signal<span style="color: #009900;">&#40;</span>SIGINT, SIG_DFL<span style="color: #009900;">&#41;</span>; <span style="color: #666666; font-style: italic;">// Indicamos al programa que use la acción por defecto</span>
	raise<span style="color: #009900;">&#40;</span>SIGINT<span style="color: #009900;">&#41;</span>;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>¿Pero por qué no podemos simplemente llamar a raise(SIGINT);?</p>
<p>Se podría pensar que bastaría con llamar a raise(SIGINT):</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #993333;">void</span> despedida<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;------------------------<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;¿Por qué me interrumpes?<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;------------------------<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	raise<span style="color: #009900;">&#40;</span>SIGINT<span style="color: #009900;">&#41;</span>;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>El problema es que la señal SIGINT va a ser procesada por la función &#8220;despedida&#8221;. De esta forma, cuando pulsemos CTRL+C, se llamará a la función despedida. La función despedida genera de nuevo la señal SIGINT, que va a ser procesada de nuevo por ella misma. El resultado es que cuando pulsamos CTRL+c el proceso comenzará a ejecutar una y otra vez la función despedida mostrando el mensaje &#8220;¿Por qué me interrumpes?&#8221; sin parar.</p>
<p>¿Por qué? Cada vez que se pulse CTRL+C se ejecuta la función &#8220;despedida&#8221; en lugar de ejecutarse la acción por defecto (cerrar el programa).</p>
<hr/>
<p>¿Necesitas ayuda con algún trabajo de clase? Entra en <a href="http://buscoprofe.com" title="Ayuda con trabajos de clase">BuscoProfe.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nideaderedes.urlansoft.com/2009/10/13/procesos-en-c-senales-sigint/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Introducción a la GSL (GNU Scientific Library) &#8211; Evaluar un polinomio</title>
		<link>http://nideaderedes.urlansoft.com/2008/10/23/introduccion-a-la-gsl-gnu-scientific-library-evaluar-un-polinomio/</link>
		<comments>http://nideaderedes.urlansoft.com/2008/10/23/introduccion-a-la-gsl-gnu-scientific-library-evaluar-un-polinomio/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 07:00:26 +0000</pubDate>
		<dc:creator>gorkau</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[gsl]]></category>
		<category><![CDATA[polinomios]]></category>

		<guid isPermaLink="false">http://nideaderedes.urlansoft.com/?p=638</guid>
		<description><![CDATA[Recientemente he tenido que desarrollar un pequeño programa usando la librería GSL (GNU Scientific Library). Esta es una potente librería disponible en C para realizar complejos cálculos científicos. Este artículo va a servir como introducción a dicha librería.
Lo primero que necesitamos para trabajar con esta librería en Ubuntu es el paquete libgsl0-dev. Si no me [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente he tenido que desarrollar un pequeño programa usando la librería <a href="http://www.gnu.org/software/gsl/">GSL</a> (GNU Scientific Library). Esta es una potente librería disponible en C para realizar complejos cálculos científicos. Este artículo va a servir como introducción a dicha librería.</p>
<p>Lo primero que necesitamos para trabajar con esta librería en Ubuntu es el paquete <strong>libgsl0-dev</strong>. Si no me equivoco el paquete libgsl0dbl, necesario para ejecutar programas hechos con esta librería, viene &#8220;de serie&#8221; en el sistema.</p>
<p>Vamos a ver el funcionamiento de la librería evaluando el polinomio: 4&#215;2+3x+2 cuando x = 2:</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #808080; font-style: italic;">/* ejemplo_gsl.c */</span>
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
<span style="color: #339933;">#include &lt;gsl/gsl_poly.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main <span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">double</span> coeficientes<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #cc66cc;">2</span>, <span style="color: #cc66cc;">3</span>, <span style="color: #cc66cc;">4</span> <span style="color: #009900;">&#125;</span>;
  <span style="color: #993333;">double</span> x <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span>;
  <span style="color: #993333;">double</span> resultado <span style="color: #339933;">=</span> gsl_poly_eval <span style="color: #009900;">&#40;</span>coeficientes, <span style="color: #cc66cc;">3</span>, x<span style="color: #009900;">&#41;</span>;
  <span style="color: #000066;">printf</span> <span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;4*x2 + 3*x + 2 = %f<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, resultado<span style="color: #009900;">&#41;</span>;
  <span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>El polinomio se evalúa usando la función <a href="http://www.gnu.org/software/gsl/manual/html_node/Polynomial-Evaluation.html">gsl_poly_eval()</a>, que tiene como parámetros:</p>
<p>- coeficientes: un array que contiene los coeficientes del polinomio.<br />
- 3: es el tamaño del array de coeficientes.<br />
- x: contiene el valor que queremos evaluar.</p>
<p>Para compilar el ejemplo bastaría con hacer:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span style="color: #c20cb9; font-weight: bold;">gcc</span> -o ejemplo_gsl ejemplo_gsl.c -lgsl -lgslcblas</pre></div></div>

<p>Este programa daría como resultado:</p>
<pre>4*x2 + 3*x + 2 = 24.000000</pre>
]]></content:encoded>
			<wfw:commentRss>http://nideaderedes.urlansoft.com/2008/10/23/introduccion-a-la-gsl-gnu-scientific-library-evaluar-un-polinomio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programación en C: Compilando con gcc</title>
		<link>http://nideaderedes.urlansoft.com/2008/10/16/c-compilando-con-gcc/</link>
		<comments>http://nideaderedes.urlansoft.com/2008/10/16/c-compilando-con-gcc/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 07:00:29 +0000</pubDate>
		<dc:creator>gorkau</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[compilar]]></category>
		<category><![CDATA[gcc]]></category>

		<guid isPermaLink="false">http://nideaderedes.urlansoft.com/?p=630</guid>
		<description><![CDATA[Voy a iniciar una serie de artículos sobre la compilación de programas en C con gcc. Esta serie de artículos estará centrada en la compilación en Linux.
NOTA: Si usas Ubuntu y no encuentras gcc en tu sistema echa un vistazo aquí.
Para el ejemplo vamos a usar el siguiente sencillo programa:

/* primero.c - Una versión del [...]]]></description>
			<content:encoded><![CDATA[<p>Voy a iniciar una serie de artículos sobre la compilación de programas en C con <a href="http://gcc.gnu.org/">gcc</a>. Esta serie de artículos estará centrada en la compilación en Linux.</p>
<p>NOTA: Si usas Ubuntu y <a href="http://nideaderedes.urlansoft.com/2006/09/04/instalar-gcc-en-ubuntu/">no encuentras gcc en tu sistema echa un vistazo aquí</a>.</p>
<p>Para el ejemplo vamos a usar el siguiente sencillo programa:</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #808080; font-style: italic;">/* primero.c - Una versión del típico hola mundo */</span>
<span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Compilado con GCC<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Para compilar este sencillísimo programa basta con ejecutar la orden:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span style="color: #c20cb9; font-weight: bold;">gcc</span> -o primero primero.c</pre></div></div>

<p>donde:</p>
<p><em>-o primero</em>: la opción -o nos permite especificar el nombre del ejecutable que se va a generar. Si no especificamos nada el nombre que se genera por defecto es <em>a.out</em>.</p>
<p><em>primero.c</em>: el fichero que contiene el código fuente del programa.</p>
<h2>Compilando con dos ficheros fuente</h2>
<p>Ahora supongamos que tenemos dos ficheros fuente:</p>
<p>primero.c:</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Compilado con GCC<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
	segundo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>;
	<span style="color: #b1b100;">return</span> <span style="color: #cc66cc;">0</span>;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>segundo.c:</p>

<div class="wp_syntax"><div class="code"><pre class="c"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> segundo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Función segundo<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span>;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Si probamos la orden anterior tendremos el un resultado similar a éste:</p>
<pre>
/tmp/ccuAuHGn.o: In function `main':
primero.c:(.text+0x1e): undefined reference to `segundo'
</pre>
<p>La forma correcta de compilar en este caso sería:</p>

<div class="wp_syntax"><div class="code"><pre class="bash"><span style="color: #c20cb9; font-weight: bold;">gcc</span> -o primero primero.c segundo.c</pre></div></div>

<p>Y si lo ejecutamos:</p>
<pre>
Compilado con GCC
Función segundo
</pre>
<p>Todo muy sencillito hasta ahora. En la próxima entrega veremos cómo compilar nuestro programa con librerías adicionales.</p>
]]></content:encoded>
			<wfw:commentRss>http://nideaderedes.urlansoft.com/2008/10/16/c-compilando-con-gcc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
