como mejorar calculo o razonamiento en programacion c++?

Publicado en 'Programación' por alesanand97, 14 Set 2016.





  1. alesanand97

    alesanand97 Miembro frecuente

    Registro:
    12 Jul 2014
    Mensajes:
    224
    Likes:
    7




    les cuento q estodio programacion y que en los examens me viene problemas en donde programas en c++ pero son problemas en donde primero debes pensar como hacerlo, osea es facil aprenderte el lenguaje pero se me es dificil ponerlo en la practica. habra algun tutorial? o solo es practica de puros ejercicios?
     


  2. thebig135

    thebig135 Miembro de bronce

    Registro:
    24 Ene 2015
    Mensajes:
    1,352
    Likes:
    437
    Práctica...
    Tienes que aprender como desarrollar los algoritmos, la parte básica y lógica.
     
  3. Raigen

    Raigen Miembro de bronce

    Registro:
    13 Jul 2015
    Mensajes:
    1,126
    Likes:
    149
    Primero arma tu lógica y el pseudocodigo, eso se aprende practicando. De ahí pasarlo al lenguaje de programación de tu preferencia.
     
  4. fredyac

    fredyac Miembro de plata

    Registro:
    4 May 2010
    Mensajes:
    3,723
    Likes:
    775
    Eso ya depende de como va tu logica.
    Busca ejercicios para potenciar tu logica.
     
  5. Joshua Tree

    Joshua Tree Miembro de bronce

    Registro:
    5 Jun 2014
    Mensajes:
    1,615
    Likes:
    231
    Debe prácticar algoritmos: lógica (para estructurar condiciones y desiciones) y matemática (para los cálculos). Es resto es fácil cuando lo pasa al lenguaje que desee. El usuario del foro @fredyac le ha dado un gran consejo.
    En todo caso, si se encuentra estudiando en algún instituto y este tiene biblioteca, vaya a ella y busque libros del lenguaje de programación que le están enseñando.
     
  6. Phyrox

    Phyrox Miembro nuevo

    Registro:
    17 Dic 2014
    Mensajes:
    23
    Likes:
    1
    se supone que en la universidad no te enseñan un lenguaje sino a desarrollar tu abstraccion.. para eso esta la matematicas y en cuanto a programacion no solo es el lenguaje hay libros muy interesantes por ejemplo el lenguaje C de dennis ritchie.. tiene ejercicios muy interesantes que estoy seguro no leiste..
     
  7. anthony23

    anthony23 Miembro maestro

    Registro:
    5 Dic 2015
    Mensajes:
    337
    Likes:
    13
    Te recomiendo algoritmos y su codificacion de C++ de Cesar Avila y Editorial Macro
     
  8. Automorphism

    Automorphism Miembro frecuente

    Registro:
    26 Ago 2012
    Mensajes:
    67
    Likes:
    18
    Yo aprendí algoritmos con “Introduction to Algorithms”, mejor conocido como CLRS por las iniciales de sus autores (Cormen, Leiserson, Rivest, Stein). Muy bueno, aunque también muy caro. Pero, más allá de usar tal o cual libro, la única manera de aprender a analizar y diseñar algoritmos es resolver los ejercicios del libro. Es decir, tienes que demostrar que tus algoritmos tienen la complejidad deseada (logarítmica, linear, cuadrática, etc.). No harías mal en también consultar un libro de matemática discreta.

    Por otro lado, aprender un lenguaje del tamaño de C++ no es exactamente “fácil”. Es un lenguaje insanamente complicado, con un montón de características: sobrecarga de funciones y operadores, plantillas, especialición de plantillas, SFINAE (“substitution failure is not an error”), Koenig lookup, etc.
     
    A anthony23 le gustó este mensaje.
  9. josé_puñal

    josé_puñal Miembro nuevo

    Registro:
    17 Nov 2016
    Mensajes:
    35
    Likes:
    2
    Vaya...yo me estoy iniciando en esto y, sí, coincido en que aparte de aprender el lenguaje (complicadito pero todo se puede con la práctica), se debe contar con conocimiento sobre la materia a la cual va a estar enfocado el programa.
     
    A anthony23 le gustó este mensaje.
  10. fury618

    fury618 Miembro frecuente

    Registro:
    23 Oct 2014
    Mensajes:
    139
    Likes:
    14
    Pues claro... Practicando y practicando se logran cosas geniales.
     
  11. Automorphism

    Automorphism Miembro frecuente

    Registro:
    26 Ago 2012
    Mensajes:
    67
    Likes:
    18
    @josé_puñal Existen lenguajes más simples, como Scheme y SML, que se pueden aprender en una semana o dos. (Por supuesto, saber un lenguaje de programación no garantiza que puedas lidiar con todas las complicaciones de programar en un entorno profesional.) Pero C++ es una monstruosidad de lenguaje, a tal punto que varios programadores profesionales que usan C++ admiten que no comprenden todas las sutilezas del lenguaje. Apuesto a que la mayoría de profesores (ya sea de universidad o instituto) que enseñan C++ realmente no saben C++.

    Si algún participante en este tema realmente sabe C++, ¿me podría explicar qué es la metaprogramación de plantillas, y cómo funcionan las librerías de metaprogramación como Boost.Hana?
     
    A anthony23 le gustó este mensaje.
  12. josé_puñal

    josé_puñal Miembro nuevo

    Registro:
    17 Nov 2016
    Mensajes:
    35
    Likes:
    2
    Gracias x la aclaración. Es que actualmente estoy practicando en C++ y no he estado revisando otros lenguajes. Reitero las gracias.
     
  13. n00b

    n00b Miembro frecuente

    Registro:
    12 Dic 2015
    Mensajes:
    134
    Likes:
    48
    Yo sé muy poco de C++, pero tal vez ayude un poco:

    Primero tienes que estar familiarizado con lo que son las plantillas o Templates (son como los Generics en .Net o Java) en C++, luego, en cuanto a la metaprogramación, la definición que da la wikipedia creo que es clara y suficiente (aunque para conocer a fondo sobre ese tema hay que tener conocimientos más avanzados y relativos a la currícula de ciencias de la computación).
    La metaprogramación de plantillas se refiere a que usando las plantillas escribirás un programa que genere otro programa: el compilador convierte las plantillas metaprogramadas en otro código (programa) para unirlo finalmente con todo lo demás. De hecho los compiladores hacen eso, hacen inferencias a partir del código que escribes y generan otro código, esto cuando es posible, la finalidad es la optimización (Con esto el computo, los cálculos se hacen en tiempo de compilación y ya no en tiempo de ejecución, haciendo un programa eficiente). Con la metaprogramación de plantillas tu estarías haciendo +/- eso: programas las plantillas de manera que el compilador las convierta al final en datos, estructuras e incluso funciones.

    Se hace evidente que no siempre se debe usar, solo es recomendable en escenarios específicos y sabiendo bien lo que se hace, además la lectura del código para hacer esta metaprogramación no es fácil o cómodo de leer, por ello hay un máxima de una de las leyendas de la computación, Donald Knuth: La optimización prematura es la raíz de todo mal.

    Es un tema interesante, la mejor info al respecto, como siempre, está en inglés, busca en stackoverflow o stackexchange.
     
    A anthony23 le gustó este mensaje.
  14. Automorphism

    Automorphism Miembro frecuente

    Registro:
    26 Ago 2012
    Mensajes:
    67
    Likes:
    18
    @n00b Mi pregunta era puramente retórica. Yo sé muy bien cómo funcionan las plantillas de C++. Dicho sea de paso, la similitud entre las plantillas de C++ y los genéricos de Java y .NET es puramente superficial. Desde un punto de vista semántico (que es lo que realmente importa), las plantillas y los genéricos son completamente diferentes:
    • El verificador de tipos de C++ analiza cada instanciación individual de una plantilla. De hecho, las plantillas se pueden especializar, lo cual hace muy difícil, incluso en principio, analizarlas semánticamente antes de instanciarlas. Las plantillas son efectivamente un sistema de macros, mejor que el preprocesador de C, pero peor que las macros de Common Lisp y Racket.
    • Los verificadores de tipos de Java, C#, VB.NET, etc. analizan las definiciones genéricas de manera... ummm... genérica. Al momento de instanciar una definición genérica, no es necesario verificar nada. Los genéricos son una forma de polimorfismo paramétrico, una característica que se originó y es principalmente popular en lenguajes funcionales estáticamente tipados como ML y Haskell.
    Dicho sea de paso, si crees que las plantillas de C++ se deben usar “sólo en escenarios específicos”, no estás para nada familiarizado con el estilo de C++ moderno (C++11, C++14).
     
  15. n00b

    n00b Miembro frecuente

    Registro:
    12 Dic 2015
    Mensajes:
    134
    Likes:
    48
    Sí, es superficial el parecido. Y sí, sé muy poco de c++, solo lo uso a nivel académico y no a nivel profesional...pero no me refería a las plantillas cuando mencioné que se deben usar en escenarios específicos, sino a la metaprogramación de plantillas, es lo que a primera vista me parece, no estoy muy familiarizado, las razones es la complejidad innecesaria (si se usa para todo, como chiquito con juguete nuevo), no estoy seguro si en todos los casos reduce la Complejidad en términos de eficiencia o más bien de si esta ganancia haga valer la pena el sacrificar la claridad del código...obviamente habrán escenarios donde sí...

    pd. de paso le hago cherry a mi tema, tal vez puedas darme una luz...todos está invitados.
     
    Última edición: 18 Nov 2016
    A anthony23 le gustó este mensaje.