Autor Tema: Que libro recomiendan para aprender a programar en C desde cero  (Leído 23285 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado juanes79

  • PIC10
  • *
  • Mensajes: 41
Que libro recomiendan para aprender a programar en C desde cero
« en: 25 de Enero de 2012, 00:54:09 »
Hola amigos, les cuento que quiero aprender a programar en C, pero soy principiante, es decir no se nada. que libro, curso en videotutorial o material que ustedes me recomienden para aprender a programar en este lenguaje.

Saludos y mil gracias por su ayuda.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
"Nada es imposible, no si puedes imaginarlo"

Desconectado Mati

  • PIC10
  • *
  • Mensajes: 13
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #2 en: 25 de Enero de 2012, 09:10:50 »
Hola amigos, les cuento que quiero aprender a programar en C, pero soy principiante, es decir no se nada. que libro, curso en videotutorial o material que ustedes me recomienden para aprender a programar en este lenguaje.

Saludos y mil gracias por su ayuda.

Hola Juanes!!!
Si te fijas en el sitio www.firtec.com.ar en la parte de biblioteca y herramientas hay apuntes sobre CCS, en el apartado Microchip hay un libro sobre C18 con muchos ejemplos, (ojo tienes que registrarte para poder bajarlo) lamentablemente es muy grande para colgarlo aca.

Suerte!!

  Matias

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #3 en: 25 de Enero de 2012, 10:24:21 »
Si quieres aprender C y de paso trabajar con microcontroladores, no te vas a quejar con este par de libros. Escoge el que te convenga según la arquitectura que quieras probar. Aunque nada te impide que utilices una buena parte del código en PIC18.

[Elsevier][Lucio Di Jasio] Programming 16-bit Microcontrollers in C. Learning to Fly the PIC24
[Elsevier][Lucio Di Jasio] Programming 32 Microcontrollers in C. Exploring the PIC32

Creo que los puedes comprar en Amazon, si no busca y verás como los encuentras en alguna librería on-line.

También te pueden server los libros de texto para C, siempre hay que tener a mano material de consulta. Pero programar en C para PC no es lo mismo que para microcontroladores, tampoco es que la diferencia sea abismal, pero los uC tienen sus requisitos específicos y normalmente las PC no tienen limitaciones.

Un saludo
Reinier

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #4 en: 25 de Enero de 2012, 12:09:12 »
Si eres principiante y no sabes nada... no comiences aprendiendo c
Te lo desaconsejo totalmente.
c es un lenguaje muy potente y quizás el más apropiado para microcontroladores, drivers, etc. Es un lenguaje imprescindible, pero es muy difícil para empezar y es complicado para aprender los conceptos básicos de programación.


Yo te recomendaría para empezar, que aprendas el lenguaje de programación Python.

El mejor libro para aprender en tu caso es un libro que enseña a programar con el lenguaje Python y también está 'traducido' al lenguaje c:

   'Aprende a pensar como un programador' Versión Python en español:
   http://books.openlibra.com/pdf/aprenda-a-pensar-como-un-programador-con-python.pdf

   Este libro no te enseña c ni te enseña Python, te enseña a programar y de paso aprendes un lenguaje.
   Te recomiendo que leas la introducción que habla de este tema.


   'How to Think Like a Computer Scientist' Versión C++ en inglés:
   http://greenteapress.com/thinkcpp/
   http://greenteapress.com/thinkcpp/thinkCScpp.pdf

   'How to Think Like a Computer Scientist' Versión Python en inglés:
   http://greenteapress.com/thinkpython/thinkpython.html
   http://greenteapress.com/thinkpython/thinkpython.pdf


Saludos
« Última modificación: 01 de Febrero de 2012, 19:34:54 por picuino »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #5 en: 25 de Enero de 2012, 13:11:54 »
Prólogo del libro:
Citar
Prefacio
Por Jeff Elkner

[...]
Dos años más tarde, me convencí de que C++ era una mala elección para iniciar
a los estudiantes en la informática. Aunque es un lenguaje de programación
muy poderoso, también es extremadamente difícil de aprender y enseñar. Me
encontré luchando constantemente con la difícil sintaxis de C++ y sus múltiples
formas de hacer las cosas, y como consecuencia perdía muchos estudiantes sin
necesidad. Convencido de que debía de haber una elección mejor para el lenguaje
de nuestro curso de primer año, me puse a buscar una alternativa para C++.

[...]

Pedí a uno de los estudiantes más talentosos de Yorktown, Matt Ahrens, que
probase Python. En dos meses, no sólo había aprendido el lenguaje, sino que
escribió una aplicación llamada pyTicket que permitía a nuestro personal infor-
mar de problemas tecnológicos via Web. Sabía que Matt no podía terminar una
aplicación de tal escala en tan poco tiempo con C++, y este logro, combinado
con la positiva valoración de Python por parte de Matt, sugería que Python era
la solución que buscaba.


Yo aprendí basic, luego código máquina, después Pascal, luego C, y varios lenguajes más tarde llegué al Python.
Ojalá hubiera llegado mucho antes...


Por cierto, Python es open source (gratuito),  igual que los libros que te he recomendado.
Si sigues mi consejo, en pocos meses podrás acercarte al C con una visión muy diferente de lo que puede llegar a hacer un ordenador programado por ti.

Saludos.
« Última modificación: 25 de Enero de 2012, 13:15:17 por picuino »

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #6 en: 25 de Enero de 2012, 16:58:40 »
Desde mi visión de profesor y mi propia experiencia que va de programar en varios lenguajes, incluyendo al menos tres ensambladores, G, ladder, etc. El lenguaje no es lo que determina si una persona es capaz o no de programar.

En particular C no es lo que pudiese llamarse un lenguaje difícil, es que muchos programadores de payasos más que otra cosa suelen escribir código en C que ni ellos mismos luego entienden.

Los lenguajes son simplemente el conjunto de palabras y expresiones (gramática) que permiten que uno exprese ideas o le indique a la computadora que haga cosas. Claro que muchos lenguajes se han orientado hacia expresar ideas complejas de una forma más manejable como los lenguajes orientados a objetos. Otros se han enfocado en la usabilidad máxima de un enorme conjunto de librerías y objetos que cada vez se vuelven más y más extensos.

Sin querer restar importancia al lenguaje que alguien decida utilizar para aprender a programar en mi opinión lo que al final pesa sobre todas las cosas son las habilidades para manejar los principios básicos de la programación, he aquí algunos:


* Pensamiento lógico básico (operaciones básicas sobre conjuntos)
* Sentido de la lógica secuencial (¿qué va primero?, y ¿después de lo primero qué es lo segundo? ...)
* Sentido de la concurrencia (si existe en la aplicación)
* Capacidad para determinar sobre la recursión y las desiciones (estructuras de control de flujo)
* Capacidad de abstracción (los lenguajes orientados a objetos se sustentan en este principio)
* Capacidad para reutilizar el código (mucho lenguajes hacen fuerte énfasis en este principio, pero existe desde hace mucho)

He visto y he tenido a muchos estudiantes que son incapaces de programar algo simplemente porque les enseñaron muchos lenguajes pero nunca les enseñaron que la programación es primero un proceso cognositivo-inductivo-deductivo en el que uno no hace nada más que crear un modelo abstracto del mundo real que luego debe ser capaz de implementar al redactar una composición en ese "maldito lenguaje de programación"

Ahora ¿qué lenguaje uno debe estudiar?
Eso depende de muchas cosas.

De lo que uno vaya a hacer, por ejemplo. Si uno va a trabajar en una aplicación de base de datos, debería que aprender SQL. Si vas a crear aplicaciones de tiempo real para la industria aeroespacial probablemente tengas que programar en Ada. Si vas a la web, bueno allí hay miles de lenguajes (HTML, ASP, PHP, Perl, etc). Si te toca trabajar en sistemas empotrados con FPGA, no hay remedio VHDL, Verilog o SystemC.

¿Tienes mucho o poco tiempo? El tiempo es siempre un recurso preciado, así que hay que pensar en ello antes que nada.

¿Se aprende a programar en un lenguaje en una semana? No, sin importar lo que digan los libros con título ¡Aprenda xxx en 21 días! no lo crea, es imposible aprender a programar en tan poco tiempo. A no ser que usted ya sepa programar, no aprenderá un nuevo lenguaje en tan poco tiempo. Aprender a programar es una habilidad, no es un conocimiento que usted puede adquirir. Las habilidades no se desarrollan sino con la experiencia.

Una vez adquirida la habilidad se puede programar en cualquier lenguaje. Yo mismo por ejemplo he programado en más de 10 lenguajes diferentes, he programado por más de 12 años y aún considero que mis habilidades están un poco verdes en algunos aspectos. Si me paso dos meses sin escribir código en C, lo primero que hago antes de comenzar es dar un vistazo al tema de los punteros y a otras yerbas que uno debe tener claro antes de volver a leer C. Actualmente tengo que aprender XML, XLS, XST y que se yo cuantas cosas más que vienen en el paquete de XML, para poder escribir un módulo que tome un fichero en XML y a partir de los datos allí contenidos genere código en C para una aplicación que se desarrollará en FreeRTOS. Ya le eché un vistazo a XML y sus anexos y no será muy fácil, pero es más de lo mismo.

En mi opinión, juanes79 debería primero valorar que es lo que va a hacer e investigar un poco más que lenguaje le conviene. Pero si pretende aprender a programar para meterle código a los PICS, Phyton no es la opción apropiada, no creo que exista un compilador cruzado de Phyton para PICs.

Un saludo
Reinier

« Última modificación: 25 de Enero de 2012, 17:10:02 por reiniertl »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #7 en: 25 de Enero de 2012, 18:11:50 »
Python no sirve para programar PICs, ni para programar ningún microcontrolador, que yo sepa.
Tampoco se puede compilar (es imposible, sólo puede ser interpretado)

Python me sirvió a mí para aprender listas y programacion funcional, que tampoco suele utilizarse en los microcontroladores.

Pero creo que Python puede servir para aprender a programar, eso que reiniertl dice que es lo primero y más importante (pensamiento lógico, lógica secuencial, etc)
Python es muy rápido porque no se compila (se interpreta) y es muy flexible y sencillisimo de entender. De esa manera uno no se pelea con la sintaxis del lenguaje, sino con los principios de la programación.
Un elemento que me encanta de Python para los principiantes es que OBLIGA a realizar sangrías.
Otro aspecto muy interesante del lenguaje para los principiantes es que te dice exactamente dónde está el error y en qué consiste cuando se para.
Muchas distribuciones Linux traen Python por defecto ya instalado y esto no ocurre con muchos otros lenguajes (por algo será). Es un lenguaje open-source con muchísima documentación, también en Español.
La ayuda incluida en el interprete es fantástica (con tutorial incluido) y la comunidad Python ofrece mucha ayuda en sus foros.

En la práctica puede que se hagan pocas cosas conocidas en Python, pero creo que con él se puede aprender más facilmente a programar y luego, como dice reiniertl, una vez adquirida la habilidad se puede programar en cualquier lenguaje.

Con Python no vas a aprender a programar más rápido que con otros lenguajes, pero el lenguaje no te va a poner trabas añadidas a la ya dificil tarea.
 

En mi caso, no aprendí verdadera programación estructurada y la importancia de estructurar también los datos hasta que no aprendí a programar en pascal.
El basic (mi primer lenguaje) es tan pobre y es tan enrevesado realizar cosas un poco complejas, que no se lo recomiendo a nadie para aprender a programar. A mi el basic me llenó la cabeza de código espaguetti que me costó tiempo cambiar, gracias a aprender otros lenguajes.


Saludos
« Última modificación: 25 de Enero de 2012, 18:27:06 por picuino »

Desconectado microlatina

  • PIC10
  • *
  • Mensajes: 1
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #8 en: 29 de Septiembre de 2014, 11:14:18 »
El lenguaje C fue diseñado por un grupo de personas de la firma Bell Labs, encabezados por Brian Kernighan, Denis Ritchie, Bob Pike, y varios más, casi todos docentes Universitarios y figuras trascendentes del mundo de la computación. Es un lenguaje de medio nivel en el sentido que se ubica en el centro del control, manteniendo la economía y velocidad del assembler y sin el despilfarro despiadado del alto nivel de un Basic tradicional de Darmouth, en donde una variable de un byte y una de punto flotante ocupan las mismas celdas de memoria, con la lentitud de un lenguaje interpretado por línea.

El lenguaje C es el padre de todos sus sucesores, incluyendo C++, C#, Python, Java, y en general de todos los lenguajes denominados "estructurados", es decir que se manejan con los bloques de sentencias que definen lo que un programador hace todo el tiempo, como loops  controlados, decrementos, incrementos, comparaciones lógicas y aritméticas, etc. Todos los lenguajes que aprendieron de este gran maestro tienen su olfato parecido por lo que aprender C significa una suave transición para cualquier programador. En mi opinión es el lenguaje ideal para programar microprocesadores, desde los más pequeños hasta los más importantes. En su libro, The C programming languaje, Kernighan advierte que seguramente los que lo sucedan mejorarán su lenguaje y lo llevarán a ser óptimo, lo cual ocurrió en los hechos.

El lenguaje es pequeño, compacto, fácil de aprender y de usar, y permite programar de manera ordenada permitiendo al programador acumular sus horas de trabajo y llevarlas de proyecto en proyecto sin tener que reinventar cada vez el mismo código una y otra ves. Pero lo más importante a mi juicio, es la portabilidad. Esto significa que el mismo código, si está escrito correctamente, se transporta directamente a cualquier compilador, plataforma o sistema operativo sin tocar el código original. A lo sumo se retoca aquello que tiene que ver con la relación con el hardware del más bajo nivel en una capa que se denomina "capa de abstraccion de hardware" o HAL.

En C se manejan 4 tipos de datos sólamente: char, int, long y double. Adicionalmente la mayoría de los buenos compiladores ANSI C manejan bits y campos de bits con facilidad. Las estructuras son simples y poderosas, while, for, if, do, switch y resumen todo lo que un programador necesita para hacer buen software. Casi todos los buenos compiladores optimizan el código al punto que escribiendo distinto código equivalente en C, produce el mejor código optimizado en assembler o lenguaje objeto.

Aconsejo a todos que el libro de Kernighan es lo único necesario para aprender el lenguaje. Todo está allí. Muchas veces observo que la impaciencia propia de los que se inician no les permite leer los párrafos tan cortos y amenos del libro que está lleno de información cada 2 ó 3 líneas y muchas veces se la pierden. Especialmente recomiendo enfáticamente el capítulo 2 (Tipos, operadores y expresiones) que es el secreto del lenguaje.

Para los residentes en Argentina, quisiera comentar que enseño a diseñar sistemas basados en microprocesadores desde hace más de 30 años, hardware y software sobre lo que considero la línea más fina de procesadores de 8 bits del mundo: Freescale / Motorola. La relación precio - prestación así como la información técnica y la calidad de los productos es imbatible. Respeto a todas la demás marcas y he trabajado y diseñado con todas ellas. Todas son buenas,  pero no he encontrado la sensación de seguridad y comodidad de Freescale.

No dicto seminarios cortos ni enseño a encender lamparitas, sólo comienzo desde lo más elemental para un estudiante o un hobbysta y lo llevo al nivel profesional. Mi capacitación también la brindo por Skype hacia el interior y el exterior.

Si estuvieren interesados en contactar conmigo, les recomiendo ver estos videos, y estoy a sus órdenes inclusive en el foro para cualquier consulta.


Cordiales saludos

Roberto Berner
Microlatina

[/b][/font][/font][/font][/color]





Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #9 en: 04 de Octubre de 2014, 05:21:21 »
Hola, yo me me metí a aprender programación de microcontroladores si que nadie me ayudara, sin profesores ni clases ni nada, empecé por pura iniciativa, porque siendo electrónico de profesión me faltaba esa parte de la electrónica que cuando estudiaba la dimos muy por encima.

pregunté a entendidos en la materia y me recomendaron dos libros.

el primero que se utiliza en los institutos es:
"Guía de autoenseñanza" por Herbert Schildt de la editorial Mc Graw Hill.

éste libro es muy bueno, te explica todo de una manera muy básica con muchos ejemplos, si he de decir que hay soluciones a ejemplos que están mal, tiene errores de sintaxis que te pierden un poco pero no son muchos y la explicaciones se entienden muy bien

el segundo que me recomendaron:
"El lenguaje de programación C" por Brian W. Kernighan, Dennis M. Ritchie de la editorial Pearson Prentice Hall

este es un poco más complicado de entender que el anterior, se extienden menos en las explicaciones, tienen muchos ejemplos pero algunos son un poco enrevesados, como para gente con un cierto nivel pero como complemento del anterior es fantástico.

Y el que he utilizado para aprender a programar C en microcontroladores es:
"Compilador C CCS y simulador proteus para microcontroladores PIC 2ª edición" por Eduardo García Breijo, de la editorial marcombo.

con éste libro es cuando aprendía la programación de microcontroladores pic, programar para pic es diferente a programar para pc, utilizan el mismo lenguaje pero el de los pic tienen particularidades que lo hacen diferente y hasta el mismo lenguaje difiere un poco.

Una vez se tenga una base, la mejor manera de aprender es viendo código ya hecho y programando tus ideas, cometiendo errores y preguntando en este foro (por ejemplo)

espero te haya servido
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #10 en: 05 de Octubre de 2014, 20:05:07 »
Supongo que buscas algo específico para microcontroladores?

Depende que bases tengas, si ya sabes programar en ASM no te va a ser dificil arrancar en C, tienes que saber lo básico y luego consultar ejemplos.

Yo veo mucho como estan hechos otros programillas y los adapto a mis necesitades, por ejemplo los que trae el framework de microchip.

Tambien me parece buenas las guias Teach Yourself C in 21 days o Teach Yourself C in 24 hours.



Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #11 en: 06 de Octubre de 2014, 09:36:38 »
Yo te recomiendo los videotutoriales, por youtube hay muchos, suele ser mucho mas rapido y sencillo, en los libros muchas veces si no hay alguien que te apoye puede que te resulte mas complicado.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #12 en: 06 de Octubre de 2014, 09:56:49 »
Para empezar desde cero con microcontroladores y lenguaje C, la plataforma Arduíno es un buen comienzo.
Hay muchos tutoriales y ejemplos en la red.

Saludos.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Que libro recomiendan para aprender a programar en C desde cero
« Respuesta #13 en: 06 de Octubre de 2014, 10:11:17 »


Para empezar de cero, un libro sencillo pero muy completo es el de Nigel Gardner (An introduction to Programing the Microchip PIC in C), con ese creo que empecé yo, y aún lo consulto cuando tengo dudas, es casi más una guía rápida con ejemplos, que un tutorial largo y farragoso de leer, como ocurre con otros libros o cursos online. Para los que nos gusta ir al grano sin adornos ni pérdidas de tiempo es ideal. Otro más avanzado puede ser el de Lucio di Jasio, pero ya es más pesado de leer.