Discusión:Programación en C

Contenido de la página no disponible en otros idiomas.
De Wikilibros, la colección de libros de texto de contenido libre.

Resumen[editar]

Resumen de las discusiones en curso y de las anteriores y las conclusiones a las que se llegó. Las discusiones antiguas o no relevantes se han movido a Discusión:Programación_en_C/Archivo_1.

  • Hacer referencia a Fundamentos de programación y no repetirnos. Decidido.
  • Formato: el autor original usaba tags code y font color a mano. Hoy existe el tag source y es preferible utilizarlo para obtener homogeneidad. Sin objeciones
  • EN CURSO: Definir alcance y estructura del libro.

Pendientes[editar]

  1. Hacer una página que explique el estilo y formato a usar.
  2. Actualizar enlaces que digan (fundamentos), por que se cambio el nombre.
  3. Asegurarse que Fundamentos de programación tenga lo que necesitamos, hoy por hoy está bastante pobre.
  4. Unificar estilos de los ejemplos (o to' toro o to' vaca), hay ejemplos con colores, sin colores, con marcos, sin marcos, etc. UN SOLO ESTILO. por favor !!
  5. Arreglar los links de los temas de las diferentes paginas, algunos links del indice no coinciden con los subtemas de las diferentes secciones.
  6. Escribir las secciones que faltan, "Manejo dinámico de memoria" y "Manejo de errores"
  7. Hay algunas secciones que no tienen link de "Tema siguiente" y "Tema anterior"
  8. Cubrir temas que faltan como "Librerias dinamicas" y una que otra utilidad para hacer mas atractivo el libro, librerías como "curses", talvez "GTK" o alguna base de datos "MySql" ?? el libro se volvería mas interesante y mas llamativo.
  9. Hacerle promoción al libro para los colegas dejen de duplicar esfuerzos y nos ayuden a mejorar este libro. Aqui hay dos ejemplos de esfuerzos duplicados http://profeblog.es/blog/alfredo/curso-de-programacion-en-c/ y http://www.elrincondelc.com/

Aquí hay un link interesante de un par de cosas que sería interesante tener en cuenta para este libro http://www.shamusyoung.com/twentysidedtale/?p=12271


Agregue un par de cosas que me parecen importantes, espero que estén de acuerdo. Si no, ya saben discutimos, que piensan (el historial para revertir). ----Pablo Alcantara 15:50 9 jun 2010 (UTC)[responder]

Lineamientos[editar]

  • El texto está en el español de es.wiki*.org, Esto quiere decir con el correcto uso de acentos, verbos y términos del lenguaje y ante un uso conflictivo de los términos se usará el adoptado por es.wikipedia.org (por ejemplo, Arreglo, Tabla, Vector)
  • El código está en C99, con más de 10 años de publicado el estándar ISO corresponde centrarnos en este, sobre todo donde cuando el uso de este aumenta la legibilidad
  • Todo buen ejemplo debe ser elegante, de esta forma estamos dando buenas pautas de programación a la vez que se enseña el lenguaje

Si alguno de estos lineamientos genera disputa, por favor iniciá la discusión en la sección de discusiones. Una vez que se haya logrado el consenso, se lo puede agregar a los lineamientos.

Discusiones[editar]

Estructura principal del libro[editar]

Esto es un bosquejo de lo que se debería cubrir con un orden propuesto. En principio el énfasis está puesto en que los temas se vean en un orden didáctico y la referencia cubriría los otros usos. Seguramente faltan temas y hay cosas que se deben dar en otro orden.

  • Prólogo. Temas a cubrir:
    • Referencias a otros libros
    • Pedidos de contribución
  • Introducción. Temas a cubrir:
    • Para qué sirve C
    • Historia del lenguaje.
    • Impacto e Importancia
  • Introducción al lenguaje.
    • Ejemplos seguidos paso a paso
    • Comentarios
    • Uso básico de printf()
  • Tipos de datos básicos
    • Enteros (short, int, long, long long)
      • modificadores signed, unsigned (en lo posible sólo un link a la referencia)
    • Reales (float, double)
    • operadores y asignaciones (sólo ejemplos, no referencia)
    • Otros tipos: bool, char, complex y wchar
  • Estructuras de control
    • if..else
      • operaciones condicionales
    • switch
    • while y do..while
    • for
    • continue y break
  • Funciones
    • Parámetros por valor
    • Alcance de variables
    • Retorno de una función
    • Declaración y definición
  • Vectores
    • Uso en ejemplos
    • Uso de vectores en funciones
    • Vectores de más de una dimensión
  • Cadenas
    • Ejemplos
    • Uso de string.h'
    • Comentarios sobre unicode, locale y wchar.
  • Punteros
    • Referencias y punteros, &, * y []
    • Aritmética de punteros
    • Uso de punteros con vectores
      • Punteros a char y cadenas
    • Punteros a funciones
  • Entrada y Salida
    • Interacción con la consola, printf, scanf, getchar y familia
    • Uso de stderr
  • Archivos
    • fopen, fread, fwrite, fscanf
    • stdin, stdout y stderr cómo archivos
  • Estructuras
    • Struct y Union
    • Ejemplos
  • Memoria dinámica
    • Heap y Stack
    • malloc y free
    • algo de TDAs en C
  • Apéndices
    • Referencia del lenguaje
    • Referencia de la biblioteca estándar

De modificar la estructura principal del libro, por favor, asegurarse de agregar o actualizar tu firma.

--Maxy (discusión) 16:13 5 jul 2009 (UTC)[responder]

Cambié algunas cosas. Creo que sería esencial contar con una referencia completa, de modo que en el texto puedan ponerse enlaces a la referencia, y que así quede más didáctico.

Margamanterola (discusión) 17:17 5 jul 2009 (UTC)[responder]

Otra sugerencia para la estructura[editar]

El libro actual, en sus objetivos, plantea que es un libro tanto para principiantes como para avanzados. Esto es un híbrido que no es fácil de lograr, y que desde mi punto de vista no lo está logrando para nada. Actualmente tenemos un engendro que no funciona.

Por eso, estuve pensando cómo hacer que sea realmente un libro para todos y que resulte realmente útil, y lo que se me ocurrió es que tenga una parte en la que se enseñe a programar didácticamente y otra parte en la que haya una referencia completa. Posteriormente podría haber una o más partes en la que se muestren ejemplos más avanzados.

  • Prólogo / Introducción / Historia
  • Parte I: Aprendiendo a programar en C
    • Primer programa en C.
    • Comentarios.
    • Uso básico de printf.
    • Tipos de datos (introducción somera).
    • Estructuras de control (una por una con varios ejemplos de cada una).
    • ... etc ...
  • Parte II: El lenguaje de programación C
    • Tipos de datos (referencia completa).
    • Estructuras de control (referencia de completa sintaxis, sin ejemplos, sólo enlaces a los ejemplos de la Parte I).
    • Referencia completa de printf y scanf.
    • ... etc ...
  • Parte III: Estructuras de datos
    • Listas enlazadas, Pilas, Colas, Árboles, etc.
  • Parte IV: Algoritmos de ordenamiento
    • Quicksort, mergesort, etc.

De esta forma, en la Parte I podría haber mucho más texto didáctico sobre buenas prácticas de programación y una gran abundancia de ejemplos, que sirven para los principiantes, y enlaces a la referencia para los detalles que se omiten. Y en la Parte II poner la referencia de sintaxis de cada tema, con enlaces a los ejemplos de la Parte I para quien los necesite.

Me parece que de esta manera por un lado el libro puede realmente servir para principiantes y avanzados, y que puede convertirse en una fuente útil de información. Ya que cada persona puede empezar a leerlo por donde le parezca apropiado, pero al tener enlaces para un lado y para otro, puede continuar leyendo donde le haga falta.

Si les parece bien la idea, yo podría ir encargándome de separar lo que ya está, creando las páginas en las partes I y II según corresponda.

Margamanterola (discusión) 21:03 6 jul 2009 (UTC)[responder]

Me gusta la idea, pero hay que tener en cuenta que es un arma de doble filo. Si bien tiene bastante sentido ordenar el texto actual entre los que son didácticos para principiantes y los que apuntan a quienes ya saben programar, me asusta un poco que serían dos libros (muy relacionados, pero dos libros al fin) y por otro lado no estoy del todo de acuerdo con aprender a programar desde cero en C, pero, en la práctica, no se puede saber cuanto sabe el lector por lo que uno termina asumiendo que sabe muy poco. Tener separadas las partes, por otro lado, puede ayudar a la organización de las contribuciones, a la vez puede generar muchas duplicaciones y puede que el mantenimiento sea más alto. La segunda parte debería ser legible de forma lineal, no solo una referencia, sino que asume que el lector conoce los conceptos de la primera parte de otro lenguaje (en otro lenguaje estructurado o orientado a objetos). Con respecto a las partes III y IV me parece que corresponderían a otro libro de Estructuras de Datos, Diseño de programas y Algoritmos. Es poco deseable decidir si queremos incluir esos tema o no ahora. En definitiva, creo que esta estructura le puede dar un buen libro lineal a los principiantes, un buen libro lineal a quienes quieren aprender el lenguaje como segundo lenguaje y una buena referencia para el lector casual. ¿Cuándo empezás? --Maxy (discusión) 21:14 7 jul 2009 (UTC)[responder]
Me gusta la idea anterior de Maxy pues señorita Margamanterola parece que serian dos libros como dice Maxy y no nos enfocaremos en dos libros la verda ya existes un esbos de Estructuras de datos dinámicas donde pretendemos tocar los temas de Listas enlazadas, Pilas, Colas, Árboles, etc. y Algoritmos de ordenamiento por cierto me preguntaba si stdin, stdout y stderr cómo archivos no se trata de archivos en C++ y ya que este manual es de C y no de C++ no deberian ir en este manual, por el momento me concentrare en punteros que es lo mas importante que se debe ampliar. --Zerohours (discusión) 18:04 8 jul 2009 (UTC)[responder]
Dos comentarios: stdin, stdout y stderr son archivos que están presentes en todos los programas en C, son los file descriptors 0, 1 y 2 respectivamente y en sistemas POSIX son parte de todos los programas (Unix, Linux, Windows y MacOS cumplen con esto). El otro comentario es que los dos libros que propone Marga son uno para aprender a programar usando C, y otro para aprender C y buena programación, que serían las dos primeras secciones que propuso (digamos, unos se enfocaría en C cómo primer lenguaje y el otro en C cómo segundo lenguaje), las siguientes secciones no irían, por lo menos no hasta terminar las primeras 2. --Maxy (discusión) 14:21 11 jul 2009 (UTC)[responder]

Temas Varios[editar]

Me siento muy feliz porque alguien este haciendo esto. Hace mucho tiempo que estoy pensando que los manuales que existen gratuitos online son un poco limitados. Me gustaría contribuir con este libro, y pienso que puedo aportarle unas cuantas cositas. Tengo unos cuantos datos sobre apuntadores y ciertos temas que podría desarrollar para el libro como son:

  • Punteros (una de las fortalezas del lenguaje c no se debe quedar en ningún libro o tutorial).
  • Estructuras y Uniones (struct y union tambien muy importantes).
  • Las directivas del lenguaje (el #ifdefine, #define,...).
  • Creación de macros (con las mismas directivas).
  • El manejo de los números del lenguaje C (como funcionan los enteros, los numero flotantes).
  • Manejo de archivos.
  • Uso de arreglos.
  • Algunos detalles de condiciones como la cuestión de los cortos circuitos.
  • Uso de funciones Matemáticas. (ya saben el Math.h)

Hay otros temas que tal vez seria importante tenerlos, y de los cuales yo no se nada, pero estoy dispuesto a investigar.

  • Creación de librerías
  • Lenguajes embebidos (por lo menos assembler, aunque también esta python y otros)
  • Interfaces graficas

Bueno la verdad que no se hasta donde están dispuestos a llegar (me refiero a que en los objetivos dice que es como un manual para empezar desde 0) pero yo creo que se pueden agregar muchos temas avanzados sin que las personas que están aprendiendo se sientan agobiadas. Tal vez seria una cuestión de Organización.

En mi opinión lo primero que hay que hacer es definir lo mejor posible lo que se pretende con este proyecto y agregar todos los temas que se pretenden desarrollar, con un orden temático. La organización es la clave, de eso estoy seguro.

Estoy de acuerdo con todo lo que dices y aunque abandoné este libro por falta de tiempo y ganas, si te pones a corregirlo y ampliarlo yo te puedo ayudar con las dudas que tengas y aportando material. -- Almorca (discusión) 18:45 11 ago, 2005 (UTC)
C es un lenguaje de programación con un estandar ISO, centremonos en mostrar esa parte del lenguaje, todo lo demás son bibliotecas. --Maxy 23:41 23 jun 2009 (UTC)[responder]

Organizacion[editar]

Ok pienso que el manual va avanzando pero que estamos perdiendo fuerza en especial de mi parte. Para que el proyecto de este libro no se pierda y podamos llevarlo a algo util es necesario trazar un plan trazar metas y objetivos y pasos que vamos a seguir para llevarlos a cabo. La mas importante creo que es la organizacion.

En mi opinion debemos seguir los siguientes pasos para terminar el proyecto y para que el libro empiece a ser util:

  1. Agregar temas que hagan falta al indice en el orden correcto, segun la complejidad y la dependencia de los temas, de lo mas simple que dependa de menos conceptos, a lo mas complicado que dependa de los conceptos que ya se han explicado. (Alguien con experiencia que por favor revise los temas y corrija el orden).
  2. Mover el contenido de las secciones repetidas, o mal ubicadas a las secciones correspondientes.
  3. Agregar contenido a los temas del indice, tratando de que sean ideas claras, sin salir del tema, y sin abusar en las explicaciones. Si luego es necesario una seccion con un nivel mas avanzado para explicar con mayor profundidad siempre se puede hacer.
  4. Revisar el material Escrito para asegurar su calidad.
  5. Publicidad para nuestro querido libro, avisenle a sus profesores y a sus amigos acerca de wikipedia que todo el mundo se entere !!

Niveles de desarrollo[editar]

Creo que deberiamos enfocarnos en hacer el nivel de desarrollo por capitulos para ir terminando secciones, asi sabremos que sección se ha terminado ya con ejemplos y referencias para ir terminando poco a poco.

--Zerohours 18:08 22 jun 2009 (UTC)[responder]


Uso del término biblioteca[editar]

Yo propongo cambiar el nombre de librerias y funciones por bibliotecas y funciones que me parece que es mas comprensible tanto para la gente como para un programador, y tambien porque he oido que libreria esta mal traducida de la palabra library en ingles --anonymous (discusión) 02:23 2 jul 2009 (UTC)[responder]

Por favor, mantené el contenido de esta página lo más ordenado posible. En efecto, en wikipedia se decidió usar el término Biblioteca, por lo que deberíamos usar este. --Maxy (discusión) 14:53 5 jul 2009 (UTC)[responder]

En mi opinion tambien me parece que se debe usar el termino biblioteca, que es la traduccion apropiada de library, como mencionais, yo desde que comence a programar en C las llamo bibliotecas y no lirerias, y todas las bibliotecas que he programado las considero bibliotecas, no librerias. Dado que libreria es un termino incorrecto por una mala traduccion me parece que es algo que debe empezar a enmendarse llamandolas bibliotecas, y sobretodo en un libro de programacion.--85.53.67.235 19:49 22 oct 2009 (UTC)[responder]

creo que han añadido mucho de como programar pero hasta ahora no veo en donde programar yo soy estudiante de 1º ciclo de ingeniería informática y eso también es muy importante --Junior.Juarez 20:55 19 jul 2011 (UTC)[responder]