Noticias:

"Cuando veas a Gilles, sonríe y asiente. Cuando veas a NN, tápate los oídos y grita blablabla"

La llave para la felicidad en 106.

Menú Principal

Curso de iniciación en programación C

Iniciado por Thylzos, 23 de Junio de 2008, 09:26

0 Miembros y 2 Visitantes están viendo este tema.

Thylzos

Pues eso, como veo que la mayoría a mudado sus hilos de OGame aquí y que esta sección va medio muerta, pues mi modesto aporte. Iré publicando capítulos y soluciones periódicamente. He aquí el índice:

1- Introducción
+ A quién va dirigido el manual
+ Objetivos
+ Definiciones básicas
+ ¿Por qué C?
+ Historia
+ Sobre el compilador y los elementos necesarios

2- El lenguaje
+ Definiciones
+ Nuestro primer programa
+ Estructura del programa
+ Comentarios
+ Bibliotecas
+ Ejercicios

3- Variables y constantes
+ Definiciones
+ Identificadores
+ Tipos de datos
+ Declaraciones de variables y constantes
+ Inicialización
+ Ejercicios -> Soluciones

4- Operadores
+ Definiciones
+ Operadores aritméticos
+ Operadores de asignación
+ Operadores de asignación compuestos
+ Operadores de incremento y decremento
+ Operadores de bits
+ Operadores racionales
+ Operadores lógicos
+ Operador de conversión explícita (cast) [Cortesía de Hartigan]
+ Orden de ejecución
+ Ejercicios. -> Soluciones

5- Entrada/Salida estándar
+ Definiciones
+ Salida de caracteres
+ Entrada y salida formateada
+ Ejercicios -> Soluciones

6- Punteros
+ Definiciones
+ Qué hacen los punteros
+ Declaración de punteros
+ Utilidad de los punteros
+ Ejercicios -> Soluciones

7- Control de flujo
+ Definiciones
+ Sentencias condicionales
+ Sentencias repetitivas
+ Sentencias anidadas
+ Otras consideraciones
+ Ejercicios -> Soluciones

8- Arrays y cadenas
+ Definiciones
+ Arrays unidimensionales
+ Arrays bidimensionales
+ Declaración y cadenas
+ Entrada/Salida con cadenas
+ Funciones de cadenas
+ Ejemplos
+Ejercicios -> Soluciones

9- Estructuras
+ Definiciones
+ Declaraciones y acceso a campos
+ Estructuras y arrays
+ Ejemplo
+ Ejercicios

10- Funciones
+ Definiciones
+ Estructura
+ Paso de parámetros y retorno de datos
+ Variables locales y globales
+ Recursividad
+ Ejemplo
+ Ejercicios

11- Ficheros
+ Definiciones
+ Apertura y cierre de ficheros
+ Lectura y escritura
+ Ejemplo
+ Ejercicios

12- Estructuras dinámicas
+ Definiciones
+ Reserva y liberación de memoria
+ Listas
+ Pilas
+ Colas
+ Ejemplos
+ Ejercicios

13- Bibliotecas Estándar en C

14- Ampliando conocimientos I: Un chat
+ Definiciones
+ Sockets, ¿Cómo funcionan?
+ Funciones y estructuras útiles
+ Ejemplo
+ Ejercicios

15- Ampliando concimientos II: Nuestra biblioteca virtual


Ahora pongo el primer capítulo.

P.D.: Peluche, a ver si hacemos eso de los manuales que hablamos en OGame, que allí quedó en el aire, pero no estaría mal llevar a cabo la idea.

Gracias freyi *.*


Cita de: Gambit en 26 de Enero de 2010, 10:25
Follar cansa. Comprad una xbox 360, nunca le duele la cabeza, no discute, no hay que entenderla, la puedes compartir con tus amigos...

Thylzos

#1
1- Introducción

1.1- A quién va dirigido el manual
Este tutorial va dirigido a toda persona que, con o sin conocimientos previos de programación esté interesada en iniciarse en el lenguaje C desde cero. Por estos motivo, insto a los recién llegados al maravilloso mundo de la programación a no quedarse con ninguna duda y que pregunten todo lo que quieran, ya que como decía una profesora mía de latín "no es sabio acumular ignorancia".

1.2- Objetivos
La idea es que al acabar este tutorial pueda crear programas básicos sin problemas e incluso algunos complejos, utilizando en lenguaje C. Además me propongo que sirva para obligar a los lectores a pensar como programadores, ya que como bien dijo Peluche, pudiendo hacer esto sólo con leer un pequeño manual básico por Internet sobre cualquier lenguaje, se podrá programar sin problemas.

1.3- Definiciones útiles.
Antes de empezar con la materia en bruto daré a los iniciados unas pequeñas definiciones básicas:

- Lenguaje de programación: Conjuntos de palabras, símbolos y reglas utilizados para controlar las operaciones a realizar en un ordenador. Hay, principalmente, dos tipos de lenguajes de programación: de bajo y de alto nivel. Para entenderlos deben saber que la máquina tiene su propio lenguaje, muy difícil para nosotros, a fin de poder programar cómodamente se hicieron lenguajes de programación. Los de bajo nivel son los que proporcionan poca o ninguna abstracción del microprocesador de un ordenador, es decir que se "parecen" más al lenguaje de la máquina, por ejemplo ASM. Los de alto nivel  se caracterizan por parecerse más a nuestra forma de "pensar" que a la del ordenador, por ejemplo C/C++, Java 2, VB...

- Algoritmo: Un conjunto de pasos a seguir para solucionar un problema determinado, en esta caso informático.
- Programa: Secuencia de instrucciones a seguir, escritas en un lenguaje de programación o de script, que resuelven un problema.
- Instrucción: Orden dada a un ordenador para que éste realice una acción determinada.
- Compilador: Se encarga de traducir todo un programa fuente (formado por uno o varios ficheros fuente), escrito en un lenguaje de programación, a un programa objeto en código máquina. Una vez se que se ha generado el programa objeto es necesario un proceso de enlazado o linkado, el cual es realizado por un enlazador o link editor, para enlazar el programa objeto con otros archivos de biblioteca y otros módulos (ambos en código maquina) para dar lugar a un único programa ejecutable. En general a ambos procesos se les suele englobar bajo el nombre de compilación

1.4- Por qué elegir C
C no es un lenguaje orientado a objetos ni es tan simple como uno de scripting, entonces, ¿por qué lo elegimos para programar y es tan relevante en la actualidad como en la historia? Principalmente, por cuatro razones. La primera, es portable, puede ser implementado en casi cualquier sistema operativo. Segundo lugar, posee bibliotecas estándar con numerosas funciones que permiten realizar toda clase de acciones, además de las extensiones que nos proporcione nuestro compilador habitual. Tercero, tiene cualidades tanto de lenguaje de alto nivel (como las estructuras típicas de este tipo de lenguaje) y de alto nivel (como manejo de punteros, de bits y control directo de memoria y periféricos). Por último y no por ello menos importante, C es un lenguaje en el cual se basan otros de igual o más relevancia en la actualidad, como C++, Java 2 y C#, y siempre es conveniente conocer las bases antes de estudiar el resto.

1.5- Historia
Bien, C es un lenguaje creado por los Laboratorios Bell hacia alrededor de 1970 (no estoy muy seguro). Tomó este nombre porque estaba hecho tomando muchas características del lenguaje B. Principalmente estaba orientado a la implementación de sistemas operativos, principalmente de Unix. Sobre los motivos de porqué lo crearon, no creo que esté muy claro, algunos dicen que fue el resultado del deseo de los programadores de jugar con Space Travel (el padre de los virus informáticos), pero a mí me gusta más la idea de que se creó para poder reescribir el sistema operativo Unix, ya que ASM era complicado y así sería más fácil hacer modificaciones.

El hecho es que C comenzó a triunfar y a usarse en distintos plataformas. Como era muy popular el Instituto Nacional Estadounidense de Estándares estandarizó (valga la redundancia) el lenguaje en 1989 en el ANSI C o C89.
C siguió evolucionando y en 1999 fue ampliado dando como resultado el C99.

1.6- Sobre el compilador y los elementos necesarios.
Bien, finalmente llegamos al final del primer capítulo, para el próximo comenzaremos con el lenguaje en sí. Para eso debo aclarar algo, C es un lenguaje que precisa compilador, es decir, un programa que lo traduzca al lenguaje del ordenador. En principio no creo que tengamos problemas en este aspecto, ya que no veremos aplicaciones tan complicadas como para necesitar uno específico. Para los que tengan Windows pueden usar el Dev C++ que es gratis e incluso el Virtual C++ en modo consola (aunque no lo recomiendo) y los que se decanten por Linux pueden probar el gcc, una herramienta tan útil como interesante.

Gracias freyi *.*


Cita de: Gambit en 26 de Enero de 2010, 10:25
Follar cansa. Comprad una xbox 360, nunca le duele la cabeza, no discute, no hay que entenderla, la puedes compartir con tus amigos...

Des

Oh, me gusta es hilo para iniciarse en la programación en C, ponedlo con chincheta.
Dicen que una imagen vale más que mil palabras, mi última palabra te hará recordar toda una vida de imágenes.

Faerindel

Thylzos, cuando termines y lo corrijas, pásalo a pdf, que es más cómodo.

Ray

Gracias, termínalo cuanto antes.

Enchincheto :$

Thylzos

#5
Gracias a ambos.

2- El lenguaje

Es hora de comenzar con lo más interesante, la programación. Antes de meternos en ello haremos nuestro primer programa y daremos una definición que nos será útil.

2.1- Definiciones.

Función: Algoritmo escrito en un lenguaje de programación que realiza una tarea (o función) específica.

2.2- Nuestro primer programa

Compilar muchas veces es distinto en Windows que en Linux, principalmente porque no se ponen de acuerdo y nos obligan (casi siempre) a usar software distinto para cada uno de estos sistemas operativos. Por eso explicaré cómo hacerlo con un compilador para Windows y a su vez con uno para Linux. Este es el código que usaremos:

#include <stdio.h>

/*Esto es un comentario*/

int main (void){
printf ("Este es mi primer programa");
return (0);
}


2.2.1- Compilando en Windows.

Aquí es tan fácil como abrir nuestro compilador habitual, copiar el código en el procesador de código de este y darle al botón de compilar. Espero que nadie se allá perdido :P...

2.2.2- Compilado en Linux.

Ahora entramos en una zona un poco más revoltosa, no porque sea difícil, sino porque hay muchos pasos. Primero abrimos un procesador de texto que nos permita guardar archivos sin formato, copiamos el código y lo guardamos con el nombre que queramos y la extension .c (por ejemplo, primprog.c), luego vamos al intérprete de comandos (shell) y, suponiendo que tenemos instalado el gcc, vamos a la carpeta donde está para escribir: gcc -o [nombre del archivo (sin extensión)] [nombre del archivo más la extensión], lo hacemos así para que el ejecutable que genere tenga el mismo nombre que el código fuente, pero en el primer apartado puedes poner lo que quieras.

Al final nos debe quedar algo así (en ambos casos):



Si nos da un fogonazo de MS-DOS al ejecutar el programa, simplemente ve al cmd y ejecutarlo desde allí para ver la salida.

2.3- Estructura de un programa

Bien, ahora que hemos hecho nuestro primer programa, veamos qué características básicas debe tener todo programa que escribamos, para eso nos valeremos del código anterior.

Citar#include <stdio.h>

Con esto le decimos a nuestro compilador que vamos a usar las funciones ya definidas que vienen en la biblioteca stdio, no desesperen, esto lo veremos con profundidad más adelante en este capítulo.

Citar/*Esto es un comentario*/

Para quien no lo haya entendido, esto es un comentario. También lo veremos mejor más adelante.

Citarint main (void){

Aquí decimos que comienza la función principal del programa, que vendría a ser como la puerta de entrada de una casa y es la que se ejecuta primero en todo después de compilarlo. En definitiva, es el proceso principal del programa.

Citarprintf ("Este es mi primer programa");

En esta ocasión llamamos a la función printf (que imprime un texto en pantalla) con la cadena "Este es mi primer programa" para que imprima.

Citarreturn (0);
}

Bien, muchos programadores experimentados se preguntarán para que retorno el valor 0 en un programa tan insignificante, antes de responder voy a explicar algunas cosas. Aquí lo que hacemos es concluir enviando el valor cero al sistema operativo, es decir diciéndole que acabamos el programa sin ningún percance, si no lo hubiese hecho este creería que las instrucciones que vienen después (que no nos interesa saber cuales son) son válidas, si usamos windows esto como mucho provoca el cierre de la ventana, pero si estamos programando en MS-DOS (no tiene nada de malo, yo me vicie mucho tiempo con MS-DOS ¬¬), nos saldrán un montón de errores y se nos colgará la máquina, por eso esta ahí esa función.

Habrán notado que el desarrollo del programa se puso entre { y }, es porque todo bloque de código va escrito en entre estos dos signos.

De esta pequeña biblia podemos sacar en limpio:
a) Un programa en C comienza incluyendo las bibliotecas que va a usar.
b) Un programa en C puede tener comentarios.
c) La función principal es el alma de un programa en C y la que describe todo su proceso principal.
d) Los bloque de código (conjunto de instrucciones) van entre { y }.

2.4- Los comentarios.

Los comentarios no son más que aclaraciones que escribimos en el código y las cuales, además, no se van a compilas. Sirven para dos motivos fundamentales. Uno, que otro entienda lo que queremos hacer con el programa (en ocasiones un código en un lenguaje que dominamos nos puede parecer a chino). Dos, orientarte tú mismo en tus propios códigos para hacer depuraciones de este o actualizarlo. Si eres como yo cuando empecé (en mis tiempos mozos :P), esto te parecerá una tontería ¿para qué gastar tiempo en algo que no sirve a la ejecución del programa?, yo aprendí por las malas, espero que tú no. Cuando llevas quinientas (o más) líneas de código, compilas y el programa te da un error como regalo, buscarlo y solucionarlo en ese tochazo son comentarios es una tortura que debería envidiar la Inquisición.

Un comentarios debe ser claro y proporcionar información sencilla, concreta y directa. En nuestro programa, el comentario no cumple ni una de estas funciones, pero si lo modificamos sólo  con leerlos los comentarios que escribiésemos sabríamos qué hace y cómo, pero eso lo harán ustedes en los ejercicios.

Un consejo, no esperes a haber terminado de escribir el código para ponerle comentarios, en uno de 20 líneas es irrelevante, pero hay que tener mucha fuerza de voluntad para revisar 1000 dos veces, una para escribirlo y otra para agregarle los comentarios, así que hazlo mientras programas.

Ahora, ¿cómo se escriben los comentarios?, simple entre /* y */. Todo lo que haya entre ellos dos no se ejecutará. No importa si el comentario ocupa más de una línea o si ponemos funciones dentro de él. Así que no quiero que me vengan con errores que consisten en haber escrito código del programa en un comentario, tengan en cuenta que una vez lo abren (escriben /*), este se extiende hasta que lo cerremos (escribamos */).

2.5- Bibliotecas

C usa bibliotecas. Estas son colecciones de funciones que nos sirven para utilizar código predefinido (como mostrar textos en pantalla, abrir archivos, emitir sonido...) que nos facilitan nuestro trabajo. Para poder usar estas funciones debemos llamar a la biblioteca como hicimos en nuestro programa. A medida que vaya avanzando y utilizando más y más funciones (como la ya probada printf) iré poniendo las bibliotecas a las que pertenecen, y al final daré las bibliotecas estándar. Quizá si me emociono (cosa muy probable) enseñe a leerlas y a crear nuestras propias bibliotecas.

Para usar una, sólo debemos poner al principio "#include" y entre los signos < y > el archivo de cabecera, que posee el mismo nombre que la biblioteca que vallamos a usar más la extensión .h, por ejemplo:

Citar#include <alloc.h>

2.6 Ejercicios

1- Modifica el primer programa que hicimos agregando comentarios suficientes a fin de que no se haga necesario leer el código fuente para entender el programa.

EL RETO

Cada capítulo pondré un ejercicio que supondría un "reto" para quien no ha dado nunca programación, en un principio serán fáciles pero con el paso de los temas se irán complicando. Eso sí, se pueden resolver con un poco de lógica, no hace falta ser un genio para solucionarlos.

El reto: Modifica el código fuente para que en vez de decir: "Este es mi primer programa" diga: "He modificado mi primer programa".

Gracias freyi *.*


Cita de: Gambit en 26 de Enero de 2010, 10:25
Follar cansa. Comprad una xbox 360, nunca le duele la cabeza, no discute, no hay que entenderla, la puedes compartir con tus amigos...

Blanquito

#6
Está de madre, aunque con alguna screen sería lo mejor, lo que te tiene que salir... porque yo no veo qué se puede hacer con eso. Amén de que me lo acabo de bajar(el dev-c++) he hecho eso y le doy a compilar y no pasa nada.

Una descarguita del programa, por si acaso, tampoco estaba mal.

Thylzos

Cita de: Blanquito en 23 de Junio de 2008, 22:24
Está de madre, aunque con alguna screen sería lo mejor, lo que te tiene que salir... porque yo no veo qué se puede hacer con eso. Amén de que me lo acabo de bajar(el dev-c++) he hecho eso y le doy a compilar y no pasa nada.

Una descarguita del programa, por si acaso, tampoco estaba mal.

¿A qué te refieres con no pasa nada?. Puse una screen de lo que tendría que dar el programa... ¿qué otras te parece que debería agregar?, gracias por los comentarios.

Gracias freyi *.*


Cita de: Gambit en 26 de Enero de 2010, 10:25
Follar cansa. Comprad una xbox 360, nunca le duele la cabeza, no discute, no hay que entenderla, la puedes compartir con tus amigos...

Blanquito

Perdona, es que la imagen no se me carga.

Thylzos

Cita de: Blanquito en 23 de Junio de 2008, 22:58
Perdona, es que la imagen no se me carga.

Ah, vale. En cuanto al error, ¿pudiste solucionarlo?, ¿qué exactamente lo que pasa?, ¿un error de compilación?, ¿se ve un pantallazo de conosla de MS-DOS y listo?

Gracias freyi *.*


Cita de: Gambit en 26 de Enero de 2010, 10:25
Follar cansa. Comprad una xbox 360, nunca le duele la cabeza, no discute, no hay que entenderla, la puedes compartir con tus amigos...

Últimos mensajes