“Mi estilo, es el arte de luchar sin luchar”

Aprendiendo C (1ra. parte)

2007-10-23 13:12:26-05

Software

Bueno, hace un tiempo, le preguntaban a Thot sobre un curso "Basico" de programación en C, reconozco la autoridad de el en este campo, pero el esta acostumbrado a tratar temas mas interesantes y avanzados, como los que muestra en su pagina. Asi que en un pequeño interés por aportar algo, agrego este pequeño apartado al blog, iniciaremos con asuntos muy básicos y el objetivo del curso es que los que hagan los ejercicios y practiquen puedan después entender programas mas complejos como los que Thot presenta. Requiero mucho su critica para este trabajo, para mejorarlo,esperando que le sirva a alguen.

Aqui unos pequeñas cosas a tener en cuenta cuando programas en cualquier Lenguaje

"La computadora hace lo que tu le dices que haga, No lo que tu quieres que haga"

"Toda entrada del usuario es estupida o maliciosa, hasta que se demuestre lo contrario"

"Reutiliza codigo, usa las bibliotecas"

"Corrige siempre el primer error que te muestra el compilador, puede resolver los siguientes"

"Enseña tu codigo, mejoraras mucho con la critica"
y
"La unica manera de aprender un lenguaje de programación es programando en el"

Así que iniciaremos, como debe de ser, con lo primero,estableceremos un método de trabajo, lo primero que necesitaremos invariablemente es un compilador de C, yo uso GCC (GNU Compiler Collection), tal vez aquí tengamos algún problema, para los que Usen Debian / Ubuntu:

$sudo apt-get install binutils gcc

Estos son los paquetes mas básicos, si tu distribución no es alguna de estas dos, solo instala estos paquetes, tambien puede ser que uses Sistema Operativo (coff coff Win2) el Devcpp te vendría muy bien para nuestros menesteres, aunque nuestra recomendación es instalar o probar algún SO libre, si no te interesa instalar otro SO puedes probar con un LiveCD como Knoppix.

Ahora que la instalación mas recomendable es con el metapaquete build-essentials

$sudo apt-get install build-essentials

Aprenderemos a usar gcc (coff*coff* Solo para compilar en C)

La sintaxis es sencilla

$gcc NombreArchivo.c

Esta nos entregara un ejecutable de nombre "a.out", ademas el archivo debera tener extension ".c", La siguiente forma es mas completa

$gcc -o NombreEjecutable NombreFuente.c

Ok, esto devuelve un archivo ejecutable con el nombre especificado.

Ahora necesitaremos un editor de texto plano, este puede ser VI(M), nano, gedit, jedit o cualquier otro que edite texto plano, yo uso nano, aunque hay gente que preferira usar alguna IDE como DevCpp (Win2) o Anjuta(*nix),estos no necesitan de dicho editor de texto plano.

Ya con esto podemos empezar, Asi que escribiremos nuestro primer programa El Famoso "HOLA NENA". En nuestro editor favorito (o la ide) y escribimos lo siguiente:

#include <stdio.h>/*Biblioteca con funciones para la entrada y salida Estandar*/

int main() //inicia la funcion principal
{

printf("¡HOLA NENA! \n");/*escribimos "¡Hola Nena!" en la salida estandar*/
return 0;

} /*Fin de la función principal*/

La linea que contiene #include es una directiva del compilador que indica que abra funciones de esa biblioteca y que el compilador tiene que ir a buscarlas en dicha biblioteca.

La linea que indica int main() esta definiendo una función llamada main que no recibe argumentos "()" y que devuelve un entero "int", todos los programas en C tienen una funcion main que es la que se ejecutara primero y en su cuerpo puede tener llamadas a otras funciones.

Las llaves"{}" indican los limites de la función, también son usadas para indicar el cuerpo de ciclos o acciones.

printf("¡HOLA NENA! \n"); es un función definida en la libreria estándar stdio.h, esta función escribe su argumento (con algún o ningún formato) en la salida estándar, en nuestro caso el monitor, pero lo podemos cambiar, después veremos como. Nota el carácter '\n' indica nueva linea, y que la instrucción termina en punto y coma (;),es importante,pues muchos errores de sintaxis son por no escribir el punto y coma que indica el fin de la instrucción.

return 0; indica una terminación exitosa del programa,un retorno distinto a cero,indicara al SO algún error dentro de la ejecución del programa.

el uso de "//" y "/* hola*/" son para los comentarios,el compilador omitira el linea marcada con // e ignorara lo que este entre /* y */, los comentarios son importantes para la documentación y para hacer el codigo mas legible. ademas se puede agregar el preámbulo GLP, BSD, MIT, ETC, para licenciar tu trabajo,y esto se hace entre comentarios.

Ahora hay que guardarlo con terminación .c digamos que nombre el archivo "nena.c"
con gcc:
$gcc -o nena nena.c

Ejecutamos con:
$./nena
nota: Esta forma de ejecutar sirve en BASH y KSH, que son las shells que yo uso.

Si usamos alguna IDE, existirá alguna opción rápida de compilar y ejecutar en la barra de herramientas, ademas si usas devcpp es posible que se te abra y cierre muy rápido una ventana de DOS y no te permita ver el resultado de tu programa, asi lo mas facil es agregar una llamada al sistema system("PAUSE"); antes de return 0;

Bueno hasta aqui hemos visto:

1.-Algunos consejos de programacion.
2.-Que necesitamos para empezar a programar en C.
3.-Como usar gcc para compilar programas escritos en C.
4.-La estructura basica de un programa en C
5.-Ejecucion de nuestros programas escritos en C.

Permalink: http://www.mononeurona.org/users/entry/vendaval/872


Comments Comentblogs:
1.- thot alucard_thot wrote:

:) gracias por lo comentarios (los tomé como cumplidos).
Y sí he puesto algunas cosas "avanzadas" en mi blog (pero no creo que lo sean tanto) porque esperaba que algún visitante ayudara a explicar los temas sencillos. (Que personalmente no tengo tanto tiempo para redactar un cursito tan básico), a petición de SaidJose empecé a poner lo básico de C (:P cómo compilar). Pero pues no he podido continuar con el "Hola mundo..." (porque estoy preparando unos talleres).

http://mictlan.utm.mx/~thot/jaws/html/index.php?page/iniciarC

Me agradaron los primeros consejos de programación. Y pues espero sea bajo licencia "Creative Commons" :P para poder agregar algo de lo que pongas en tu curso en mi página.

2007-10-23 16:54:19-05
2.- vendaval vendaval wrote:

claro, no he querido cambiar la imagen del blog, (pero todo el material esta licenciado bajo mononeurona commons a menos de que diga lo contrario) pero todo el trabajo esta a libre disposicion Thot, saludos.

2007-10-23 19:22:43-05
3.- thot alucard_thot wrote:

Sobres pues ahora que tenga tiempo y continúe el cursito (creo que tomaré algunos detalles que me gusten de lo que escribas). Está bien que se inicien este tipo de trabajos. Saludos.

2007-10-23 19:36:32-05
4.- thot alucard_thot wrote:

Nada más como comentario, aunque ese error lo cometo yo también frecuentemente (por razones de costumbre) "librerías" está mal usado el término, debe ser "bibliotecas". Es problema de una mala traducción del inglés, y que a veces nos transmiten esos "malos vicios" :P. Saludos.

2007-10-23 19:39:28-05
5.- asimov asimov wrote:

Que bueno que se hagan estos pequeños cursos basicos que sirven de mucho a gente como yo, que le gustaría aprender a programar.

Ya comencé a hacerlo y empiezo con el primer error al querer ejecutar el script
Intenté esto:

$./nena
bash: ./nena: No existe el fichero o directorio

$sh nena.c
nena.c: 3: Syntaxis error: "(" unexpected

$./nena.c
./nena.c: line 3: error de sintaxis cerca de token no esperado '('

Agradecería si me comentaras que pasó aquí, gracias.


2007-10-24 01:07:26-05
6.- asimov asimov wrote:

Disculpa mi torpeza, ya comprendí que necesitaba compilar primero antes de ejecutar. Errores de principiante.

2007-10-24 01:14:37-05

New Comentblog

Captcha



Login



Remember me:
vendaval
Alberto Rodriguez Sanchez Estudiante de Ingenieria en Computacion en la UAM-A, programo en C, C#, Python y Haskell. Uso Debian GNU/Linux, Mac-OS X, OpenSolaris, NetBSD y Win2. Pienso especializarme en computo cientifico y criptografia que son mis grandes pasiones.

Tambien pienso que la programacion computacional es un Arte y que un programa de computadora puede llegar a ser realmente bello si cumple con algunas caracteristicas, prefiero la Sintaxis Avanzada en los programas por que muestra un dominio del lenguaje y un buen grado de abstraccion.

NetBSD, C, Enlightenment y VI(M) son mis SO, Lenguaje de programación, manejador de ventanas y editor favoritos.

Practico Limalama y JKD (soy seguidor de la filosofía de Bruce Lee) y tambien escribo con cierta regularidad en este blog.

"Se como el agua, pero piensa como el fuego"
alchemy corn pop cryptography dark side education hacking humor ladies mathematics music my life nanoblogging no more triviality programming martial arts
Powered by:
Despabilando la MonoNeurona.org
Livechat

<-Nombre
vendaval wrote:
Con una mentira suele irse muy lejos, pero sin esperanzas de volver
on 24/7/08

asarch wrote:
Simon. De preferencia ponle una nalga pa' que llame la atencion
on 25/6/08

vendaval wrote:
hola roberto, lo mejor seria poner lo que quieres comunicarnos como una noticia en portada
on 28/3/08

roberto wrote:
como envio un email a todos los miembros de mononeurona
on 26/3/08

vendaval wrote:
pienso que debria crear una version viva para ms necesidades
on 28/1/08

asarch wrote:
O tambien en: http://www.openbsd.org/ en la forma más pura que puedas encontrar en la red
on 26/1/08

Qu estuve haciendo?
=( Se em barrio y estoy en un curso de GNU/linux para usuarios Noveles
2 days, 11 hours ago
Tambien escribo recetas de cocina y chistes =P
3 days, 1 hour ago
@Tuanis: En tu Blog pones sobre lo que te interesa, yo hablo de computacion, aunque
3 days, 1 hour ago
Manda mas o menos la receta Saidjose, asi pruebo a ver si sale
4 days, 17 hours ago
cuando se haga la monochelada estaria chido para acompañar.
5 days ago
yo estoy probando cocinar costillas a la BBQ en Carbon, si me salen bien
5 days ago
Estudio a fondo un asunto sobre la nueva red de la uam
6 days ago
@asarch: hablales bonito de mi. que voy a oaxaca en enero.
1 week, 2 days ago
Pero en la biblioteca Central no estaban, aunque tienen sus tesoros =)
1 week, 6 days ago
Me di una vuelta a CU a ver si tenian algunos libros que ocupo.
1 week, 6 days ago
Galerias
FirefoxjEdit.orgGimpOpenOffice.orgHacker
Top
Colectivo MonoNeurona.org © 2002-2008.