¿Se puede entrenar el razonamiento lógico y la abstracción aunque no se te de bien? Programar y eso.

Hola, bueno, yo pregunto esto porque estoy planteándome seriamente hacer un módulo de desarrollo de aplicaciones web (ya empecé un módulo de programación hace 10 años y lo tuve que dejar a los 3 meses por problemas personales), porque me cabrea mucho esto de tener un BUP y un COU sin carrera, que es casi como no tener nada. Pero lo que más me tira para atrás a la hora de hacer ese módulo es que soy un negado para las Ciencias en general.

Me costó horrores sacar las matemáticas y física en BUP, digamos que me cuesta el doble que al resto para conseguir la mitad; sin embargo, en tema Letras es al contrario. Todo lo que sea Literatura, Historia, Idiomas (inglés y alemán al menos), escritura creativa, Filosofía, se me dan de puta madre. Ahí con la mitad de esfuerzo conseguía el doble que los demás. Las excepciones a esto son el Latín o la asignatura de Lengua, precisamente porque se estudiaban de un modo bastante más científico (analizar sintaxis, etc.).

El tema es que yo sé, que sin capacidad de abstracción o lógica, lo tengo jodido para la programación, claro, y me preguntaba si los que sabéis del tema, creéis que es una capacidad desarrollable, sobre todo cuando eres ya adulto. Lo digo para no empezar algo a lo bobo que uno ya tiene 35 años (evidentemente, estudiar alguna Filología o Historia ni me lo planteo).

Estoy probando a aprender algo de c++ de manera autodidacta (llevo dos días [tomaaa] ), y debo decir que programar, como me pasaba con las matemáticas, cuando me sale, me gusta; pero cuando no, lo odio "por no tener lógica" (aunque sé de sobra que el problema lo tengo yo por no verla [carcajad] ). Y tengo de hecho los mismos problemas que cuando estudiaba mates: incapacidad para resolver un problema o de abstraer patrones que me ayuden a resolverlo.

Y si tengo ahora problemas para entender el por qué de una mierdilla de código que haga una suma o una resta y la muestre en pantalla (o por qué no es tan fácil como cambiar el + por el - para que cambie la operación de suma por resta o cosas así), pues no quiero imaginarlo el día que tuviera miles de líneas delante...

Y como encima sean ejercicios tipo calcular areas o un rollo demasiado matemático, huyo...

Además que, de nuevo como con las mates. no entiendo ni papa del puto argot. ¿Qué coño es eso de devolver un valor a la función? ¿Para qué? ¿Para qué hay que decirle al programa que la compilación ha sido exitosa (o algo así) con eso del return 0? ¿Es que si está mal no da ya él solito el fallo al compilar? ¿Y si le devuelvo otro valor que no sea 0, se queda con las vueltas o cómo? (por poner un ejemplo [carcajad] ).

Resumiendo y para acabar el tocho que espero me disculpéis, yo me imagino que cualquier lenguaje de programación es cuestión de horas... pero la capacidad de abstracción y de análisis... de eso ya no estoy tan seguro; y sin esto, me temo, que si no se puede mejorar, mejor me busco otra cosa... aunque debo reconocer que me engancha cosa mala y me puedo pasar horas muertas tratando de resolver el desafío (si no me vuelvo muy loco o me abruma, claro).

En fin gente, ¡qué opináis? ¿Sabéis ejercicios o formas de mejorar esa capacidad? ¿Se pueden llegar a notar cambios significativos?

Un saludo.

PD. Como dato curioso, en este artículo sólo hay uno que me da algo de esperanza XD, pero imagino que se refiere a que no importa que no sepas muchas matemáticas, no a que da igual que no tengas esta clase de habilidades.

http://www.dosideas.com/noticias/actual ... dores.html

¿Cree que las matemáticas o la física son un conocimiento importante para un programador? ¿Por qué?


Dave Heinemeier Hansson: Para nada. Al menos no resulta útil para el tipo de programación de negocio necesaria para crear aplicaciones web. Considero que es mucho más importante ser un buen escritor.
Claro que se entrena. Yo estoy más o menos como tú, además estudio programación, y me cuesta el doble que a algunos compañeros que en su momento cogieron los itinerarios de matemáticas y se les daba bien. Se nota esa manera de pensar o de enfocar las cosas más matemática, por decirlo de alguna manera. Aún así, te digo que poco a poco vas acostumbrando a tu cabeza a pensar de esa manera.

En todo caso, esas preguntas que has puesto no tienen que ver con la manera de pensar lógica, sino con que desconoces qué es una función y cómo funciona en programación. Es un asunto teórico.

No estoy nada de acuerdo con esa cita, por cierto.
Buenas.

El concepto de programar, es un concepto que requiere tiempo. El mayor problema es explicar con tus palabras como resolver un problema, por ello recomiendo que antes de hacer un ejercicio te hagas en un papel todos los pasos que tienes que hacer (leer del teclado, comprobar que sea mayor que 0, etc...). Los problemas de programación más sencillos de plantear suelen estar relacionados con las matemáticas, pero tampoco es necesario tener ningún nivel.

Yo empezé en su día con C, pero si lo volviera hacer no lo haría ni con C ni con C++. Sino con Java, ¿razón? La diferencia que hay entre C/C++ y java en la política de errores.

C/C++ tiene una política de "confia en el programador", de modo que si para comprobar un error hay que perder eficiencia, no se hace.

Java tiene una política muy estricta de errores, pero no solo en la ejecución sino cuando está compilado. Además gracias al sistema de excepciones, resulta muy fácil saber que error ha saltado en tu programa.

Red Ninja Wonder escribió:Además que, de nuevo como con las mates. no entiendo ni papa del puto argot. ¿Qué coño es eso de devolver un valor a la función? ¿Para qué?

Al declarar una funcion puedes decirte si va a devolver un valor o no.

Si devuelves un valor, el punto del programa de donde se llama a esa función recuperara ese valor.

Lo cual tiene algunas ventajas, por ejemplo sqrt es una función que devuelve el valor de la raiz cuadrada:
double valor = sqrt(4);


A la función le paso un 4 y devolverá un 2, ese 2 lo puedo meter en una variable para usarlo más tarde.

Red Ninja Wonder escribió:¿Para qué hay que decirle al programa que la compilación ha sido exitosa (o algo así) con eso del return 0? ¿Es que si está mal no da ya él solito el fallo al compilar? ¿Y si le devuelvo otro valor que no sea 0, se queda con las vueltas o cómo? (por poner un ejemplo [carcajad] ).

No no, compilación no. EJECUCIÓN, es para que el SO sepa que tu programa finalizó corretamente.

Aunque hoy en día con los SO modernos ya no es tan necesario, de hecho en los estandares de C++ ya no se pide que pongas return 0. Ya lo mete el compilador.

Castel_ escribió:No estoy nada de acuerdo con esa cita, por cierto.

Esa cita es cierta.

Salvo que vayas a desarrollar un software matemático o un juego que requiera físicas.
amchacon escribió:
Salvo que vayas a desarrollar un software matemático o un juego que requiera físicas.


Conocimientos de matemáticas o de física no, pero pensamiento de tipo lógico (similar al que requieren las matemáticas), sí. Me refería a eso. En mi clase la mayoría no sabía ni poner las tildes correctamente (no hablemos de ordenar las frases); ahora, tenían una facilidad para programar infinitamente superior a la mía.
Buenas, yo soy programador y te digo que mejorarse se mejora con el uso y la práctica, pero también te digo que la persona que de forma innata piensa de esta manera, siempre estará por delante en estos temas. A mi por ejemplo, siempre se me dieron bien las matemáticas y mal la lengua, esta claro que puedo escribir lo que quiera, pero nunca podría ser un buen escritor por ejemplo.

De todas formas como bien se dice, a programar se aprende programando, que lo mismo necesitas echarle más horas al principio???, pues échaselas y ya está, con el tiempo te cambiará el chip y pensarás de la manera que hay que enfocar estos problemas directamente, sin darte cuenta siquiera. Lo único que debes plantearte es que lo mismo te cuesta más trabajo al principio que a otros, pero si te esfuerzas, estoy seguro que lo consigues.

Un saludo
La mente del programador hay que forjarla poco a poco, los primeros días te verás absolutamente abrumado por tanta cantidad de nuevos conceptos y la nueva forma de pensar, tómalo con calma, todo se aprende, yo hice el grado superior de desarrollo de aplicaciones web y como tenía base de programación e informática general no me costó mucho, pero había gente en mi clase que le pasaba como a ti, basicamente eran de letras y se les daban mal las ciencias, pero con esfuerzo lo han ido sacando. Así que ánimo, si le pones empeño lo consigues fijo [oki]


Saludos.
Programacion es de esas asignaturas donde estan los que lo pillan a la primera y los que no, al ser una asignatura de "creacion" a algunos les cuesta mas, pero lo que te han dicho, hechale mas horas. Yo era un negado para la programacion y la unica manera de entender fue practicar bastante, como te han dicho lo dificil es pensar primero como hacerlo, escribirlo es facil, pensar la estructura no. Yo programo en Python (soy de administracion) que es bastante mas sencillo que el tipo de programas para los que se usa C o Java y aun asi me costo lo suyo, para que veas que los negados tambien podemos aprenderlo. Me jode porque nunca me ha gustado la programacion y sin embargo luego te pasas mas tiempo creando scripts para automatizar faenas que otra cosa.
Pues muchas gracias por vuestras respuestas, de verdad, me han animado bastante y creo que voy a seguir intentándolo [beer]

@castel_

Claro que se entrena. Yo estoy más o menos como tú, además estudio programación, y me cuesta el doble que a algunos compañeros que en su momento cogieron los itinerarios de matemáticas y se les daba bien. Se nota esa manera de pensar o de enfocar las cosas más matemática, por decirlo de alguna manera. Aún así, te digo que poco a poco vas acostumbrando a tu cabeza a pensar de esa manera.

En todo caso, esas preguntas que has puesto no tienen que ver con la manera de pensar lógica, sino con que desconoces qué es una función y cómo funciona en programación. Es un asunto teórico.


Sí, lo de devolver valores y ese tema sí, pero esta clase de problemas como los que te meto en spoiler no sé yo. Para que te hagas una idea, esto fue lo que me pasó entre ayer y antes de ayer (todo en dev-c++).


Creé un código para que si una suma da X resultado, diga el resultado, y si no diga "No". Al final tras quebraderos de cabeza, conseguí lo siguiente:



#include <iostream>

using namespace std;
int main()

{
int a;
int b;
int c;

c=8;

cin>>a;
cin>>b;
getchar (); // no se por qué, pero para que se quede fija la pantalla tras finalizar el programa, me hace poner el getchar dos veces
if( a+b==c ) {
   
    cout<<c ;
}
   
else
{
    cout<<"no" ;
   
}
getchar ();
}



Pues bien, luego intenté hacer simplemente un programa que sume, o que reste, o multiplique...

Con la suma, y de nuevo tras muchos quebraderos porque la lógica mía no funcionaba, conseguí esto:


#include <iostream>
#include <stdlib.h>
using namespace std;
int main()

{
int a;
int b;






cin>>a>>b;// estas son las variables que se mueven.
getchar ();// no se por qué, pero para que se quede fija la pantalla tras finalizar el programa, me hace poner el getchar dos veces

   
       
               cout<< a+b << endl; //parece que en cout se pueden manejar operaciones solas sin necesidd de declarar nueva variable
               
               

getchar ();

return 0;
}



De algún modo funcionaba. Bien, dando palmas con las orejas y tal XD.

Pero después, al intentar hacer la resta, claro, simplemente cambié

cout<< a+b << endl;

por

cout<< a-b << endl;


¿Y funciona? ¡NO! Resulta que sigue sumando... [facepalm]




Y no consigo solucionarlo. Son los mismos problemas que creo que son de forma de razonar, que hacían que no pudiera resolver un problema matemático o una ecuación de tercer grado.

Por eso digo, ¿esta clase de cosas se solucionan con la práctica en cuanto a forma de razonar?



P.D: Otra cosa es que encima tú no sabes por ejemplo ahora mismo la de quebraderos de cabeza que me acaba de dar el crear estos spoiler [carcajad] , porque o no se puede anidar spoiler dentro de spoiler, o mi capacidad organizativa es un caos por más que lo intente... (que lo es, pero eso creo que entrenando sí sería solucionable, aunque mira que me cuesta no dejarme algún corchete sin poner o cosas de esas... mi atención al detalle es jodida, cosa que tampoco me lo pondría facil).

¿Cómo va a organizar bien un código de mil líneas, alguien que tiene problemas para hacer unos spoiler en un foro? ¿O cómo va a encontrar la solución a un fallo en ese código, alguien que se deja corchetes sin poner en dos putos códigos? Y mira que he intentado estar atento... pero es lo que hay.

Técnicas para mejorar eso también agradecería.

A mi favor diré que la programación, a diferencia de las matemáticas, me gusta porque veo resultados tangibles en forma de un programa bien hecho (si resuelvo bien una integral mola, pero no es lo mismo), y que soy testarudo, terco y perfeccionista si lo que hago me gusta.



@amchacon
Al declarar una funcion puedes decirte si va a devolver un valor o no.

Si devuelves un valor, el punto del programa de donde se llama a esa función recuperara ese valor.

Lo cual tiene algunas ventajas, por ejemplo sqrt es una función que devuelve el valor de la raiz cuadrada:


¿Pero para qué necesita un valor una función? ¿Para qué quiere recuperarlo? ¿Ese 2 de la raíz cuadrada para meterlo en otra variable por qué? ¿No vale con escribir otro 2?

Suma esto a lo de arriba, y esas son mi clase de dudas y problemas todo el tiempo XD

Y claro, los tutoriales con argot de ese tipo no los entiendo aún. ¿Cómo debería aprender? Recordemos que aún estoy por mi cuenta y que llevo dos días... así que ahora mismo estoy aprendiendo a base de recordar lo poco que sé del módulo y mirando cosas casi arbitrariamente.

¿sabes de algún libro o método para gente que no se le de muy bien que yo pudiera seguir?

@raul_sanchez1
Buenas, yo soy programador y te digo que mejorarse se mejora con el uso y la práctica, pero también te digo que la persona que de forma innata piensa de esta manera, siempre estará por delante en estos temas. A mi por ejemplo, siempre se me dieron bien las matemáticas y mal la lengua, esta claro que puedo escribir lo que quiera, pero nunca podría ser un buen escritor por ejemplo.

De todas formas como bien se dice, a programar se aprende programando, que lo mismo necesitas echarle más horas al principio???, pues échaselas y ya está, con el tiempo te cambiará el chip y pensarás de la manera que hay que enfocar estos problemas directamente, sin darte cuenta siquiera. Lo único que debes plantearte es que lo mismo te cuesta más trabajo al principio que a otros, pero si te esfuerzas, estoy seguro que lo consigues.

Un saludo


Hola Raúl! Muchas gracias [beer]

El tema es que, tú dices que por tus capacidades, no podrías ser un buen escritor pero sabes escribir y expresarte, al menos el mínimo exigible...

Quizá yo del mismo modo, podría "ir sacando" la programación... ¿Pero podría alguien como yo llegar a ser un BUEN programador? Porque no quiero ser un mediocre en aquello a lo que me dedique.

También va esto a colación de lo que comenta @alexrikelme, gente de letras que lo ha ido sacando, pero que no sé si a día de hoy son buenos programadores o están lamentándose de lo que han estudiado...

Por cierto alex, tú que has hecho el módulo que quiero hacer yo, ¿por qué lenguaje me recomiendas empezar? Yo he empezado por C++ porque es lo que estudiamos en el módulo que empecé yo, y el profesor decía que si sabes ese, es más fácil aprender el resto...

Un saludo.
Red Ninja Wonder escribió:
Por cierto alex, tú que has hecho el módulo que quiero hacer yo, ¿por qué lenguaje me recomiendas empezar? Yo he empezado por C++ porque es lo que estudiamos en el módulo que empecé yo, y el profesor decía que si sabes ese, es más fácil aprender el resto...

Un saludo.


Pues si quieres hacer el de desarrollo de aplicaciones web yo te recomendaría ir a por java, es un lenguaje no demasiado complicado, bonito y con muchas salidas, en mi primer año, en la asignatura de programación solo dimos java, en el segundo año dimos PHP, javascript, JSP y ASP. Si quieres continuar con C++ sigue, al fin y al cabo la metodología de programación es básicamente la misma en todos los lenguajes, por lo que si aprendes uno sabrás domar a los demás con poco esfuerzo.

Saludos.
Yo te voy a dar un consejo práctico: Usa las tabulaciones. Que las { estén siempre a distinta altura, te ayudará a leer el código. Te lo digo porque veo que no los usas correctamente en el código que has pasado.
Es entrenable como casi todo, pero no quita que es mejor que se te de bien, porque es posible que acabes frustrado. Si quieres seguir, adelante, vas por el buen camino, práctica.
Las matemáticas son importantísimas en la programación, en dos vertientes:
- el razonamiento lógico y abstracto
- la aplicación directa

En cuanto a aplicación depende del área, claro. Pero hay lógicas de negocio imposibles de entender si una base matemática.
Por ejemplo, yo hago software industrial.
Y no me veo haciendo un algoritmo adaptativo, un PID o una regulación más sencilla incluso sin matemáticas.

En programación web depende. Pero hay muchas aplicaciones web que manejan muchas matemáticas.

En cuanto al razonamiento supongo que se puede entrenar, pero mi fuerte siempre han sido las matemáticas y la abstracción, así que no puedo ayudarte mucho pero...
prográmalo todo. Y con lápiz y papel.
Realmente se programa con la cabeza (lápiz/papel) y no con el ordenador.
Piensa como programarías un objeto, una situación que veas... Te ayudará a abstraerte.
alexrikelme escribió:


Pues si quieres hacer el de desarrollo de aplicaciones web yo te recomendaría ir a por java, es un lenguaje no demasiado complicado, bonito y con muchas salidas, en mi primer año, en la asignatura de programación solo dimos java, en el segundo año dimos PHP, javascript, JSP y ASP. Si quieres continuar con C++ sigue, al fin y al cabo la metodología de programación es básicamente la misma en todos los lenguajes, por lo que si aprendes uno sabrás domar a los demás con poco esfuerzo.

Saludos.


Pues tomo nota del consejo... quizá cuando vea que me desenvuelvo un poco con C, para adquirir esta clase de pensamiento, me pase a Java...

Eruanion escribió:Yo te voy a dar un consejo práctico: Usa las tabulaciones. Que las { estén siempre a distinta altura, te ayudará a leer el código. Te lo digo porque veo que no los usas correctamente en el código que has pasado.


Gracias! Es algo en lo que hacía hincapié nuestro profesor, lo de la altura de los { y demás, y que de hecho yo he intentado hacer aquí... pero es la incapacidad (por ahora, que también lo pienso entrenar) de organizar las cosas bien lo que hace que al final acabe todo hecho un Cristo. Sé que no está bien y lo quiero cambiar, así que miraré cómo va el tema de tabular correctamente.

Anda que no me quedan cosas por cambiar en mi modo de hacer y pensar para dedicarme a esto...

cipoteloth escribió:Es entrenable como casi todo, pero no quita que es mejor que se te de bien, porque es posible que acabes frustrado. Si quieres seguir, adelante, vas por el buen camino, práctica.


Claro, es lo que quiero evitar, ser un profesional mediocre y frustrado, por eso antes de meterme estoy pensándolo muy bien (y metiéndole caña).

jorcoval escribió:Las matemáticas son importantísimas en la programación, en dos vertientes:
- el razonamiento lógico y abstracto
- la aplicación directa

En cuanto a aplicación depende del área, claro. Pero hay lógicas de negocio imposibles de entender si una base matemática.
Por ejemplo, yo hago software industrial.
Y no me veo haciendo un algoritmo adaptativo, un PID o una regulación más sencilla incluso sin matemáticas.

En programación web depende. Pero hay muchas aplicaciones web que manejan muchas matemáticas.

En cuanto al razonamiento supongo que se puede entrenar, pero mi fuerte siempre han sido las matemáticas y la abstracción, así que no puedo ayudarte.


Yo veo la palabra algoritmo, o demasiadas X y paréntesis que me recuerden a una fórmula matemática o ecuación de tercer grado, y ya salgo corriendo XD

Por estas cosas no lo tengo tan claro.

Además que si tengo que desarrollar un programa que me guste, bien; como tenga que ver pues eso, con geometría o cosas que no me gusten, jodido. Por eso la programación Web la veo a priori un poco más "artística" y de mi gusto, como si lo que fuese a crear son aplicaciones menos "frías" que haciendo programación tradicional.
Te he añadido un párrafo. Creo que eso te puede ayudar.

"Programa" cosas del día a día.
jorcoval escribió:Te he añadido un párrafo. Creo que eso te puede ayudar.

"Programa" cosas del día a día.


Muchas gracias, pues parece muy buen consejo. Sí, nuestro profesor también nos dijo que realmente se programa con lápiz y papel.

Luego tendré que modificar mi lógica conforme a cómo hace la lógica la máquina, ahí estará lo jodido y lo bonito :) (y lo frustrante, si no lo consigo jaja).
Lo de ser mediocre es relativo, a mi me gusta, considero que se me da bien, y he acabado los estudios con notas muy altas, sin embargo no puedo ni medirme con los genios que hay por ahí sueltos.
Lo importante de que se te de bien, es que eso anima a renovarse y hacer cosas por tu cuenta. De verdad creo que ser programador sin vocacion debe ser de las peores profesiones del mundo.
De hecho, supongo que algo te tiene que gustar, porque la verdad no es una profesion que alguien busque por el dinero xD.
cipoteloth escribió:Lo de ser mediocre es relativo, a mi me gusta, considero que se me da bien, y he acabado los estudios con notas muy altas, sin embargo no puedo ni medirme con los genios que hay por ahí sueltos.
Lo importante de que se te de bien, es que eso anima a renovarse y hacer cosas por tu cuenta. De verdad creo que ser programador sin vocacion debe ser de las peores profesiones del mundo.
De hecho, supongo que algo te tiene que gustar, porque la verdad no es una profesion que alguien busque por el dinero xD.


jaja hombre, en España no, pero en el extranjero ya te digo que está demandada y se gana bien. Eso unido a mi facilidad para los idiomas me hace planteármelo seriamente...

Claro que antes estoy averiguando si valgo y si efectivamente me gusta, porque yo soy una persona que no sé si lo que me acaba gustando es aquello que se me da bien, o si lo que se me da bien es porque me gusta y lo practico mucho [carcajad]

Realmente yo creo que las Ciencias o la Programación me gustarían tanto como las Letras, si tuviera la misma facilidad o si veo que soy capaz de llegar a ser bueno en ello.

Por ejemplo, en la EGB pues lo que digo, las mates y tal me costaban más, y claro, las odiaba; pero en 7º y 8º de EGB me apuntaron a una academia particular y empecé a sacar sobresalientes tanto en Mates como Física o Química. Todas ellas empezaron a gustarme, y llegué a pensar que era bueno en Ciencias, solo que necesitaba un poco de ayuda extra para entenderlas o mejores profesores que los que tenía en el colegio...

Pero fue llegar a BUP, empezar con integrales, derivadas, ecuaciones de tercer grado y demás... y se acabó. Ahí ya no lo pillaba ni con academia ni nada, y así todo el Bachillerato hasta que decidí meterme a Letras y la media subió como la espuma, claro, sin Mates y Física de por medio (Química creo que se me siguió dando bastante mejor).

Por eso debo elegir con cuidado y bien, que ahora igual me salen bien cuatro códigos chorras y creo que valgo, pero el día de mañana tengo uno de mil líneas delante con problemas mucho más complejos que solucionar, y me cago en todo...
Red Ninja Wonder escribió:¿Pero para qué necesita un valor una función? ¿Para qué quiere recuperarlo? ¿Ese 2 de la raíz cuadrada para meterlo en otra variable por qué? ¿No vale con escribir otro 2?

Es un ejemplo sencillo y didactico. Evidentemente en ese caso puedes poner un 2 directamente.

Si quieres un ejemplo real:
double valor;
double resultado;

cin>>valor;

resultado = sqrt(valor)

cout<<"La raiz cuadrada es: "<<resultado<<endl;


Este es un programa que le pide al usuario un numero y le saca por pantalla su raíz cuadrado. Sqrt es una función que devuelve la raíz cuadrada del número que le introduzcas, por lo que es vital captar el valor que devuelve.
amchacon escribió:
Red Ninja Wonder escribió:¿Pero para qué necesita un valor una función? ¿Para qué quiere recuperarlo? ¿Ese 2 de la raíz cuadrada para meterlo en otra variable por qué? ¿No vale con escribir otro 2?

Es un ejemplo sencillo y didactico. Evidentemente en ese caso puedes poner un 2 directamente.

Si quieres un ejemplo real:
double valor;
double resultado;

cin>>valor;

resultado = sqrt(valor)

cout<<"La raiz cuadrada es: "<<resultado<<endl;


Este es un programa que le pide al usuario un numero y le saca por pantalla su raíz cuadrado. Sqrt es una función que devuelve la raíz cuadrada del número que le introduzcas, por lo que es vital captar el valor que devuelve.


Pues es que según ese ejemplo lo veo bastante claro... pero por ejemplo dime:

qué hay mal en este código? He probado diferentes formas, haciendo un diagrama, y nada...


#include <iostream>
#include <stdlib.h>
using namespace std;


int main()

             {
         
int a;
int b;
int c;
c = a + b;


cin>>a>>b;
             getchar ();

             
 
             cout<<c<< endl ;
               
             
                           
             getchar ();

return 0;

             }




Se supone que al programa hay que decirle que hay 3 variables (int a,b,c) de las cuales 2 tendrá que dar el teclado (cin >>a>>b) y la tercera devolverla la pantalla no? especificando antes, claro, que c es igual a la suma de las dos variables anteriores...

hago la suma por ejemplo 9+1 y me da un número raro en plan 1988 no se qué... XD

consigo que salga la suma cambiando


cout<<c<< endl


por

cout<<a+b<< endl



(Sin saber a qué lógica atiende, claro, me salió probando).

Lo cojonudo es que luego cambio la suma por restas o multiplicaciones por ejemplo (cambiándolo también esos a + b por a - b, etc.), y sigue sumando...

También he probado con la función "if", pero nada. ahí lo que hace es ni siquiera mostrar número en pantalla...


if (a+b) {

                 cout<<c<< endl;
             }




Estas son las cosas que por más que me desgañite no saco, y eso que se supone que esto es lo fácil...
@Red Ninja Wonder Primero hay que leer del teclado con cin y después sumar (lo digo porque lo estás haciendo al reves).
@red_ninja_power
Piensa que la memoria siempre contiene "algo" aunque a veces es imposible saber qué.

Si declaras 2 variables (a y b) sin valor inicial (inicializadas) "algo" tienen.
Entonces haces que c=a+b, por lo que c es la suma de dos valores desconocidos.
Y a continuación le das valor a a y b...pero es que ya le has dado valor a c.

Por tanto, debes sumar después de asignar valores a a y b.
amchacon escribió:@Red Ninja Wonder Primero hay que leer del teclado con cin y después sumar (lo digo porque lo estás haciendo al reves).


ah coño, yo eso pensé que eso era declarar el valor de la variable (cuando necesité un número exacto de una de ellas en otro ejercicio lo hice así), por eso lo puse arriba del todo con el resto de variables...

ahora funciona, lo cojonudo es que... también resta bien sin haber puesto nada de resta, y cuando pongo c=a-b me hace las operaciones al revés [qmparto] [qmparto]

he quitado el primer getchar y ahora se cierra sólo, no sé por qué necesita dos getchar para poder quedarse abierto hasta que yo pulse al acabar la suma; en teoria con el ultimo getchar deberia valer no?... lo de los dos char, de nuevo, lo saqué más probando que por lógica jajajaja. otra forma ha sido metiendo un system ("pause") al final, pero no queda exactamente como yo quiero ( eso de "presione la tecla para continuar" no lo quiero en pantalla).

pues eso, que me pasan cosas tan cómicas como cuando hacía problemas de matemáticas jaja.

gracias por la ayuda por supuesto :)

jorcoval escribió:Piensa que la memoria siempre contiene "algo" aunque a veces es imposible saber qué.

Si declaras 2 variables (a y b) sin valor inicial (inicializadas) "algo" tienen.
Entonces haces que c=a+b, por lo que c es la suma de dos valores desconocidos.
Y a continuación le das valor a a y b...pero es que ya le has dado valor a c.

Por tanto, debes sumar después de asignar valores a a y b.


ah, por eso me sumaba el resultado ese raro de 17988? por el "algo" que llevan en memoria las variables por defecto?

eso es hacer int a,b, etc.? poner el valor de las variables a cero? pero eso no es asignar valores no?

no obstante, oye, que no os quiero dar la brasa ni tener de profes particulares eh? sólo quería saber si sabeis de algún metodo o libro donde expliquen cosas así pero "para gente de Letras" XD
Hacer
int b;
Es declarar una variable de tipo entero, en una zona de memoria. Lo que contenga esa zona, tú no lo sabes y ese valor puede ser 17880, 14 ó algo más raro aún.

Si quieres que sea 0, debes hacer
int b=0;

Hay lenguajes que ni te dejan utilizar una variable a la que no hayas asignado valor previamente. Como c#, por ejemplo.
O Java.

Por eso te recomendé Java. Que ademas es muy parecido a C++
jorcoval escribió:Hacer
int b;
Es declarar una variable de tipo entero, en una zona de memoria. Lo que contenga esa zona, tú no lo sabes y ese valor puede ser 17880, 14 ó algo más raro aún.

Si quieres que sea 0, debes hacer
int b=0;

Hay lenguajes que ni te dejan utilizar una variable a la que no hayas asignado valor previamente. Como c#, por ejemplo.


comprendo... pero en ninguna parte de mi codigo le he dado yo ningun valor...

o es que la manera de asignar valores aquí es mediante el comando cin que da la orden al teclado, no? entonces el ordenador sabe que debe devolverte la suma hecha, pero después de que meta el teclado esos valores no? por eso se pone después...

¿es así?

amchacon escribió:O Java.

Por eso te recomendé Java. Que ademas es muy parecido a C++


pues al final me vas a convencer... ademas para desarrollo de app. web es mas adecuado, ¿no?

Si aprendo con java luego igual ya el c++ es mas facil...
Yo en mi carrera el primer año no entendia ni jota de programacion, fue un desastre, al segundo año, todos los conceptos que me sonaban a chino pasaron a ser claros. A medida que vayas programando, iras cambiando tu forma de pensar y razonar y al final te saldra "solo". Y cuando cambies de paradigma y seas capaz de adaptarte a el de forma rapida te sentiras "orgulloso" xD


PD: Haskell tiene su puntito de amor XD [beer]

EDITO:

Red Ninja Wonder escribió:
jorcoval escribió:Hacer
int b;
Es declarar una variable de tipo entero, en una zona de memoria. Lo que contenga esa zona, tú no lo sabes y ese valor puede ser 17880, 14 ó algo más raro aún.

Si quieres que sea 0, debes hacer
int b=0;

Hay lenguajes que ni te dejan utilizar una variable a la que no hayas asignado valor previamente. Como c#, por ejemplo.


comprendo... pero en ninguna parte de mi codigo le he dado yo ningun valor...

la manera de asignar valores aquí es mediante el comando cin que da la orden al teclado, no? entonces el ordenador sabe que debe devolverte la suma hecha, pero después de que meta el teclado esos valores no? por eso se pone después...

¿es así?


una cosa es declarar y otra es dar valor a una variable (o hacer las dos cosas a la vez que tambien se puede).

Si yo digo:

int variable1;

estoy diciendo que tengo una cosa que se llama variable1 que es de tipo numero entero (sin decimales) pero que no tiene ningun valor.

ejemplo:

int edadIntroducida; // tengo una variable que se llama edadintroducida pero no tiene ningun valor, es de tipo int.

cout<< edadIntroducida; // si hago esto sin darle ningun valor pueden pasar 2 cosas dependiendo del lenguaje, que pete el programa o que muestre un valor basura: por ejemplo 36789126893321

finalmente, si hago:

int edadIntroducida;
edadIntroducida = 10; //le asigno a esa variable el valor 10 y ya la podre mostrar correctamente
cout<< edadIntroducida;

esto mostraria un 10 por la pantalla o la que fuera la salida estandar
jorcoval escribió:@red_ninja_power
Piensa que la memoria siempre contiene "algo" aunque a veces es imposible saber qué.

Si declaras 2 variables (a y b) sin valor inicial (inicializadas) "algo" tienen.
Entonces haces que c=a+b, por lo que c es la suma de dos valores desconocidos.
Y a continuación le das valor a a y b...pero es que ya le has dado valor a c.

Por tanto, debes sumar después de asignar valores a a y b.


joder, claro, ahora lo he entendido...

lo que yo no sabía es que al hacer c=a+b estaba haciendo ya la suma; yo pensé que eso era darle el valor de que c es sumando a y b. pensé que la suma se hacia luego, de alguna manera entre las ordenes que transmite "cin" o en el "if" o el "cout" de alguna manera.

retamal1990 escribió:Yo en mi carrera el primer año no entendia ni jota de programacion, fue un desastre, al segundo año, todos los conceptos que me sonaban a chino pasaron a ser claros. A medida que vayas programando, iras cambiando tu forma de pensar y razonar y al final te saldra "solo". Y cuando cambies de paradigma y seas capaz de adaptarte a el de forma rapida te sentiras "orgulloso" xD


PD: Haskell tiene su puntito de amor XD [beer]


sí, es que eso, voy entendiendo cosillas y me vicia más XD

pero quiero estar muy seguro de que no lo acabré aborreciendo cuando sean cosas muy complejas para mi o codigos muy largos.


una cosa es declarar y otra es dar valor a una variable (o hacer las dos cosas a la vez que tambien se puede).

Si yo digo:

int variable1;

estoy diciendo que tengo una cosa que se llama variable1 que es de tipo numero entero (sin decimales) pero que no tiene ningun valor.

ejemplo:

int edadIntroducida; // tengo una variable que se llama edadintroducida pero no tiene ningun valor, es de tipo int.

cout<< edadIntroducida; // si hago esto sin darle ningun valor pueden pasar 2 cosas dependiendo del lenguaje, que pete el programa o que muestre un valor basura: por ejemplo 36789126893321

finalmente, si hago:

int edadIntroducida;
edadIntroducida = 10; //le asigno a esa variable el valor 10 y ya la podre mostrar correctamente
cout<< edadIntroducida;

esto mostraria un 10 por la pantalla o la que fuera la salida estandar


si, eso mas o menos me habia quedado claro en el anterior ejercicio, en el que el resultado tenia un valor fijo, y que dependiendo de si fuera ese o no (usando "if"), mostraba en pantalla el resultado o un "no es correcto").

el problema aqui vino de que no sabía cómo darle un valor arbitrario a los 3 valores, y no sólo a dos, y hacerlo sin usar el "if" del ejercicio anterior, que parecía que no funcionaba.

me estais ayudando bastante... pero repito, no os quiero tener aqui de profes dándoos la paliza, sólo quiero saber si en algún libro o web explican las cosas medio claritas como vosotros...
Este hilo ya parece una scripting party, mola XD
Red Ninja Wonder escribió:o es que la manera de asignar valores aquí es mediante el comando cin que da la orden al teclado, no? entonces el ordenador sabe que debe devolverte la suma hecha, pero después de que meta el teclado esos valores no? por eso se pone después...

¿es así?

No exactamente, esto es legal:
int a;
int b;
int resultado;

a = 2;
cin>>b;
resultado =a+b;

cout<<"El resultado es: "<<resultado<<endl;

Como puedes ver, aquí le doy un valor inicial manualmente. Este programa lo que haría es leer un número del teclado y sumarle 2.

Red Ninja Wonder escribió:entonces el ordenador sabe que debe devolverte la suma hecha, pero después de que meta el teclado esos valores no? por eso se pone después...

No tienes que pensar en esos términos.

El ordenador "no sabe", "no presupone", no pensará como ti como hará un humano. Quitate ese lenguaje de la cabeza o te llevará a errores.

Simplemente va ejecutando una línea detras de otra, "hace lo que le dicen".

retamal1990 escribió:Haskell tiene su puntito de amor XD [beer]

Un poquillo, pero no lo veo para hacer un programa complejo *_*
@amchacon

Gracias mil.... he ejecutado un código como el que me has dado pero cambiando a=2 por bin>>a; y funciona...

Lo que sigo sin entender es por qué hago una resta y sale XD

O por qué pongo resultado= a-b; y en vez de hacer una resta, hace las operaciones al reves... (cuando sumo, resto y cuando resto, sumo).
Red Ninja Wonder escribió:@amchacon

Gracias mil.... he ejecutado un código como el que me has dado pero cambiando a=2 por bin>>a; y funciona...

Lo que sigo sin entender es por qué hago una resta y sale XD

O por qué pongo resultado= a-b; y en vez de hacer una resta, hace las operaciones al reves... (cuando sumo, resto y cuando resto, sumo).

Pues sin ver el código ni idea ;)
amchacon escribió:
Red Ninja Wonder escribió:@amchacon

Gracias mil.... he ejecutado un código como el que me has dado pero cambiando a=2 por bin>>a; y funciona...

Lo que sigo sin entender es por qué hago una resta y sale XD

O por qué pongo resultado= a-b; y en vez de hacer una resta, hace las operaciones al reves... (cuando sumo, resto y cuando resto, sumo).

Pues sin ver el código ni idea ;)


XD perdón

#include <iostream>
#include <stdlib.h>
using namespace std;
   int main ()
   
   {
    int a;
    int b;
    int resultado;

    cin>>a;
    cin>>b;
    resultado = a+b;

    cout<<"El resultado es: "<<resultado<<endl;
   
    system ("pause");
   
    }
Ese código funciona correctamente :-?

Si cambias a+b por a-b te hará la resta con total normalidad.
recuerda que tienes que guardar el proyecto antes de compilarlo, si compilas sin guardar los cambios tu veras el codigo cambiado pero compilara lo ultimo guardado.
amchacon escribió:Ese código funciona correctamente :-?

Si cambias a+b por a-b te hará la resta con total normalidad.


Pues yo lo ejecuto y si hago a+b en consola lo hace bien, pero si hago en consola a-b también hace la resta...

y si cambio en el codigo a+b por a-b, me hace en consola las operaciones al revés... 5-4 =9 o 5+4=1...

y no hay en ese codigo absolutamente nada más que no haya puesto aquí...

[tomaaa]

retamal1990 escribió:recuerda que tienes que guardar el proyecto antes de compilarlo, si compilas sin guardar los cambios tu veras el codigo cambiado pero compilara lo ultimo guardado.


Ahora me entero de eso... otra cosa que no entiendo, pero vale, si es así es así :P. no obstante siguen los mismos problemas.
Red Ninja Wonder escribió:
amchacon escribió:Ese código funciona correctamente :-?

Si cambias a+b por a-b te hará la resta con total normalidad.


Pues yo lo ejecuto y si hago a+b en consola lo hace bien, pero si hago en consola a-b también hace la resta...

y si cambio en el codigo a+b por a-b, me hace en consola las operaciones al revés... 5-4 =9 o 5+4=1...

y no hay en ese codigo absolutamente nada más que no haya puesto aquí...

[tomaaa]

Tú problema es matemático.

Restar un negativo significar sumarlo, y sumar un negativo significa restarlo.
amchacon escribió:Tú problema es matemático.

Restar un negativo significar sumarlo, y sumar un negativo significa restarlo.


ya pero, donde estoy yo restando un negativo?

no pongo 5 -(-4) ni nada de eso...

y cuando pongo a+b la resta sale bien...



Imagen

Imagen



[facepalm]
Solo tienes que poner los numeros. El simbolo ese sobra.

Tal y como lo estas poniendo, el programa entiende que a = 5 y b = -4.

Deberías poner un 5, pulsar enter, poner un 4 y pulsar enter.

PD: Y eso... Devcpp está bastante anticuado no es por nada *_*
amchacon escribió:Solo tienes que poner los numeros. El simbolo ese sobra.

Tal y como lo estas poniendo, el programa entiende que a = 5 y b = -4.

Deberías poner un 5, pulsar enter, poner un 4 y pulsar enter.

PD: Y eso... Devcpp está bastante anticuado no es por nada *_*


Imagen

pero joder, ¿esto es problema de lógica o de no saber? porque si no me lo dices tú no lo saco ni pal 2020... [carcajad]

El dev-c++ es el que usabamos en el modulo que empece en 2004 y he ido a lo que sabía.

ya me he bajado el java para ir trasteando...
Es un problema de no saber. No tiene nada que ver con la lógica. No sabías que no te hacía falta poner el signo y ya está. Tampoco te agobies mucho, que es perfectamente normal.
Eruanion escribió:Es un problema de no saber. No tiene nada que ver con la lógica. No sabías que no te hacía falta poner el signo y ya está. Tampoco te agobies mucho, que es perfectamente normal.


Muchas gracias... como anécdota, decir que le he contado a mi novia lo que ha pasado y ha venido a mirar el código. Con decirle el problema ella, que es de Ciencias (aunque no ha visto un código en su vida), y encima superdotada, en un segundo ha visto cuál era la solución sin darme tiempo a decírselo yo [carcajad] . Ella dice que está más acostumbrada a trabajar con ese tipo de cosas, con excels que calculan funciones,y tal; pero también es la capacidad lógica de alguien que es bueno en Ciencias.

No me importa reconocer que es más inteligente que yo (ya digo, superdotada), y muy orgulloso de ella; pero ha sido gracioso comprobar in situ cómo las capacidades innatas cambian las cosas (aunque por supuesto también jode que alguien con menos esfuerzo saque las cosas mejor que tú, no hay ni que decirlo [snif] ) .

No obstante, yo seguiré dándole caña :) Por ahora me encanta.
Si de verdad te gusta programar, aprenderás a programar. He visto a gente capacitada para programar dejarlo porque simplemente no le gusta. Es de esas cosas que como no te gusten se convierten en un coñazo. Si de verdad quieres, puedes. Con que seas consciente de que no se aprende en 3 días tienes bastante, sé paciente. Yo llevo 6 años desarrollando en java y aún hay muchas cosas que no sé. Y bueno, los hay peores que yo xD. Ahora mismo ando arreglando un código que es un despropósito, que carga la memoria con cada click del ratón con cosas que no debería. Y eso está hecho por alguien que se supone que sabe programar. XD

Así que nada, mucho ánimo y poco a poco. Ya irás cogiendo conceptos básicos. :)
Eruanion escribió:Si de verdad te gusta programar, aprenderás a programar. He visto a gente capacitada para programar dejarlo porque simplemente no le gusta. Es de esas cosas que como no te gusten se convierten en un coñazo. Si de verdad quieres, puedes. Con que seas consciente de que no se aprende en 3 días tienes bastante, sé paciente. Yo llevo 6 años desarrollando en java y aún hay muchas cosas que no sé. Y bueno, los hay peores que yo xD. Ahora mismo ando arreglando un código que es un despropósito, que carga la memoria con cada click del ratón con cosas que no debería. Y eso está hecho por alguien que se supone que sabe programar. XD

Así que nada, mucho ánimo y poco a poco. Ya irás cogiendo conceptos básicos. :)


muchas gracias. lo que mola de la naturaleza el humana es que el talento es importante pero el esfuerzo aún lo es más. Lo importante es superarse a uno mismo, no a los demás.

Yo lo que quiero también asegurarme es de si cuando me encuentre cosas de esas (un programa de miles de líneas donde haya un fallo, tener que encontrarlo y arreglarlo), me sigue gustando o por el contrario ya me empieza a no gustar...

Pero poco a poco. Supongo que la clave para esto, sabiendo o no, es la paciencia y la constancia (para esto y para casi todo).

de momento me he bajado también netbeans junto al jdk y un tuto, a ver que tal :)

aunque quiero seguir mirando c++
Todas las capacidades mentales del ser humano se pueden entrenar, lo importante no es entrenarlas a la aventura, sino con un método apropiado y sobretodo adaptado a tus capacidades.

Un saludo. [ginyo]
Hola a todos. A ver yo quería comentar algo.
Recién me dio por la programación. Tengo ya 32 tacos, o sea que ya voy tarde, jajajja pero bueno nunca es tarde sí la dicha es buena, no? O por lo menos eso dicen.
Bueno resulta de que comencé mi andadura hace una semana y empece con unos tutoríales online, que tratan sobre las bases , los principios de la programación.
También hemos tenido una sesión que creo que me ha venido bien que es sobre algoritmos. Hay sí hemos echas unos ejercicios de plantear algo a través de algoritmos y después plantearlo a través de código.
Como por ejemplo ejercicios de saber la distancia entre 2 puntos sabiendo sus coordenadas, ejercico de dime cuantos días has vivido para saber los años meses y días restantes, etc....
Me quedan 4 clases. Bueno el caso es que el lenguaje que se ha tratado es JavaScript .
Yo se que recomiendan que se empiece por c o Java o phyton.
Pero en el curso esté pues se empezó a hablar de JavaScript ya en el tercer sesión.
Y como comprenderéis ya que me puse, digo, ya lo acabo jejeje

E caso es que sí hago mal en comenzar con este lenguaje.
Porque como leí por aquí por los comentarios que una vez ya aprendido uno, pues te cuesta menos aprender otro.
El caso es que con la edad que tengo no me va a dar para aprender muchos, jeje pienso que quiero controlar JavaScript y después meterme con , no se, Java por ejemplo o C, es que no se.
Porque es que no se ni lo que quiero hacer o sea no se para que es lo que me gustaría programar, sí para web o para aplicaciones multi plataforma.

También me pasa algo; y es que al verme con la edad que tengo pues quiero hacer más de lo que puedo, en plan de estudiar digo, pero llega un momento que no doy a basto, me emboto, no se sí me entendéis.
Y resulta de que no he dado todavía con algún sitio con el que seguí mi andadura con el estudio, porque hay mucha info en internet, pero no encuentro por ejemplo algo que sea teórico pero que a la vez te pongan ejemplos ejercicios para uno mismo ir probando e ir viendo como va la cosa y tener contacto con los códigos. En fin.

También otra cosa que quería comentar es sí me merece la pena meterme en el grado superior y dar DAM o DAW
lo digo porque por los estudios que tengo sólo puedo entrar a grado medio, en el que se daría 2 años de "sistemas micro informáticos y redes"
Eso o hacer la prueba de acceso a grado medio en la que ya perdería un año nada más que para prepararme eso.
Por eso no se sí me conviene más estudiar programacion por mi cuenta, a través de foros y libros. En fin.
Ojalá me podáis contestar a estas dudas, ya que estoy en un "bucle" ahora mismo, jejeje

Bueno un saludo y gracias de antemao
Dedícale muuchas horas y te acabará saliendo ya lo verás :)
Yap, pero con que empiezo, para alguien que viene de 0 es muy complicado el estudio autodidacta.
Sí no h alguien que te vaya indicando estudia esto, después esto en fin....

Un saludo
armandokevin escribió:Yap, pero con que empiezo, para alguien que viene de 0 es muy complicado el estudio autodidacta.
Sí no h alguien que te vaya indicando estudia esto, después esto en fin....

Un saludo


Hola, soy el creador del hilo, perdona por no contestar antes. No había visto tu respuesta, y no me gusta dejar a otra gente con los mismos problemas que tuve yo una vez se me han ayudado.

Yo también estoy aprendiendo de forma autodidacta. Te puedo decir que lo primero, primerito, aprendas la Lógica de programación. Un libro muy bueno que me ha ayudado muchísimo es "Esencia de la Lógica de Programación", de Omar Trejos Buitirica, o algo así se llama él.

Ese libro te explica, te da ejercicios prácticos, y te establece un poco el orden en que ir aprendiendo las cosas.

El Lenguaje de programación, pues según tus preferencias, mírate las respuestas que me dieron a mí. De todas formas, por ahora que sea simplemente para poner en práctica lo que vayas aprendiendo de Lógica (manejar bucles... etc). No te líes a profundizar mucho en un Lenguaje ahora, creo yo.

Otro foro muy bueno que te recomiendo (en inglés), es

http://stackoverflow.com/

Y eso: practica, practica, y practica. E intenta que alguien que sepa te explique dudas (gracias a cierta persona del foro, por cierto ;) ).

Esa persona sabe que he estado a punto de dejarlo varias veces por eso, porque soy de Letras y sigo dudando si voy a valer; pero por ahora voy avanzando.

Estos días mismo andaba desesperado porque quería hacer un array que me leyera los valores que yo quiero, y me los ordenase de menor a mayor. ¿Cómo lo conseguí al final? Recortando varios papeles con los valores dados, en las posiciones indicadas al ordenador, y observando cómo se mueven esos números o cómo deberían hacerlo para que se haga lo que yo quiero. Cada movimiento una instrucción. Vi dónde fallaba mi lógica... y di con ello :)

Lo que te quiero decir es que a veces hay que mandar la pantalla del ordenador a la mierda. sentarse con un lapiz y papel o algo físico (como mis cuadraditos), que represente por ejemplo lo que pasa en la memoria del ordenador al jugar con las variables...

Es el mejor consejo que me dieron a mí: lapiz y papel. Y empieza por programar cosas reales, del día a día. Sírvete del libro que te he dicho, de internet y foros y, sobre todo, de Google... No hay casi ninguna duda que alguien no haya tenido antes.

A veces me hacen falta pistillas, sí, pero con esas pistas suelo poder acabar resolviendo las cosas (de momento).

Otras veces me lo han tenido que explicar directamente y me ha costado un triunfo entenderlo, pero imagino que eso les ha pasado a todos en algún momento...

Sobre CFGS y tal, yo también ando con pegas -ya que aún no sé ni siquiera si quizá me estoy metiendo en algo que no se me da bien y la estoy cagando por ello-, así que poco te puedo ayudar en eso; pero sí te digo que un título te abrirá muchas puertas. Conozco gente que ha aprendido a programar sola también, pero no sé laboralmente cómo les irá.

Y eso, PRACTICA, PRACTICA Y PRACTICA. Consigue el libro que te he dicho, métele horas, y nos cuentas :)



Un saludo!
Como matemático me siento en la obligación de comentar en este hilo (ya que se ha mencionado tanto la lógica matemática :_D).

No os preocupéis si no se os daban bien las matemáticas anteriormente. No tiene "nada" que ver.

Las lógica "matemática" a la que se suelen referir es a jugar con una serie de normas básicas de las que no te puedes salir. Las matemáticas que se enseñan en institutos es una de las expresiones de la lógica matemática, erróneamente escogida para poder abarcar lo máximo posible en la formación básica para el resto de ciencias.

En realidad podéis haber estado mas expuestos a esta lógica de lo que pensáis...
Desde pequeños haciendo construcciones con legos.
A cosas más complicadas como juegos de mesa (de cartas, rol, tablero, ajedrez). Son mundos en los que construyes cosas complejas (estrategias) a partir de unas reglas básicas.

De hecho, si os fijáis hay muchos mas informáticos frikis de los juegos de mesa que de las matemáticas (desgraciadamente :( ). Y no es casualidad...

El reto de empezar en la programación es entender la manera en como funciona un ordenador y como ordenarle hacer las cosas (la famosa lógica de los ordenadores ;) las reglas básicas con las que vas a jugar). Y me mola porque el topic owner ya lo tenéis encaminado a centrarse primero en esto :D El lenguaje de programación favorito ya vendrá después.

Probad, jugad, preguntad y si os empezáis a sentir cómodos y motivados... Adelante!

(como dato anecdótico que la lógica matemática no tiene nada que ver con las matemáticas de instituto... conozco varios matemáticos que no saben sumar, multiplicar, integrar (yo) y algunos que han acabado satisfactoriamente la carrera habiendo suspendido las mates en la selectividad)
Red Ninja Wonder escribió:
armandokevin escribió:Yap, pero con que empiezo, para alguien que viene de 0 es muy complicado el estudio autodidacta.
Sí no h alguien que te vaya indicando estudia esto, después esto en fin....

Un saludo


Hola, soy el creador del hilo, perdona por no contestar antes. No había visto tu respuesta, y no me gusta dejar a otra gente con los mismos problemas que tuve yo una vez se me han ayudado.

Yo también estoy aprendiendo de forma autodidacta. Te puedo decir que lo primero, primerito, aprendas la Lógica de programación. Un libro muy bueno que me ha ayudado muchísimo es "Esencia de la Lógica de Programación", de Omar Trejos Buitirica, o algo así se llama él.

Ese libro te explica, te da ejercicios prácticos, y te establece un poco el orden en que ir aprendiendo las cosas.

El Lenguaje de programación, pues según tus preferencias, mírate las respuestas que me dieron a mí. De todas formas, por ahora que sea simplemente para poner en práctica lo que vayas aprendiendo de Lógica (manejar bucles... etc). No te líes a profundizar mucho en un Lenguaje ahora, creo yo.

Otro foro muy bueno que te recomiendo (en inglés), es

http://stackoverflow.com/

Y eso: practica, practica, y practica. E intenta que alguien que sepa te explique dudas (gracias a cierta persona del foro, por cierto ;) ).

Esa persona sabe que he estado a punto de dejarlo varias veces por eso, porque soy de Letras y sigo dudando si voy a valer; pero por ahora voy avanzando.

Estos días mismo andaba desesperado porque quería hacer un array que me leyera los valores que yo quiero, y me los ordenase de menor a mayor. ¿Cómo lo conseguí al final? Recortando varios papeles con los valores dados, en las posiciones indicadas al ordenador, y observando cómo se mueven esos números o cómo deberían hacerlo para que se haga lo que yo quiero. Cada movimiento una instrucción. Vi dónde fallaba mi lógica... y di con ello :)

Lo que te quiero decir es que a veces hay que mandar la pantalla del ordenador a la mierda. sentarse con un lapiz y papel o algo físico (como mis cuadraditos), que represente por ejemplo lo que pasa en la memoria del ordenador al jugar con las variables...

Es el mejor consejo que me dieron a mí: lapiz y papel. Y empieza por programar cosas reales, del día a día. Sírvete del libro que te he dicho, de internet y foros y, sobre todo, de Google... No hay casi ninguna duda que alguien no haya tenido antes.

A veces me hacen falta pistillas, sí, pero con esas pistas suelo poder acabar resolviendo las cosas (de momento).

Otras veces me lo han tenido que explicar directamente y me ha costado un triunfo entenderlo, pero imagino que eso les ha pasado a todos en algún momento...

Sobre CFGS y tal, yo también ando con pegas -ya que aún no sé ni siquiera si quizá me estoy metiendo en algo que no se me da bien y la estoy cagando por ello-, así que poco te puedo ayudar en eso; pero sí te digo que un título te abrirá muchas puertas. Conozco gente que ha aprendido a programar sola también, pero no sé laboralmente cómo les irá.

Y eso, PRACTICA, PRACTICA Y PRACTICA. Consigue el libro que te he dicho, métele horas, y nos cuentas :)



Un saludo!


Ok gracias por el comentario....ahora mismo pienso mas o menos como tu, jejej
un saludo y eso, ya ire contando.
73 respuestas
1, 2