Ir al contenido

publicidad

Foto

Post Oficial de Programación O.T. 3.0


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
15 respuestas en este tema

  • BlackMinEm

  • Diosas de Oro

  • vida restante: 100%
  • Registrado: 07 dic 2007
  • Mensajes: 7.786
#1

Escrito 15 abril 2017 - 22:23

Post Oficial de Programación O.T. 3.0

 

Dado que Zollkron ha confirmado que no podrá pasarse con regularidad para mantener el hilo, abro una nueva versión con su permiso para tratar de mantenerlo al día. ;) 
 
Anteriores versiones:

Versión 1.0 (Zollkron)
Versión 2.0 (ZollkronV2)
 
 
Recopilación de tutoriales y enlaces útiles
 
Iniciación a la Programación

Manual de Iniciación
 
 
 
 
Algoritmia y Estructuras de Datos

Algo08.JPG

Algoritmia y Estructuras de Datos (Web con muchos tutoriales y manuales)
 
 
 
 
Android
 
android-logo.jpg

Android SDK (Entorno Eclipse con las herramientas para programar en Android ya integradas)

Nota: Android SDK está basado en lenguaje Java (ver la sección de Java para más info)
 
Programación en Java para aplicaciones Android:


IDE Eclipse para Java

Configuración de Eclipse para programar Aplicaciones Android
 

 
 
Pascal

pascal_logo.png

Tutorial (carlospes)

Compilador e Ide FreePascal (Software Libre por supuesto)
 
 


C/C++

c_c++.jpg

Tutorial de C
 
Tutorial de C++ (C con Clase)

Tutorial C++ Aplicado a Juegos
 
Tutorial SDL 2.0 usando C++ (orientado a la creación de videojuegos) (en inglés)
 
Librería Allegro (orientada a gráficos en C/C++)

Compilador GNU C/C++ para Windows (Viva el software libre)

IDE Geany (de lo mejorcito y encima opensource)

 
 

Java

java.jpg

Tutoriales:

Thinking in Java (en Inglés)

Tutorial Java2

Compiladores e IDEs para Java:

Java SE (Incluye JDK + NetBeans)

Ide DrJava (Ide Maravilloso por su sencillez y gratuito)
 
IDE Eclipse para Java




Ensamblador

Pipeline_MIPS.png

MARS - Simulador Procesador MIPS

Tutorial Oficial (en Inglés)
 
 


Visual Studio .NET 2013

vs_logo.jpg

Las versiones Express son gratuitas y funcionales. Incluye Visual Basic, Visual C++, Visual C#, y Visual Web Developer (ASP .NET).

Visual Studio .NET 2013

Documentación Oficial

Tutorial VB de ElGuille (este tío es un maquinón en este lenguaje)
 
 
 

Python

python-logo-master-v3-TM.png

Google's Python Class

Documentación oficial de Python 2.7.3 (Py 2.x)
 
Documentación oficial de Python 3.6.1 (Py 3.x)
 
 
 
 
JavaScript / JQuery / Node.js
 
javascript.png
 
Tutorial de iniciación a JS (Mozilla Developer Network)
 
Tutorial de JavaScript de W3Schools
 
Tutorial de JQuery de W3Schools
 
Iniciación a Node.js (JavaScript en el lado del servidor)
 
 
 

Expresiones Regulares
 
screen-shot-2011-10-30-at-122819-pm.png
- Tutorial Completo (En Inglés)

https://www.princeto...Expressions.pdf

- Simuladores Web

https://regex101.com/

http://regexr.com/
 
 
 

Juez de Programación Online UVa

Juez Online UVa
 
 

Un saludo a todos, intentaré ir actualizando.



  • Desmodius

  • Lord Boros

  • vida restante: 100%
  • Registrado: 19 dic 2005
  • Mensajes: 7.253
#2

Escrito 15 octubre 2017 - 08:17

Primera respuesta del hilo. Primera pregunta. :D

 

Hola de nuevo.

Respecto a c++, yo tengo una función en un archivo .cpp:
 

int  estado::get_sigestado(int pos) const {return transicion[pos].siguienteestado;}



¿como declaro esta funcion en el .hpp? Mi duda es que hacer con el const, yo lo tenía asi declarado en el .hpp:

int get_sigestado(int pos) ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);



pero me surgió error diciendo que había un referencia indefinida y no se que y toqueteando con el const me di cuenta que ese era el error, pero es que no se donde poner el const en la declaracion de la funcion en el .hpp. Gracias de antemano.

 

 

¿Alguien me podría explicar, detalladamente, qué significa todo ese código? Me picó la curiosidad en cuanto lo vi, aunque no tenga ni idea de C++. Y, de paso, si alguien le puede ayudar a @jacker02, mejor que mejor.


bN1dQsy.png

Fiel seguidor del Sagrado USB No Convencional ~ ¡Por un mundo no convencional!

¡No estaba muerto... me quedé sin Internet unos meses!


  • jacker02

  • Witch

  • vida restante: 100%
  • Registrado: 01 jun 2009
  • Mensajes: 7.612
#3

Escrito 15 octubre 2017 - 14:41

Primera respuesta del hilo. Primera pregunta. :D

 

 

¿Alguien me podría explicar, detalladamente, qué significa todo ese código? Me picó la curiosidad en cuanto lo vi, aunque no tenga ni idea de C++. Y, de paso, si alguien le puede ayudar a jacker02, mejor que mejor.

 

int es el tipo de valor que va a devolver la función, en este caso un entero. Después estado es la clase a la que pertenece la función get_sigestado, a la cual se le llama pasándole un valor como parámetro, en este caso la posición, que es un número entero. El const significa que dentro de la función no se va a modificar ningún valor, y lo que está entre las llaves es el cuerpo de la función, lo que va a hacer cuando sea llamada, en este caso retornas el siguienteestado que se encuentra en la posición pos del array (vector) transición. Sin saber nada de c++ todo esto puede ser un poco confuso X-D



  • Desmodius

  • Lord Boros

  • vida restante: 100%
  • Registrado: 19 dic 2005
  • Mensajes: 7.253
#4

Escrito 15 octubre 2017 - 21:21

Sin saber nada de c++ todo esto puede ser un poco confuso X-D

 
Gracias por la explicación; lo de const era lo que más dudas me causaba. Y aunque no sé programar en C++, sí lo sé hacer en Java (y un poco de C). :D


bN1dQsy.png

Fiel seguidor del Sagrado USB No Convencional ~ ¡Por un mundo no convencional!

¡No estaba muerto... me quedé sin Internet unos meses!


  • jacker02

  • Witch

  • vida restante: 100%
  • Registrado: 01 jun 2009
  • Mensajes: 7.612
#5

Escrito 30 octubre 2017 - 11:29

Buenas, continúo un poco con mis problemas de antes:

 

yo había hecho un proyecto con 3 clases, menu.cpp y otras dos clases. Mi error fue hacer estas dos últimas clases solo como un .h, es decir puse todo el código ahí. 

 

Bien, fui a separar los ficheros en cabeceras y tal, las declaraciones en .hpp y el codigo en .cpp, y al pasarlo todo, no me da ningún fallo excepto en el menu.cpp donde me salta un "undefined reference" a todas las funciones que he separado en ficheros. Y me estoy volviendo loco porque no se como hacer que funcione. Se que les declaraciones y eso están bien, pero ya no se que más falla. Intenté solucionarlo poniendo #pragma once pero nada sigue igual. A ver si algún alma muy caritativa me ayuda, colgaría mi proyecto aquí, son muy pocas clases, pero me parece un poco feo. Si alguno está dispuesto a echarle un vistazo rápido por favor que me avise. Gracias.

 

EDIT: venga, dejo el código fuente aquí en espoiler por si alguien es mu majete y le echa un vistazo

 

Spoiler

 

Mil gracias a quien pueda ayudarme!

 

EDIT: solucionado, se me olvido compilar uno de los ficheros


Editado por jacker02, 30 octubre 2017 - 13:53 .


#6

Escrito 30 octubre 2017 - 11:46

https://archivoempre...de-ordenadores/

*Imagen retirada por moderación por pasarse de las medidas permitidas de forma descomunal*

                                                              *Sólo xarmanista causa tanto escozor*

M5A97 Evo R2  8 GB 2133 Mhz CL9   FX8320 3,5 Ghz   Geforce 1080 + 1060 CUDA/Physx 

 

http://static1.games...81919-dEADT.png


  • ktya

  • Bahamut

  • vida restante: 100%
  • Registrado: 23 sep 2011
  • Mensajes: 2.520
#7

Escrito 30 octubre 2017 - 20:36

Me quedo por aqui! Gracias

mysign.jpg

myfirma.jpg


  • Desmodius

  • Lord Boros

  • vida restante: 100%
  • Registrado: 19 dic 2005
  • Mensajes: 7.253
#8

Escrito 01 noviembre 2017 - 01:08

#pragma once

 
¿Para qué sirve eso? :-o


bN1dQsy.png

Fiel seguidor del Sagrado USB No Convencional ~ ¡Por un mundo no convencional!

¡No estaba muerto... me quedé sin Internet unos meses!


    ZollkronDIU

  • CANCELADO
  • Registrado: 27 oct 2017
  • Mensajes: 145
#9

Escrito 01 noviembre 2017 - 01:20

 
¿Para qué sirve eso? :-o

Eso es una indicación al compilador de C++ para que no declare la misma función o método de una clase más de una vez. Pero por lo poco que he podido ver el problema del compañero no está ahí. Voy a echarle otra ojeada en cuanto pueda.


"Yo ya no invito a Fantas, como mucho pago el primer preservativo, y veces ni eso" Fdo.: El Señor Lisensiado Zollkron


    ZollkronDIU

  • CANCELADO
  • Registrado: 27 oct 2017
  • Mensajes: 145
#10

Escrito 01 noviembre 2017 - 01:39

Buenas, continúo un poco con mis problemas de antes:

 

yo había hecho un proyecto con 3 clases, menu.cpp y otras dos clases. Mi error fue hacer estas dos últimas clases solo como un .h, es decir puse todo el código ahí. 

 

Bien, fui a separar los ficheros en cabeceras y tal, las declaraciones en .hpp y el codigo en .cpp, y al pasarlo todo, no me da ningún fallo excepto en el menu.cpp donde me salta un "undefined reference" a todas las funciones que he separado en ficheros. Y me estoy volviendo loco porque no se como hacer que funcione. Se que les declaraciones y eso están bien, pero ya no se que más falla. Intenté solucionarlo poniendo #pragma once pero nada sigue igual. A ver si algún alma muy caritativa me ayuda, colgaría mi proyecto aquí, son muy pocas clases, pero me parece un poco feo. Si alguno está dispuesto a echarle un vistazo rápido por favor que me avise. Gracias.

 

EDIT: venga, dejo el código fuente aquí en espoiler por si alguien es mu majete y le echa un vistazo

 

Spoiler

 

Mil gracias a quien pueda ayudarme!

 

EDIT: solucionado, se me olvido compilar uno de los ficheros

Buenas de todos modos te dejo un código mío de la carrera que te puede servir a modo de ejemplo y que funciona bastante bien:

 

 

fichero Producto.h

 

#ifndef __PRODUCTO_H__
#define __PRODUCTO_H__

#include <iostream>

using namespace std;

class Producto
{
    
private:

 long long id;
 string nombre;
 string descripcion;
 float precio;
 
public:

 Producto()
 {
  id=0;
  precio=0;
 }
 
 long long getId() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
 string getNombre() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
 string getDescripcion() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
 double getPrecio() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
 
 void leer() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
 void mostrar() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
    
};

#endif
 

 

Fíjate bien en las directivas que le pasa al compilador para que declare la clase sólo si ya no está declarada. A mí me ha funcionado esto mejor que el #pragma once, aunque en teoría deberían de funcionar igual. También en la cabecera de la clase se declaran los atributos en el apartado private y en el public el constructor de la clase y los métodos.

 

#ifndef __PRODUCTO_H__
#define __PRODUCTO_H__

...

#endif

 

 

Fichero Producto.cpp

 

#include "Producto.h"
#include <iostream>
#include <sstream>
#include <list>

using namespace std;

long long Producto::getId()
{
    return id;
}

string Producto::getNombre()
{
    return nombre;
}

string Producto::getDescripcion()
{
    return descripcion;
}

double Producto::getPrecio()
{
    return precio;
}

void Producto::mostrar()
{
 cout << "1. " << nombre << " (" << id << ")\n  " << descripcion << "\n  " << precio << " euros" << endl << "Total: 1 producto" << endl;    
}

void Producto::leer()
{
 string cadena;
 int caso=0;
 while(getline(cin, cadena))
 {
  istringstream buffer(cadena) ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);    
  switch(caso)
  {
   case 0:
   {
    buffer >> id;
    break;    
   }
   case 1:
   {
    nombre = cadena;   
    break;
   }  
   case 2:
   {
    descripcion = cadena;  
    break;
   }
   case 3:
   {
    buffer >> precio;   
   }
  }
  caso++;
  if(caso==4) break;
 }    
}

Aquí tiene lugar la implementación de la clase Producto.

 

 

Fichero 304.cpp (Principal)

 

#include <iostream>
#include <sstream>
#include "Producto.h"
#include "ColeccionProductos.h"

using namespace std;

Producto p;
ColeccionProductos cp;

string convertir(string cadena) ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);

void procesarInsertar()
{
 p.leer() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
 cp.insertar(p) ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);        
 cout << cp.getNumproductos() << " productos" << endl;
}

void procesarEliminar()
{
 long long identificador;    
 cin >> identificador;
 if(cp.getNumproductos() > 0)
 {
    cp.eliminar(identificador) ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
 }
 cout << cp.getNumproductos() << " productos" << endl;
}

void procesarPalabras()
{
 cp.palabras() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
}

void procesarPrecios()
{    
 double min=0, max=0;
 cin >> min;
 cin >> max;
 cp.precios(min, max) ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);    
}

void procesarProducto()
{
 long long identificador;
 cin >> identificador;
 cp.producto(identificador) ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
}

int main(void)
{
 string comando;
   while (cin >> comando)
   {
      if (comando=="insertar")
      {
          procesarInsertar() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
      }
      else if (comando=="eliminar")
      {
          procesarEliminar() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
      }
      else if (comando=="palabras")
      {
          procesarPalabras() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
      }
      else if (comando=="precios")
      {
          procesarPrecios() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
      }
      else if (comando=="producto")
      {
          procesarProducto() ON DUPLICATE KEY UPDATE author_name=VALUES(author_name), post=VALUES(post), edit_name=VALUES(edit_name), post_edit_reason=VALUES(post_edit_reason), post_field_t1=VALUES(post_field_t1), post_field_t2=VALUES(post_field_t2);
      }
   }
 return 0;    
}

Y en el programa final es donde ya se importa. Espero que esto haya servido de ayuda.

 

Un saludo.


"Yo ya no invito a Fantas, como mucho pago el primer preservativo, y veces ni eso" Fdo.: El Señor Lisensiado Zollkron


  • jacker02

  • Witch

  • vida restante: 100%
  • Registrado: 01 jun 2009
  • Mensajes: 7.612
#11

Escrito 01 noviembre 2017 - 18:23

 

 

Muchas gracias brother, me fue bastante útil, la cosa es que la directivas esas me confundían por lo de que el nombre fuese con barras bajas y tal, no sabía como se aplicaba, aunque por lo que veo pragma once es más sencillo así que de momento que me funciona seguiré con eso, pero si algún día tengo problemas con eso tendré en cuenta esto que me dices. Gracias!



  • jacker02

  • Witch

  • vida restante: 100%
  • Registrado: 01 jun 2009
  • Mensajes: 7.612
#12

Escrito 06 noviembre 2017 - 17:18

Hola, una duda seguramente muy estúpida.

 

yo tengo una variable char, y otra int, ¿cómo hago para juntar las dos en un string?

 

osea,

 

char var= "a";

int numero= 3;

 

sumarlas para que queden en un string así

 

string h = "a3"

 

Gracias de antemano.



  • Slask

  • Genos

  • vida restante: 100%
  • Registrado: 20 oct 2005
  • Mensajes: 1.860
#13

Escrito 06 noviembre 2017 - 17:21

Hola, una duda seguramente muy estúpida.

 

yo tengo una variable char, y otra int, ¿cómo hago para juntar las dos en un string?

 

osea,

 

char var= "a";

int numero= 3;

 

sumarlas para que queden en un string así

 

string h = "a3"

 

Gracias de antemano.

 

String.valueOf(var)

String.valueOf(numero)


Imagen Enviada


  • jacker02

  • Witch

  • vida restante: 100%
  • Registrado: 01 jun 2009
  • Mensajes: 7.612
#14

Escrito 06 noviembre 2017 - 17:24

String.valueOf(var)

String.valueOf(numero)

 

Osea que si quiero sumar los dos tendría que hacer

 

string h= String.valueOf(var) + String.valueOf(numero)

 

¿correcto? Gracias por la respuesta

 

Coño, se me olvido decir que estaba programando en c`++, que creo que esas funciones no están disponibles ahí.


Editado por jacker02, 06 noviembre 2017 - 17:30 .


  • Surzi

  • Meteor

  • vida restante: 100%
  • Registrado: 23 mar 2010
  • Mensajes: 4.303
#15

Escrito 06 noviembre 2017 - 17:40

Al menos para C++ yo incluiría http://www.cplusplus.com/doc/tutorial/




Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad