necesito informacion

Iniciado por puchi, 12 Diciembre 2016, 23:24 PM

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

puchi

Buenas tardes,

Como veréis me gusta bastante el lenguaje C, pero no consigo encontrar información y libros para programación C avanzado en español.

A lo máximo que he llegado con C es manejar ficheros y memorias,  y me gustaría a profundizar mucho más en C pero no se como.

Gracias, espero poder recibir ayuda.

engel lex

primero que nada, te recomiendo migrar a C++ a menos que estés pensando hacer aplicaciones especificas, de todas formas si aprendes bien C++ y necesitas hacer algo en C, solo tienes que declarar las estructuras "a mano"

segundo... si, se que es un foro de habla hispana... pero sin aprender a leer inglés, estás limitado en el mundo de la informática... normalmente los papers importantes y muchos ensayos (de todo el mundo, incluyendo paises hispanohablantes) están en inglés por cosas de comodidad

ve si este te sirve

http://www.freelibros.org/programacion/el-lenguaje-de-programacion-c-plus-plus.html
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

puchi

Básicamente lo que quiero aprender por ahora es utilizar C en lugar de los scripts de linux, por eso no sabia por donde empezar.
Ya que en muchos sitios me dicen emplea la función system();
Pero lo que realmente necesito es manejar el hardware del pc mediante C sin necesidad de embeber script dentro de C, no se si me explico.

Por otro lado y perdón por ser ignorante en el tema de C++, tengo entendido que se utiliza para programación orientada a objetos, pero realmente no entiendo la diferencia entre C y C++.

engel lex

Cita de: puchi en 12 Diciembre 2016, 23:36 PM
pero realmente no entiendo la diferencia entre C y C++.


ya lo dijiste... C++ soporta "objetos" que son estructuras complejas que facilitan muchisimo la vida, los objetos te "alejan" un poco de la ram y el manejo a mano de memoria, pero por la forma como se compilan, pueden dejar un codigo más eficiente... por otro lado trae muchas librerías que facilitan muchas tareas como manejo de strings


CitarPero lo que realmente necesito es manejar el hardware del pc mediante C

depende de que hardware, significa que lo que estás escribiendo es un driver y no es nada facil...

si estás usando system(), es porque estás usando tu programa para llamar a consola, para llamar a otro programa...

dame un ejemplo donde requieras system() para ver que estás haciendo
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

MAFUS

Si vas a meterte a programar para Linux te recomiendo el libro The Linux Programming Interface.

C es solo una herramienta y hay que aprender otras técnicas para usarla bien. Este libro es bastante bueno: http://www.lcc.uma.es/~av/Libro/

Por otra parte C puede hacer muchas cosas que de primeras no cabría esperar. En inglés. Metaprogramación: http://www.chiark.greenend.org.uk/~sgtatham/mp/

puchi

el ejemplo seria en el caso de querer encender o apagar el wifi del ordenador que si estubieramos en la consola de linux escribimos:

sudo ifconfig wlan0 up
si esto lo guardamos en un fichero.sh

Y entonces desde C podríamos ejecutar el siguiente código utilizando system("fichero.sh");

Entonces se plantea mi duda, es posible activar la tarjeta wireless sin utilizar código script, solo utilizando C.

engel lex

#6
te advierto... normalmente eso es mejor hacerlo por system para que el sistema operativo lo controle apropiadamente, sin embargo, casi todo loq ue está el linux es codigo libre, basta con buscar "source code of" y el programa (en este caso ifconfig)

aquí está ifconfig.c, así es por dentro
https://github.com/giftnuss/net-tools/blob/master/ifconfig.c

si vas al nivel anterior verás la carpeta con las herramientas que usa el OS para manejar la red, junto con su makefile para compilar
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

puchi

#7
Después de ver el código parece ser bastante complicado.
Tendré que aprender antes leyendo libros para poder adentrarme a tocar cosillas pequeñas del código de ifconfig.

Encontré este libro http://www.casadellibro.com/libro-unix-programacion-avanzada-3-ed/9788478976034/966894, pero no se si me servira para Linux ya que menciona UNIX.

Por curiosidad , desde system(); es posible recibir variables?
por si ejecuto un script y quiero que este me devuelva un valor como se recogería este desde C.

Borito30

Cita de: engel lex en 12 Diciembre 2016, 23:57 PM
te advierto... normalmente eso es mejor hacerlo por system para que el sistema operativo lo controle apropiadamente, sin embargo, casi todo loq ue está el linux es codigo libre, basta con buscar "source code of" y el programa (en este caso ifconfig)

aquí está ifconfig.c, así es por dentro
https://github.com/giftnuss/net-tools/blob/master/ifconfig.c

si vas al nivel anterior verás la carpeta con las herramientas que usa el OS para manejar la red, junto con su makefile para compilar

En este caso ifconfig esta compilado solamente en c puro? sin usar c++?
Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)

engel lex

si, linux a nivel e nucleo y en casi todas sus herramientas comunes está en C por razones de eficiencia y manejo optimo de la memoria... allí es que entra el poder de C
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.