Perdido en C++

djHaL

Hola a todos!!

Estoy aprendiendo C++ y me he perdido totalmente, me he leído los tutoriales de c.conclase.net y son bastante buenos, con ejercicios y demás cosas, esta muy currada esa web la verdad, pero ahora me asaltan las dudas y como continuar aprendiendo el lenguaje.

Vengo del PHP, ASP, HTML, MYSQL, CSS, etc.. y vale, crear aplicaciones webs es sencillo porque son casi todas calcadas unas de otras, registros con base de datos, formularios, envío de variables, funciones, y poco más, para mi la programación web es sencilla y la controlo bastante bien, ahora me gustaría empezar a montar aplicaciones de entorno orientada a objetos, quiero aspirar a crear un sistema operativo (algo cutre y sencillo vamos) pero es mi meta ahora.

Se perfectamente que la imaginación es la primera cosa que debe de aparecer en la programación, como en casi todo, esta claro, y tengo bastante claro lo que quiero hacer y como lo quiero hacer, pero me cuesta mucho empezar a hacerlo, es el problema.

Si me pongo a estructurar una web, por ejemplo, lo primero que quiero tener en mis manos es una base con la que trabajar, un diseño, por ejemplo, que me aporte ideas, unos logos, unos botones, y más o menos todo en su lugar, de .PSD lo paso a HTML, y aquí empiezo a trabajar con código, le voy introduciendo PHP hasta que la web va haciendo lo que le voy pidiendo, poco a poco, hasta aquí todo correcto.

¿Como coño hago esto con C++? me siento tan perdido que no entiendo como empezar. bueno sí, ya tengo el diseño del sistema operativo mas o menos en mi cabeza, pero como lo plasmo y hago que el puntero del ratón se mueva por la pantalla?

¿Por donde empezar?

La idea es sencilla, solo quiero una pantalla negra con un puntero de ratón, nada más, ¿como consigo esto? es que no tengo ni idea como hacer esto por mucho lenguaje que sepa, no se como crear esto, y mira que parece bastante sencillo.

Sé que puede ser una meta muy difícil de alcanzar, aspiro a mucho, debería empezar un poco mas bajo, perfecto, lo puedo llegar a comprender, os pregunto a los que sabéis ya C++ y habéis echo proyectos y cosas, por que programa empezasteis vosotros? con que guía-tutorial-referencia?

Bueno nada más, si me surge cualquier duda pues lo postearé.. gracias a los que me leáis :)

cabron

Se te ha ido la pinza por completo, primero aprende a hacer programas de entrada y salida por consola, y con eso ya tienes para unos meses en c++

2 1 respuesta
BLZKZ

"ya tengo el diseño del sistema operativo mas o menos en mi cabeza"

WHAT

4 1 respuesta
djHaL

#2 vale, necesito ejercicios de nivel medio que me llenen..

#3 me refiero a la estructura del programa

2 respuestas
BLZKZ

#4 necesitas empezar con un hola mundo, como todo el mundo, ver el funcionamiento de condicionales, bucles y entrada salida, y luego ir metiendote más en materia.

Programar desktop no es como php ni por asomo, asi que no intentes correr antes de andar :)

NeV3rKilL

#4 Parece que tu y el resto de la humanidad tenemos conceptos muy diferentes de "sistema operativo".

1 respuesta
djHaL

#6 si bueno tengo que pensar bien como funciona un sistema operativo, no me quiero basar en los que ya hay, algo más echo por mi, ¿sabes?

Voy a empezar con algo sencillo..

Aré una consola básica, con 4 comandos que hagan lo que les voy pidiendo.. la iré mejorando poco a poco, hasta que pueda arrancar un entorno desktop

1 respuesta
cabron

#7

Pero vamos a ver, no sé hasta donde has investigado... pero es que creo que estás pensando en un sistema operativo desde el punto de vista del usuario... pensando que lo vas a poder hacer como una aplicación normal, y no tiene nada que ver.

Para hacer un sistema operativo necesitas conocer como funciona la interfaz de la bios, saber como hacer un bootloader, como se estructura la información en un mbr, conocer como funciona el sistema de interrupciones para acceder al hardware, gestión de memoria, y un porrón de cosas más.

De entrada, muchas de las funcionaliddes de C++ no las vas a poder usar, por ejemplo sin gestión de memoria no vas a poder tener una tabla virtual para el polimorfisimo, y a saber cuantas cosas de la librería estándar no funcionan y hay partes que solo las puedes hacer en ensamblador.

Yo creo que ese es el problema, que piensas que un sistema operativo es una aplicación como cualquier otra, y para nada, es algo muy muy diferente, y si lo que quieres es aprender C++, has hecho una elección muy mala para practicar.

#9

No te lo estoy diciendo a malas, precisamente al contrario, te lo digo para que ahora sepas un poco más y veas por que no tiene sentido lo que quieres hacer.

1 1 respuesta
djHaL

#8 bueno nadie nace sabiendo.. he podido decir alguna burrada, lo sé, no sé hasta donde puede llegar C++ y bueno creía que se podía construir un sistema operativo (cutre) llamemoslé "ejercicio" pero bueno puedo basar mis metas en algo mas sencillo, como un emulador/aplicación de sistema operativo.. jeje

2 respuestas
BLZKZ

#9 no es que hayas dicho "alguna" burrada, es que directamente TODO lo que estás diciendo es una locura.

Te hemos dicho que para poder hacer algo avanzado debes empezar por lo básico, si quieres hacer algo que "emule" ser un SO, necesitas primero conocer como funciona un programa básico utilizando lo que dije en #5.

Si no tienes ni puñetera idea de c++ al menos dejate aconsejar.

1 respuesta
djHaL

#10 sí yo me dejo aconsejar (lo siento si se entiendo otra cosa), los ejercicios típicos del hola mundo, las condicionales, los bucles, etc los entiendo a la perfección y los sé usar, entiendo todo esto como básico, y (creo) que estoy en el salto básico-medio donde no se como continuar, creo que la mejor forma es haciendo ejercicios más difíciles.

1 respuesta
BLZKZ

#11 Pues peganos el código de un programa que enseñe un menú con 5 opciones y que cada una de ellas haga algo (una suma o lo que quieras), siendo la última salir, y hasta que en ese menú principal no pulses salir que no termine el programa.

Así comprobamos tu nivel

2 respuestas
MadrizKings

Un sistema operativo, para empezar. Not bad, not bad.
Empieza por el principio, if, while,for y lo basico, cuando manejes eso ya podrás experimentar. Si necesitas ejercicios puedo pasarte algunos.

1 respuesta
B

Si empiezas a diseñar aplicaciones web en base al maquetado creo que deberias aprender realmente a programar, esa es la razón principal por la que no sabes por donde empezar con c++. Aprente MVC patrones de diseño(singleton,factory,etc) y POO en el lenguaje que sepas y una vez lo controles perfectamente podrás empezar con c++ sin problemas.

1 respuesta
djHaL

#12 me pondré a ello, no me cronometres que me pico.. :(
#13 vale, gracias.
#14 Referencias por favor, libros, textos, pdf's, webs, guías, tutos!! :)

1 respuesta
B

#15 google es tu amigo. Para PHP mirate la guía de certificación Zend PHP 5 que cubre todo lo relativo a programación orientada a objetos. Luego mirate patrones de diseño comunes como singleton,factory,etc y aprende a implementarlos en el lenguaje que quieras. Una vez tengas esos conceptos claros aprende a usar cualquier framework como Zend, symfony para que aprendas a usar el modelo-vista-controlador pues vas a necesitarlo cuando te pases a aplicaciones de escritorio. Si prefieres empezar de 0 con c++ mirate "thinking in c++" que es gratuito.

2 respuestas
BLZKZ

#16 antes de meterse en "frameworks para aprender MVC" yo le instaría a que se mirase arquitectura multicapa (dos capas, tres capas...) y así entender más la razón de usar un diseño que implemente MVC

1 respuesta
elkaoD

#1 realmente quieres aprender C++? Si es por curiosidad o ganas de aprender en profundidad, adelante. Si no, te recomendaría CUALQUIER otro lenguaje más eficiente (en el sentido de tiempo_gastado/resultados) y con una curva de aprendizaje más suave.

Incluso Java te va a hacer más fácil el paso a POO... o ya que has tocado programación web, puedes aplicar nociones de POO en PHP, ASP.net, etc. para ir entrando en materia.

Por otro lado, lo que comentas de cómo diseñarlo y tal, tú mismo comentas el problema: tienes la solución en la cabeza. Ponte con un papel o prototipa (hasta que te des la hostia) e irás viendo como desaparece tu problema. Si te pones a prototipar y no te sale (ya sea en código o en papel) es que no sabes suficiente sobre lo que quieres hacer y te toca gastar tiempo en estudiar.

Por ejemplo, entender todo el sistema de herencia, cómo gestiona C++ la herencia múltiple, etc. ¿Eso te lo has mirado ya o has visto los fors, algo de la librería estándar y poco más? La cuestión no es hacer un "hola mundo", pero sí empezar por lo básico... deberías saber definir sin dudar términos como herencia, polimorfismo (parece una tontería pero si lo sabes explicar es que lo entiendes de verdad.)

Ojo, por lo que veo te queda mucho por delante. Yo me quedaría en el mundo web que es lo que ya controlas y tocaría las bases de POO por esa rama.

djHaL

#12

#include <iostream>
#include <conio.h>
#include <string.h>

using namespace std;
int main(){
  
string suma ="1.calculadora de sumas"; string resta ="2.calculadora de restas"; string multi ="3.calculadora de multiplicar"; string salir ="4.salir"; string intro ="numero a "; string intro2 ="segundo numero a "; string resul ="el resultado es:"; string end = "\n"; float opcion; do { cout<<end<<suma<<end<<resta<<end<<multi<<end<<salir<<"\n> "; cin>>opcion; if (opcion == 1){ double suma1; double suma2; cout<<"has elegido: "<<suma<<end; string s = "sumar:"; cout<<intro<<s; cin>>suma1; cout<<intro2<<s; cin>>suma2; cout<<resul<<suma1+suma2; }else if (opcion == 2){ double resta1; double resta2; cout<<"has elegido: "<<resta<<end; string r ="restar:"; cout<<intro<<r; cin>>resta1; cout<<intro2<<r; cin>>resta2; cout<<resul<<resta1-resta2;
}else if (opcion == 4){ cout<<"Toca una tecla para salir"; }else{ cout<<"\n\nno has elegido una opcion valida, \n\nelige una opcion:\n"; } } while (opcion>4); getch(); }

No esta acabo pero le queda ná.. y ya son las 4, me he picao, por cierto lo he echo en 1 hora o menos, es que he estado leyendo mil cosas :)

No es muy diferente al PHP, cambian 4 cosas aparentemente por lo que llevo aprendido.

3 respuestas
elkaoD

#19 No es muy diferente al PHP, cambian 4 cosas aparentemente por lo que llevo aprendido.

No sabes lo que estás diciendo.

2
RdNN

else if... else if... else if... else if... else if... else if...

Opción para depurar tu código:
http://msdn.microsoft.com/en-us/library/aa278223%28v=vs.60%29.aspx
Web con mucho material (Página web de un antiguo profesor mio):
http://www.nachocabanes.com/

BLZKZ

#19 queda mucho mas legible el codigo sin usar variables para esos strings, puedes meterlos directamente en cout y usando un switch.

¿Ves como no sabes ni lo básico? XD

Y sí, c++ es muy diferente a php.

Edit: por cierto si le meto un 0 ¿qué pasa? ¿y una letra? No se, pero lo mires por donde lo mires no sabes lo que crees que sabias, y eso que dije algo que debias hacer en 5 o 10 minutos :s

1 respuesta
RdNN

#22 si le mete una letra casca, si le mete un 0 salta aquí y terminará el bucle:

else
{
cout<<"\n\nno has elegido una opcion valida, \n\nelige una opcion:\n";
}

pero si, faltan muchísimas cosas por depurar.

1 respuesta
BLZKZ

#23 y que se salga del bucle está mal, ¿o no?
y hasta que en ese menú principal no pulses salir que no termine el programa.
De hecho con que le meta cualquier numero <4 se sale del bucle y eso está mal :P

#25 xD ya :)

1 respuesta
RdNN

#24 si si, si te estaba dando la razón xDDD

como esta hecho ahora, solo funcionarían 1,2 y 4 porque la opción 3 tampoco estas hecha y con cualquiera de estas 3 opciones solo las ejecutaría una vez.

1 respuesta
0buS

UN sistema operativo... solo cuando llegues al sistema de interrupciones, odiarás la idea de hacer un sistema operativo xD.

Yo usaría C++ si vas a trabajar con punteros... si no porque no usas JAVA? Lo veo mucho más sencillo, práctico y auto didáctico.

PD: Sacate de la cabeza la idea de hacer un SO. No por intentar hacer un SO vas a aprender más rápido a programar. De hecho ni aunque te ayudaran, no te enterarías de nada de lo que estás haciendo, porque eso conlleva bastante más que "programación".

1 respuesta
BLZKZ

#26 si solo fuera eso... deberia hacer "drivers", sino ya me contarás las interrupciones de que te sirven si no te puedes entender con el hardware xD

Hay que saber mucho, y no precisamente de programación para hacerlo. Yo no sabria ni por donde empezar desde luego (bueno sí, cogeria libros de la biblioteca a saco), pero aun así no se me ocurriria hacer un SO, es una locura para una sola persona xD

1 respuesta
djHaL

eh, que dije que estaba sin acabar!! gracias por las sugerencias y referencias, las tengo muy en cuenta todas, he visto lo de la letra y el 0, son matices que sé que tengo que depurar, sé perfectamente que existe el switch, en PHP también existe, pero estaba probando los if's, todavía no se como funcionan exactamente los switch's, tranquilidad que acabo de aterrizar :U

1 respuesta
BLZKZ

#28 while (opcion != 4 ) te quita la del 0 y que se salga del bucle con las demás opciones, ¿no conoces los operadores básicos?

La de la letra la puedes "dejar pasar" de momento, pero hay varias maneras, ahora no me quiero meter en profundidad pero imagino que al intentar castear a int una variable no "convertible" a int petaría, si haces un try...catch lo solucionarias (digo creo porque hace mucho que no toco c++)

Edit: este es un ejercicio para que veas que tampoco sabes programar en php, porque si te hubiera pedido algo similar en ese lenguaje habrías fallado en lo mismo. Tienes que aceptar que no sabes programar (aunque suene duro) y empezar a darle desde 0 :)

#30 ¿? :S

1
MadrizKings

Te cité mal, disculpa.

1 respuesta

Usuarios habituales