Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Alex Rodríguez

Páginas: 1 ... 85 86 87 88 89 [90] 91 92 93
1781
Hola samchg, para hacer esto necesitas saber programar bajo programación "tradicional" imperativa o estructurada, así como con programación orientada a objetos.

La forma más fácil que veo es: los campos de la clase calculadora ya no serán campos de una clase, sino variables globales.

Los métodos de la clase ya no serán métodos, sino funciones o procedimientos.

Ya no crearás un objeto en el main ni invocarás sus métodos, sino simplemente invocarás procedimientos o funciones. El código sería algo así (no lo he probado, habría que probarlo):

Código: [Seleccionar]
/* Los campos de la clase los escribimos como variables */

float numero,total,anterior;
char op;


/* Los métodos de la clase los definiremos como funciones */

/* El procedimiento calculadora recibe valores y los asigna a variables */
calculadora(float n, float t, float ta)
{
numero=n;
total=t;
anterior=ta;
}
};

/* El procedimiento opcion */
void opcion()
{
char opcion;
cin>>opcion;
op=opcion;
}

/* El procedimiento vacia */
void vacia()
{
float n;
cin>>n;
total=n;
}

/* El procedimiento operaciones */
void operaciones()
{
float n;
do
if (op=='+')
{
system("cls");
anterior=total;
cin>>n;
total=total+n;
cout<<"= "<<total;
n=0;
cin>>op;
}
else
if (op=='-')
{
system("cls");
anterior=total;
cin>>n;
total=total-n;
cout<<"= "<<total;
n=0;
cin>>op;
}
else
if (op=='*')
{
system("cls");
anterior=total;
cin>>n;
total=total*n;
cout<<"= "<<total;
n=0;
cin>>op;
}
else
if (op=='/')
{
system("cls");
anterior=total;
cin>>n;
if (n==0)
{
cout<<"Prohibido dividir entre cero, ingrese otro numero "<<endl;
cin>>n;
}
else
{
total=total/n;
cout<<"= "<<total;
n=0;
cin>>op;
}
}
else
if (op=='e')
{
system("cls");
total=anterior;
cout<<"= "<<total;
cin>>op;
}
else
if (op=='c')
{
system("cls");
total=0;
cout<<"= "<<total;
cin>>op;
}
while((op=='+')||(op=='-')||(op=='*')…

}

/* El main del programa */

int main()
{
cout<<"Calculadora: Ingrese las operaciones que desea realizar"<<endl;
cout<<"Pulse c para borrar ultima operacion "<<endl;
cout<<"Pulse e para borrar todo "<<endl;
cout<<"Pulse cualquier otra tecla para salir "<<endl;
calculadora (0,0,0);
vacia();
opcion();
operaciones();
cout<<" "<<endl;

1782
Ciertamente el tema de punteros no es una cuestión fácil de entender. La primera cuestión sería tratar de pensar que un identificador como numeroCoches lleva asociados varios atributos: un atributo sería la localización en memoria expresada como una dirección reconocible por el ordenador, supongamos que esa dirección fuera x80434034. Otro atributo sería el valor contenido en esa dirección de memoria, que en un momento dado puede ser 34 y en otro 47. También el identificador tiene otros atributos como por ejemplo el tipo de dato (por ejemplo "Integer").

Ahora, ¿Qué es un puntero? Un puntero sería un identificador cuyo contenido en lugar de ser un valor es una dirección de memoria (una referencia). Para acceder al valor que hay en esa dirección de memoria se dice que hay que desreferenciar el puntero: es decir, ir al valor contenido en la referencia en vez de a la referencia en sí.

1783
Comunidad / Re:eliminación de artículos de zona crash
« en: 22 de Mayo 2012, 07:53 »
Hola Tanci, veo que tienes bastante capacidad de observación. Y efectivamente hemos estado haciendo algunos cambios en la forma de presentación de la web. Son pequeños cambios con los que tratamos de ir mejorando, hasta cierto punto dirigidos por criterios de diseño pero por otro lado también podríamos hablar de prueba y error en el sentido de que si después de un cambio nos llegan muchas críticas negativas lo habitual es que demos marcha atrás. En el caso que comentas de los títulos lo que me extraña es que digas que ahora los estás viendo de forma rectangular, cuando en teoría están con la forma ovoidal. Pienso que puede ser debido al navegador u ordenador que estés utilizando. Algunos aspectos de la presentación de las webs dependen del ordenador - navegador (Internet explorer, mozilla Firefox, Google Chrome). Así, aunque nosotros tengamos configurada la presentación ovoidal en algunos navegadores se mostrará rectangular porque no son capaces de generar la forma ovoidal. Eso es lo que supongo que debe estar pasando, porque yo al menos en los dos o tres ordenadores que he probado lo veo ovoidal. Saludos y gracias por tus sugerencias y comentarios que siempre son interesantes.

1784
Hemos corregido la errata en el diagrama de flujo que se comentaba en este hilo, tanto en la web como en el pdf. Gracias por notificarlo. Saludos.

1785
Comunidad / Re:eliminación de artículos de zona crash
« en: 25 de Abril 2012, 10:40 »
"Al hilo" de este asunto, acabamos de publicar un bonito texto con fotografías e imágenes de nuestra amiga Tanci. ¡A disfrutarlo"

El link:

https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=575:el-aljibe-y-el-spa-reflexiones-en-torno-al-agua&catid=54:articulos-para-no-dormir&Itemid=177

1786
Comunidad / Re:eliminación de artículos de zona crash
« en: 21 de Abril 2012, 14:30 »
Hola María, gracias por tu "toque de atención". De cualquier manera, informarte que seguiremos publicando próximamente artículos en la zona crash, y que volveremos a ponerlos en la página principal de la web. En este caso, por motivos de organización, no lo hemos mantenido en la página principal pero no te preocupes que seguimos con la zona crash. Saludos.

1787
El error desde mi punto de vista es que no tienes las bases, y si intentas construir un edificio empezando por el tejado... no te va a salir.

Estás haciendo cosas muy raras... cosas que señalan que no entiendes bien los conceptos. Te recomendaría que empezaras con el curso de Bases de la programación.

De cualquier manera voy a tratar de orientarte algo:

Visual Basic es un lenguaje basado en eventos (orientado a eventos). El código se ejecuta cuando ocurre un evento. Por ejemplo un evento es la carga de un formulario, y otro evento es el evento click sobre un botón.

Así el código dentro de un Private Sub cmdSiguiente_Click() ....... End Sub es el código que se ejecutará cuando ocurra el evento "click del usuario sobre el botón".

Ahora fíjate lo que haces:

Private Sub cmdSiguiente_Click()
Dim Montosolicitado As Double

Declaras una variable para que se cree después de que el usuario haga click. No creo que esto tenga sentido. Normalmente las variables se declaran o en cabecera del formulario, o a lo sumo en el form_load, es decir, cuando carga el formulario, pero declararla dentro del código de respuesta a un click... frío frío.

Después fíjate lo que haces... Estableces el valor de Porcentaje en función de Cuotasadevolver declarado en el mismo procedimiento de respuesta a un click. Obviamente Cuotasadevolver no tiene ningún valor, pues lo acabas de crear y no ha ocurrido ningún evento que permita que tenga valor.

Obviamente el Porcentaje no es conocido hasta que ocurre el evento click sobre el botón. ¿Cómo quieres que se ejecute el código antes si tú mismo estás diciendo que se ha de ejecutar cuando ocurra el evento click sobre el botón?

No te quiero desanimar, al contrario, te quiero animar a que empieces el curso de Lenguaje de programación Visual Basic por el principio y lo vayas siguiendo; de otra manera me parece que frío frío...

Saludos y suerte.

1788
Si ya tienes la base de datos y ya eres capaz de consultarla, creo que simplemente tengas que usar un condicional if then

if existenDatos then
      nombreControl.Visible = True
else
      nombreControl.Visible = False

Es decir, hay propiedades de los controles que te permiten que se muestren o que no se muestren. No estoy del todo seguro de si la propiedad es Visible o Hidden o Enabled, pero usando las propiedades de los controles puedes hacer que se muestren o no se muestren.

1789
La primera cuestión que veo es que si vas a usar una base de datos tendrás que saber qué base de datos vas a usar, tanto el tipo de base de datos como dónde va a estar alojada, por ejemplo en un servidor. Si no sabes esto es como si quieres buscar una ficha en un armario pero no sabes donde está el armario o no tienes armario, ¿entonces cómo buscas la ficha?

1790
Otra lección importante que me parece deberías extraer es que si no tienes las bases o fundamentos, cualquier pequeña cosa que intentes te va a resultar muy difícil porque realmente al faltarte las bases no llegas a comprender cómo se debe afrontar y resolver un problema.

Creo que te vendría bien seguir el curso sobre Lenguaje de programación Visual Basic. Aquí te dejo el link al mismo: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61

No te hablo ya del curso de Bases de la programación porque me imagino que no tienes tiempo. Lo que no sabe la gente es que el tiempo que se dedica a adquirir fundamentos después nos permite ir muchísimo más rápido y hacer las cosas muchísimo mejor. En fin, queda dicho... Intentaremos ayudar en la medida de lo posible. Saludos.

1791
Por cierto, después de limpiarlo todo tendrás que volver a poner LimpiarFormVentas = False porque si no se te va a quedar siempre como True y no funcionaría.

1792
Tienes que controlar desde dónde actúas. Por ejemplo, no puedes pretender limpiar el formulario 1 desde un botón del formulario 4.

A mí lo que se me ocurre es algo así como:

modulo 1
Public Apellido As String
Public Nombre As String
Public Dni As String
Public RPS As Double
Public RSS As Double
Public Porcentaje  As Double
Public Comision As Double
Public LimpiarFormVentas As Boolean

Es decir, tener una variable global que te controle si hay que limpiar el formulario.

Luego:

Private Sub cmdInicio_Click()
LimpiarFormVentas = True
Ventas.Show
End Sub

Ahora en el form ventas en el form_load pondríamos algo así:

if LimpiarFormVentas = True Then
Text1.Text = "  "
Text2.Text = "  "
Text3.Text = "  "
Text4.Text = "  "
Text5.Text = "  "
Text6.Text = "  "
Text7.Text = "  "
Text8.Text = "  "
Text9.Text = "  "
Text1.SetFocus
... etc etc


Si no es en el form_load tendrá que ser cuando el formulario coja el foco o algún evento de deste tipo:

Private Sub Form_GotFocus()
if LimpiarFormVentas = True Then
Text1.Text = "  "
Text2.Text = "  "
Text3.Text = "  "
Text4.Text = "  "
Text5.Text = "  "
Text6.Text = "  "
Text7.Text = "  "
Text8.Text = "  "
Text9.Text = "  "
Text1.SetFocus
End Sub

A lo que me refiero, en definitiva, es que cada cosa tiene su ámbito. Si quieres modificar el form1 tendrás que hacerlo desde el form1, no desde otro lado.

1793
Creo que el SetFocus es sólo para los controles (textBox, botones, etc.). En el caso de los formularios (forms) el que se muestren u oculten lo puedes controlar con los métodos Show y Hide propios de formularios.

Te pongo un ejemplo:

Tenemos un formulario denominado Form1, en el cual existe un label denominado label1 y un botón denominado Command1 cuya propiedad Caption es "Pasar a Form2"

Tenemos un formulario denominado Form2, en el cual existe un label denominado label1 y un botón denominado Command1 cuya propiedad Caption es "Pasar a Form1"

El código asociado al formulario 1 es:

Private Sub Form_Load()
Label1 = "ESTE ES EL FORM 1"
End Sub

Private Sub Command1_Click()
Form2.Show
Form1.Hide
End Sub


El código asociado al formulario 2 es:

Private Sub Form_Load()
Label1 = "ESTE ES EL FORM 2"
End Sub

Private Sub Command1_Click()
Form1.Show
Form2.Hide
End Sub


De esta manera, puedes saltar al formulario que quieras (ir al inicio, ir al final, ir a donde quieras). Lo único que tienes que hacer es mostrar los forms que quieras con el método Show y ocultar los demás.

1794
SetFocus es un método que te permite fijar la ventana u objeto activo en un momento dado.

No puedes usar SetFocus en el formload ni en las declaraciones generales.

Para establecer el foco en un formulario usa una expresión como:

form1.SetFocus

Para establecer el foco en un control concreto usa algo como:

Text4.SetFocus

Piensa bien el orden en que vas fijando el foco. Es decir, el foco tendrás que fijarlo después de que el usuario haya pulsado un botón determinado, para enviar el foco allá donde quieras ponerlo. No tendrá sentido que establezcas el foco en medio de una declaración de código sin que el usuario haya pulsado algún botón.


1795
Veamos:

esto en form porcentaje
Dim Porcentaje As Double
Porcentaje = Val(Text3)  Rem Aquí dices que porcentaje es lo que contenga Text3
Comision = (RPS + RSS) * Porcentaje / 100
Text3.Text = Comision Rem aquí dices que Text3 es Comision
Comision.Show
End Sub

No le veo sentido a lo que haces. Tienes que detenerte a pensar:

Un control Text es un control u objeto que contiene texto. Ese texto, si es un valor numérico, lo puedes transformar en un valor numérico. Pero ¿qué sentido tiene que digas Text3.Text = Comision después de haber dicho que Porcentaje era el contenido de Text3? Yo al menos no le veo sentido.

Si me pasas en un adjunto los archivos del proyecto de Visual Basic te lo miro directamente viendo el código en mi ordenador...


1796
¿Por qué no pones todo el código que tienes, ordenadamente, para verlo en conjunto?

1797
Aquí tienes un error:

Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Val(Text3) = Comision
End Sub

Supongo que lo que querías poner es:

Private Sub Form_Load()
Text1.Text = Apellido
Text2.Text = Nombre
Comision = Val(Text3)
End Sub

1798
Creo que la sintaxis Comision.Show no es correcta, a mí por lo menos a primera vista no me lo parece.

El resultado tendrás que mostrarlo dentro de un Label o de otra manera.

Créate un Label en el formulario (de la misma forma que creas un botón puedes crear un label) que por ejemplo se llamará Label1. Luego escribe algo así como

Show
Label1.Caption = "El resultado obtenido es: " & Comision


También puedes probar para ver si está funcionando con una instrucción print como:

Print "El resultado obtenido es " & Comision & " aquí puedes añadir texto si quieres"

Una vez esté funcionando ya le pones el formato que más te guste, como si quieres ponerlo en un msgBox...


1799
Te comento las cosas que no me parecen correctas:

1. Si has declarado Porcentaje as Double previamente, ¿para qué lo vuelves a declarar como Porcentaje as Single? Si ya lo tienes declarado, no veo para qué volverlo a declarar.

2. Si has declarado una variable que se llama Comision, ¿cómo estás usando una variable que se llama Comisionanual? Si es la misma variable, no necesitarás declararla de nuevo. Si es una variable distinta, necesitarás declararla con su nombre correcto.

Con respecto a la configuración de tu ordenador para el uso de punto o coma como separador decimal, usa el separador que te funcione. Podrías implementar el que cuando se introduzca un separador no válido te lo transforme automáticamente en el otro, pero eso ya serían mejoras. Lo primero es conseguir que el programa funcione. Saludos.


1800
Discculpen las molestias y para que me entiendan mejor les paso el ejercicio, no para que me lo hagan sino que me aclaren y pueda entenderlo

1)Se debe diseñar un sistema compuesto por 4 form. que calculara la comision anual variable obtenida de las ventas mensuales de cada empleado

2)diseñar los sig. form.a)debe contener el titulo ventas totales del primer semestre -- apellido, nombre y dni del empleado -- Las ventas totales del primer semestre discriminadas por mes, un boton cancelar que anula todo el procedimiento y un boton siguiente que nos traslade a la pantalla dos

b) debe contener el titulo ventas totales del segundo semestre -- los datos del empleado que deben aparecer automaticamente ya que fueron ingresados en el form.

1 -- discriminar por mes las ventas del segundo semestre

c) debe mostrar el total del primer semestre y solicitar que se ingrese el òrcentaje de comision

d) debe mostrar los datos del vendedor y la comision anual obtenida, que se obtendra de la siguiente manera sumar el total del primer semestre al total del segundo semestre este resultado multiplicarlo por el porcentaje de comision ingresado y dividirlo en 100

En la primera cuestion : RPS SIGNIFICA RESULTADO PRIMER SEMESTRE y esta variable esta declarada en un modulo con las demas variables
RSS significa Resultado Segundo Semestre

modulo 1
Public Apellido As String
Public Nombre As String
Public Dni As String
Public RPS As Double
Public RSS As Double
Public Porcentaje  As Double
Public Comision As Double

En la 2º cuestion:  - La segunda cosa que llama la atención es la línea Porcentaje = Text3.Text

Private Sub cmdSiguiente_Click()
Dim Porcentaje As Single
Porcentaje = Val(Text3)
Comisionanual = (RPS + RSS) * Porcentaje / 100
Comisionanual.Show
End Sub

Corregi lo que me dijiste aún me da un error de Compilacion-- uso no valido de la Propiedad  Comisionanual =
con referencia a  La función Val sólo reconoce el punto (.) como separador decimal válido (aunque esto puede verse afectado por la configuración regional de tu ordenador)

Mi configuracion esta como separador la coma,  en ese caso como utilizaria la funcion de conversion de tipos de como CSng ó CDbl para convertir la cadena a un número.

Gracias y disculpe las molestia

Páginas: 1 ... 85 86 87 88 89 [90] 91 92 93

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".