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 - Mario R. Rancel

Páginas: 1 ... 22 23 24 25 26 [27] 28 29 30 31 32
521
No, el reader no vale, tiene que ser el programa que te he indicado que es específico para los ebooks.

522
Hola María, el ebook sí se puede ver en un ordenador (con Windows 7 o con cualquier otro sistema operativo). Lo único que vas a necesitar es descargarte el programa gratuito Adobe Digital Editions, que es lo que te va a permitir visualizar el archivo del ebook, que está en formato adobe pdf DRM.

523
Muchas gracias Alex por esa "consideración" y también a Tanci por sus palabras. Ya estuvimos en la edición 2011 y esperemos que en esta nos vaya al menos igual de bien que en aquella ocasión.

524
Comunidad / Re:la hojarasca de Ignacio Camacho
« en: 18 de Abril 2013, 12:53 »
Hola, he leído los dos artículos y me parecen interesantes. El diagnóstico parece más o menos claro, aunque también se podría discutir. Y la pregunta clave posiblemente es la planteada por javi: desde el punto en que nos encontramos ¿cómo alcanzar una forma de organización administrativa e institucional guiadas por el raciocinio y mesura? Uno de los problemas con los que nos encontramos son grupos con privilegios y sin contrapoderes que permitan un equilibrio. El problema está en ¿cómo se delimitan unos privilegios razonables para la clase política? ¿quién pone coto al crecimiento desmedido de todo el aparato político administrativo? Preguntas para seguir reflexionando.

525
Hola Sandra, hemos separado el mensaje en un nuevo tema para no mezclarlo con otra conversación. Saludos.

526
Aprender a programar desde cero / Re:Semana 8 - Ejercicio 8
« en: 08 de Febrero 2013, 08:54 »
Alternativas:

Cuestión 1) Inicializa el tamaño del array como una constante en vez de como una variable.

Const sizeOfArray As Integer = 27
Dim Peso(sizeOfArray) As Integer


Cuestión 2) Efectivamente parece que en Visual 2010 no da opción a la creación de arrays de controles con la facilidad con que se permitía en versiones anteriores. En este caso, habría que hacerlo a través de código, lo cual puede ser bastante más complicado al exigir más conocimientos que se salen de lo que son cuestiones de fundamentos para entrar en detalles específicos del lenguaje.

La alternativa sería la siguiente:

Crear un TextBox en modo gráfico, en la propiedad Name poner por ejemplo "elemento" y en la propiedad Index ponerle un 0.

En el código crear manualmente los controles:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       
Dim i As Integer
For 1 = 1 to 9 'Suponemos que vamos a crear 10 controles, índices de 0 a 9
Load elemento(i)
'Luego cuadras la posición de cada control en el formulario:
elemento(i).Top = elemento(i-1).top + 120
elemento(i).Left = elemento(i-1).Left 'Cambia los valores de top y left según te convenga
celda(i).Visible = True
Next

...



Aquí hay un ejemplo de código (se supone que habiendo creado el textBox1 con index a 0), aunque como te digo se sale un poco de nuestros objetivos porque introduce cuestiones que no corresponden a fundamentos:

 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim i               As Integer
    Dim lft             As Single
    Dim tp              As Single
    On Local Error Resume Next
    ' idem con los textboxes
    lft = Me.TextBox1(0).Left
    tp = Me.TextBox1(0).Top
    For i = 1 To 50
        If i Mod 10 = 0 Then
            lft = lft + Me.TextBox1(0).Width + 100
            tp = Me.TextBox1(0).Top
        End If
        Load Me.TextBox1(i)
        Me.TextBox1(i).Top = tp
        Me.TextBox1(i).Left = lft
        Me.TextBox1(i).Visible = True
        tp = tp + Me.TextBox1(0).Height + 20
    Next i
End Sub

Private Sub TextBox1_Click(Index As Integer)
    On Local Error Resume Next
    MsgBox "Has clickado sobre el text nº " + CStr(Index)
End Sub

527
Aprender a programar desde cero / Re:Semana 8 - Ejercicio 9
« en: 07 de Febrero 2013, 17:06 »
Continúo con las cuestiones: la herramienta while se utiliza para crear bucles. De hecho, en vez de usar for podríamos usar while si quisiéramos.

El código que has creado está bien resuelto, el único problema que le veo es que no pareces usar un interruptor (cuestión que te pedía el enunciado). Usar una herramienta como while u otra como inputbox, textbox, etc. depende del lenguaje que estemos utilizando y de lo que sea más apropiado. Con Visual Basic tendría poco sentido resolver este programa usando un while, con otros lenguajes que por ejemplo no disponen de textboxes sí podría tener más sentido.

Si aún así quisiéramos resolverlo con un while tenemos que tener presente una cosa: un while no se detiene hasta que exista una condición por la cual se detenga. Esta condición puede ser una petición de datos interactiva al usuario o que se alcance la condición de terminación del bucle. Si quisiéramos forzosamente hacerlo con un while la idea sería que en cada pasada el bucle se detenga para pedirle el dato al usuario.

Código orientativo:

Dim cantidadExcedida As Boolean
Dim extraccion As Integer
Dim totalextraccion As Integer
Dim valorLimite As Integer

Private Sub Form_Load()
Label1.Caption = "Introducir la cantidad extraida "
valorLimite = 600
extraccion = InputBox("Cuál es la cantidad a extraer del cajero?", "Cantidad")

Do While extraccion < valorLimite

extraccion = InputBox("Cuál es la cantidad a extraer del cajero?", "Cantidad")

        totalextraccion = totalextraccion + extraccion
        Label2.Caption = "Cantidad de dinero extraida total ha sido " & totalextraccion & " €"

        If totalextraccion >= valorLimite Then

            MsgBox ("La cantidad de dinero extraida ha sido superior a " & valorLimite & " €")
            totalextraccion = 0
        Exit Sub
        End If
Loop
End Sub


Pero reitero dos cuestiones:

No hay que obcecarse por usar una herramienta (while u otra). Valorar alternativas y escoger la más razonable / eficiente.

Con Visual Basic tiene más sentido la solución como la has planteado que usando un while. El único cambio que te propondría es que introduzcas un interruptor como limiteExcedido tipo boolean, y que cambies el fragmento condicional para usar el interruptor

If limiteExcedido = True Then

            MsgBox("La cantidad de dinero extraida ha sido superior a " & valorLimite & " €")
            totalextraccion = 0

        End If

528
Aprender a programar desde cero / Re:Semana 8 - Ejercicio 8
« en: 07 de Febrero 2013, 16:40 »
Hola, yendo por partes:

Cuestión 1. Sí, puedes introducir el número de un array con una variable. Tienes que tener en cuenta un par de cosas:

- Tendrás que haber declarado la variable antes, en cabecera del código para que sea conocida. Tendrás que darle un valor inicial para crear el array de un tamaño que establezcas. Luego creas el array. Algo así como:

Public Class Form1
    Dim sizeDelArray%, variableAusar2%
    sizeDelArray = 27
    Dim Peso(sizeDelArray) as Integer


La declaración Dim Peso(sizeDelArray) as Integer tiene sentido si has inicializado antes sizeDelArray a un valor, si no no lo tiene.

El problema que indicas parece debido a que valor vale cero y no se entra en el bucle. El tamaño del array no parece bien establecido.

Nota: posiblemente sea más conveniente declarar sizeDelArray como una constante en vez de como una variable, si el tamaño del array no va a variar durante la ejecución del programa. Es decir, si algo no va a variar mejor que sea una constante.

Cuestión 2. Para no complicar las cosas (y de hecho así es como se hace en el libro) te sugiero lo siguiente: crea un label en forma gráfica y sitúalo en el formulario. Luego selecciona ese label y pulsa CTRL+C (copiar). Luego pincha sobre el formulario y pulsa CTRL + V (pegar). En teoría, debe preguntarte si deseas crear un array de Labels. Respóndele que sí. Si el label creado era Label1, al decirle que sí te habrá cambiado el nombre a Label1(0) y el nuevo label será Label1(1). Si vuelves a pegar el contenido del portapapeles te irá creando los sucesivos elementos. Label1(2), Label1(3), etc. Una vez los tengas creados, manipúlalos a través del código como en el ejemplo del libro.

Sugerencia: establece primero el nombre de label antes de copiar y pegar sucesivamente, así ya tendrás todos los labels con el nombre que desees.

Nota: si respondes que no quieres crear el array de labels, cada label se mantendrá de forma independiente.


529
Supongo que el número lo estás sacando de un textBox. Puedes crear la variable tipo Integer y luego usar la función val. Algo así:


Dim numero As Integer
numero = Val(TextBox1.Text)

Aquí tienes la referencia: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=203:la-funcion-val-con-visual-basic-para-transformar-texto-en-valores-numericos-ejemplo-de-uso-cu00318a&catid=37:curso-qprogramacion-en-visual-basic-nivel-iq&Itemid=61

530
Referencia: curso Bases de la programacion nivel I, semana-pdf 9, ejercicio 3.

CONSULTA:

Si Modelo(i) > 125 y < =350 Entonces
Mostrar"Numeros de serie de Coches F1"
FinSi
Pero el valor de Modelo(i) no determina el tipo de coche que es, simplemente sabemos que vienen una serie de datos y que empiezan siendo modelos de fórmula 1 hasta que se alcanza el modelo 350, pero los números de modelo no tienen por qué ser mayores de 125 y menores de 350. Ejemplo:
Si los datos recibidos fueran los siguientes: Modelo(1): 350, Modelo(2): 50, Modelo(3): 75, Modelo(4): 100, Modelo(5): 125, Modelo(6): 750, Modelo(7): 800, Modelo(8 ): 850.
El dato modelo(2) no es mayor de 125 y menor o igual de 350, sin embargo es un coche de fórmula 1 ¿Por qué? Porque el enunciado nos dice que todos los datos son modelos de fórmula 1 hasta que se llega al modelo 350 que es el último fórmula 1. Por tanto 350 es el único fórmula 1 que hay. Luego nos dice que vienen motocicletas y que la última es la 125, por tanto 50, 75, 100 y 125 son motocicletas. Y el resto de datos son camiones.
((((((((((Supón que los datos recibidos fueran los siguientes: Modelo(1): 950, Modelo(2): 350, Modelo(3): 975, Modelo(4): 100, Modelo(5): 125, Modelo(6): 750, Modelo(7): 15, Modelo(8 ): 850.))))))))))))))))))))
(((((((En este caso 950 y 350 son coches. 975, 100 y 125 son motocicletas y 750, 15 y 850 son camiones.
Mira en el libro un ejercicio similar, página 208, porque te puede dar la orientación necesaria)))))))))))))))))))


Del Modelo(1) al Modelo( 8 ) no serian" todo coches" segun la aclaracion ? ? ? ? ? ? ?
950 y 350 Modelo(1) y modelo(2)----Modelo(3)(4)(5)975,100 y 125 siguen siendo coches???
Modelo se refiere al array???ejemplo del Modelo(1) al Modelo(125) todos los numeros de serie comprendidos
serian motos???o sea del Modelo(125) al Modelo(350) los datos comprendidos serian numeros serie de coches???
o sea segun plantamiento inicial de todo serian motos porque tengo solo 8 modelos??(Modelo( 8 ))



INDICACIONES PARA RESOLVER EL EJERCICIO:

Modelo simplemente es el número del modelo del vehículo, como si habláramos de fiat 4, fiat 250, ducati 555, ferrari 550, etc. Los datos vienen siempre en un array que empieza como modelo(1), sigue con modelo(2), modelo(3), etc. hasta un número indefinido. No sabemos cuántos modelos nos vienen, únicamente sabemos que son coches hasta que aparezca el 350, que luego son motos hasta que aparezca el 125 y que luego son camiones hasta que aparezca el 850. La interpretación es la siguiente: modelo(3) = 654 significa que el modelo 3 en la serie es el 654, modelo(7)=222 significa que el modelo 7 en la serie es el 222. En este caso los índices del array simplemente indican el orden en que vienen los datos.

El enunciado nos indica que todos los modelos son coches de fórmula 1 hasta que aparezca el modelo 350, una vez aparece este todos los modelos son motos hasta que aparezca el modelo 125, una vez aparece este todos los modelos son camiones hasta que aparece el modelo 850 (que es el último, con el que termina la serie de datos). Da igual qué número tengan los modelos, lo único importante es que todos son coches hasta que aparezca el 350, que a continuación todos son motos hasta que aparezca el 350 y que a continuación todos son camiones hasta que aparezca el 850.


Ejemplo 1: Modelo(1) = 3, Modelo(2) = 9000, Modelo(3) = 350, Modelo(4) = 2, Modelo(5) = 125, Modelo(6)=7, Modelo( 8 ) = 13, Modelo(9) = 850

Para este ejemplo Modelo(1), Modelo(2) y Modelo(3) son coches, Modelo(4) y Modelo(5) son motos, Modelo(6), Modelo(7), Modelo( 8 ) y Modelo(9) son camiones.



Ejemplo 2: Modelo(1) = 350, Modelo(2) = 9000, Modelo(3) = 2050, Modelo(4) = 2, Modelo(5) = 125, Modelo(6)=7, Modelo( 8 ) = 13, Modelo(9) = 850

Para este ejemplo Modelo(1) es el único coche que hay, Modelo(2), Modelo(3), Modelo(4) y Modelo(5) son motos, Modelo(6), Modelo(7), Modelo( 8 ) y Modelo(9) son camiones.



Ejemplo 3: Modelo(1) = 4550, Modelo(2) = 9000, Modelo(3) = 2050, Modelo(4) = 2, Modelo(5) = 12325, Modelo(6)=7, Modelo( 8 ) = 125, Modelo(9) = 850

Para este ejemplo Modelo(1), Modelo(2), Modelo(3), Modelo(4), Modelo(5), Modelo(6) y Modelo(7) son coches, Modelo( 8 ) es la única moto que hay y Modelo(9) es el único camión que hay.



Ejemplo 4: Modelo(1) = 850, Modelo(2) = 195, Modelo(3) = 350

Este ejemplo trae los datos de forma errónea: el enunciado dice que primero han de venir los modelos coches terminando en el 350. Estos datos no cumplen. El programa no tiene por qué responder bien cuando los datos vienen erróneamente, sólo tiene que responder bien cuando los datos vengan correctamente.

531
Yo todo lo veo correcto excepto el punto o línea 3.

Fíjate que personas(i) representa el número de personas que han entrado en la hora i, y que i va tomando distintos valores a lo largo del bucle y al final se queda con valor i=18 (o mejor dicho i=19 que es lo que hace que ya no se entre en el bucle).

Las horas a las que no entró ninguna persona ya las has mostrado con la instrucción Mostrar"En la hora",i,"no hubo ninguna persona" dentro del bucle. Cada vez que se verifica que en esa hora no hubo ninguna persona, se muestra.

Ahora llegamos a la línea 3. ningunapersona no representa la relación de horas a las que no entraron personas, sino el número de horas en las que no entró ninguna persona. No es lo mismo. Una relación podría ser 10, 14, 18 mientras que el número sería 3.

Lo que tú has puesto es algo así como "Las horas a las que no entró ninguna persona fueron <<el número de horas a las que no entró ninguna persona>> y fueron <<las personas que entraron a la hora 19>>". Si lo piensas, esto no tiene sentido.

En la línea 3 podríamos poner algo así como:

3. Mostrar "El número de horas en que no entró ninguna persona fueron", ningunapersona

Cuáles fueron esas horas en concreto no lo repetiríamos en la línea 3, porque ya lo hemos puesto en la línea 2.3 con la instrucción Mostrar...

532
Aprender a programar desde cero / Re:Variable
« en: 14 de Octubre 2012, 20:25 »
Hola, no entiendo del todo la pregunta. Voy a tratar de dar una orientación general: por alfanumérico entendemos todo lo que deba ser interpretado como texto. Para indicar que se trata de alfanumérico lo escribimos entre comillas. Por ejemplo:

coches = "124" sería una variable alfanumérica. Con ella no podemos operar (en principio) porque su contenido es texto por ir entre comillas. Escribir coches*2 no tendría sentido porque un texto no se puede multiplicar por 2.

coches2 = 124 sería una variable numérica. Con ella sí podemos operar porque su contenido es un número. Por tanto escribir coches2*2 sería correcto.

Ahora supongamos que escribimos lo siguiente: coche3 = 1524 € ¿Se trata de una variable numérica o alfanumérica? En principio diremos que esta forma de escribir una variable no es correcta porque no sigue las reglas para la escritura de variables y valores de variables. Si fuera texto debería ser coche3 = "1524 €" mientras que si fuera numérica debería ser simplemente coche3 = 1524. Un número es un número, en principio el significado de ese número (si son euros, dólares, pesos, unidades u otra cosa) es un significado que le damos nosotros.

Otro caso parecido: resultado = 54 % ¿Es numérica o alfanumérica? En principio diremos que esta forma de escribir una variable no es correcta porque no sigue las reglas para la escritura de variables y valores de variables. Si fuera texto debería ser resultado = "54 %" mientras que si fuera numérica debería ser simplemente resultado = 54. ¿Qué sería mejor en este caso? El criterio a seguir es más o menos este: si pretendemos operar matemáticamente en algún momento con el contenido de la variable, debe ser numérica. En este caso, se entiende que con un porcentaje posiblemente queramos operar matemáticamente en algún momento, por eso lo mejor sería que fuera numérica, y si es numérica no lleva símbolo: el significado del número lo conocemos nosotros, no se explicita mediante ningún símbolo.

533
Hola, no hay ningún problema en opinar ni en informar de errores, entre todos tratamos de revisarlos. Sobre el curso de visual  basic te he puesto un correo electrónico pero me ha venido devuelto como "dirección no válida". Te incluyo aquí la información por si no la has recibido:

"Información general sobre los cursos de aprenderaprogramar.com".

Los cursos se ofrecen en tres modalidades:

-Gratuito: a través de la web el alumno sigue el curso por sí mismo sin ayuda por nuestra parte. No obstante, dispone de los foros (www.aprenderaprogramar.com/foros) donde puede realizar consultas para tratar de obtener colaboración por parte de otros usuarios o personas que trabajan o colaboran en el sitio web. El curso para iniciarse en Visual Basic es "Curso Lenguaje de programación Visual Basic nivel I". Se accede desde www.aprenderaprogramar.com --> Menú cursos --> Menú lateral derecho --> "Curso lenguaje de programación Visual Basic nivel I". El alumno debe ir leyendo las entregas (CU00301A, CU0302A, CU00303A, ...) y realizando los ejercicios propuestos ordenadamente.

-Tickets de soporte: es una modalidad intermedia entre el curso gratuito y el on-line. Más información en www.aprenderaprogramar.com --> Cursos --> Tickets de soporte.

-Tutorizado on-line: Enviamos por correo el material formativo una vez se abone el importe del curso (esta opción es de pago). El plazo de entrega depende del país y del servicio de correos (normalmente entre 1 y 3 semanas), pero si el alumno lo desea adelantamos un contenido inicial por correo electrónico en formato pdf para que se pueda comenzar antes. Tutorizamos al alumno personalizadamente, indicándole qué es lo más relevante, cuál es la mejor forma de organizarse y haciendo un seguimiento y resolución de las dudas que puedan surgir (normalmente vía correo electrónico, vía foros aprenderaprogramar.com, y puntualmente vía Skype). Si el alumno completa el curso le expedimos un certificado acreditativo.

La fecha de comienzo y plazos para el curso tutorizado on-line se establecen de común acuerdo entre el tutor y el alumno, una vez abonado el importe del curso. No hay fechas preestablecidas ya que se trata de cursos personalizados.

Para ampliar información sobre cómo utilizar la web y sobre cómo empezar es recomendable que leas los artículos de la sección “Cómo empezar”. Si le dedicas unos minutos a leer este apartado le sacarás más rendimiento a la web.

534
Hola Mario, este ejercicio corresponde al curso "Bases de la programación nivel I", y en él se estudia la resolución de una ecuación cuadrática de distintas maneras.

La manera comentada por tanteo corresponde a un ejemplo de resolución de un problema por tanto iterativo, "Ejemplo de búsqueda de soluciones a un problema con iteración (entrega CU00111A del curso)", puedes leerlo aquí: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=147:ejemplo-de-busqueda-de-soluciones-a-un-problema-con-iteracion-cu00111a&catid=28:curso-bases-programacion-nivel-i&Itemid=59

La resolución basada en el discriminante y la fórmula matemática que comentas se explica más adelante, una vez vistos algunos aspectos de algoritmia, en concreto en "Ejercicios ejemplos resueltos en pseudocódigo con Si - Entonces - SiNo (if - then - else) (CU00143A)", puedes leerlo aquí: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=326:ejercicios-ejemplos-resueltos-en-pseudocodigo-con-si-entonces-sino-if-then-else-cu00143a&catid=28:curso-bases-programacion-nivel-i&Itemid=59

El curso completo lo tienes en https://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=28&Itemid=59

Saludos.

535
Hola, en respuesta a la consulta:

El primer paso es crear un form.

El segundo paso es acceder al código del form.

El tercer paso es escribir el código propuesto.

No hay que crear ningún label. El mensaje en este caso no va sobre un label, sino que simplemente debería mostrarse sobre el propio form directamente.

Para la comprensión del código puedo indicarte lo siguiente:

Option Explicit: indica que las variables deben ser declaradas antes de ser usadas

Dim mensaje As String: declara una variable de tipo String

Private Sub Form_Load() ... End Sub: indica el código que debe ejecutarse cuando se produzca el evento Form_Load(). Este es el evento de carga del form, y se produce nada más se comienza la ejecución del programa.

Show: instrucción para indicar que se muestre sobre el formulario aquello que se indique con la instrucción Print.

mensaje = "Bienvenido a este programa" : asigna un contenido a la variable mensaje

Print mensaje: instrucción para que se muestre por pantalla el contenido de la variable

El resultado que se debe obtener es que se muestre por pantalla el mensaje.

Si no obtienes este resultado habría que revisar distintas cuestiones: propiedades que tengas establecidas para el formulario, versión de visual basic que estés utilizando, etc.

Saludos.

536
CONSULTA RECIBIDA:

Hola, he comenzado a leer el curso de programación en VB nivel 1 y me he trabado casi al principio, si alguien me pudiera ayudar explicándome porque algo no me sale como se plantea en un ejemplo expuesto se los agradecería mucho. La cuestión es la siguiente: Hay un ejemplo en el que se dice que mediante la escritura de un código se obtiene cierto resultado. El código es:

Option Explicit
Dim mensaje As String

Private Sub Form_Load()
Show
mensaje = "Bienvenido a este programa"
Print mensaje
End Sub

Y el resultado es un userform con el mensaje de bienvenida en un label. Entiendo que se crea un variable “mensaje”, y no le entiendo exactamente cómo funciona el load en comparación con el show Form es el nombre de mi userform al que le debo cambiar el nombre para llamarlo o me hace referencia al label o cómo? Por lo que entiendo, es que load va a cargar un procedimiento y show lo carga y lo muestra. Antes que todo esto, creo que se tiene que hacer un userform, pero vacío o con un label? en donde se va a mostrar el mensaje, o el load crea automáticamente el label; porque sólo haciendo un useform con un label y cambiándole el caption a label con el mensaje “Bienvenido a este programa” creo que no es necesario escribir todo ese código, pero lo que yo quiero es entenderlo como es que funciona sin tener que cambiar la propiedad de caption, porque supongo que para eso se le esta dando la instrucción de print para que cree un label y escriba en el mensaje no, o estoy equivocado? Este código se escribe en el código del label o del useform o en un modulo, creo que es en el useform no?, pero he copiado tal cual este código en el código del useform con un label, he hecho un useform vacio (sin label) y le he escrito el código, y he escrito el código también en un módulo y con ninguna de las tres opciones me sale el useform con el mensaje de bienvenida. Me pudieran explicar paso a paso cual es el procedimiento para que en mi useform se cree un label que contenga un mensaje a la hora de ejecutarlo.

Así como 1. se crea un useform
 2. Se le pone un label o no
 3. se va al codigo del useform o se crea un modulo
 4. etc
 5. etc
 6. una explicación de ese tipo por favor, ya que al momento de ejecutarlo solo me aparece mi useform sin ningún mensaje. Perdón por la extensión de mi planteamiento pero no sabía exactamente como explicarme; por si acaso, el ejemplo está en la entrega no.9 del curso Programación en Visual Basic Nivel I. Ejemplo de programa básico en Visual Basic con Option Explicit, Form, Print, etc. (CU00310A) Agradezco de antemano la atención prestada.

537
Analiza el esquema correspondiente al ejercicio “Buscar el valor de x que siendo un número real positivo hace f(x) = 5x2 – 3x – 4 igual a cero de acuerdo a unas reglas”.

Tenemos que establecer algunos parámetros, por ejemplo el número máximo de pruebas permitidas.

Responde a las siguientes cuestiones y envíalas al tutor en un e-mail:

¿Cuál sería el primer resultado que obtendríamos si empezáramos con un dato inicial igual a 1? ¿Cuál sería el primer resultado que obtendríamos si empezáramos con un dato inicial igual a 10? ¿A la vista de esos primeros resultados obtenidos, por qué valor empezarías entonces la búsqueda y por qué? ¿Qué resultado obtendríamos cuando alcanzáramos c = 1.2434? Haz una simulación de cómo irían evolucionando los resultados comenzando la búsqueda por 1 con ayuda de Excel ó una calculadora (no hace falta que reflejes todas las pruebas realizadas, puedes reflejar solo una parte de los cálculos e indicar el resultado al que se llegaría continuando con esos cálculos).


ORIENTACIÓN PARA COMPRENDER MEJOR EL PROBLEMA

La ecuación de búsqueda es

f(x) = 5x2 – 3x – 4

Queremos encontrar aquellos valores de x que hacen la ecuación igual a cero, es decir, 5x2 – 3x – 4 = 0

La búsqueda se basa en hacer pruebas empezando por un número y sumando en cada ocasión un incremento, hasta obtener un resultado que sea aproximadamente cero.

Si empezamos por 1 el resultado obtenido es -2

Si empezamos por 10 el resultado obtenido es 466.

Estamos más próximos a cero empezando por 1 que empezando por cero, por ello empezaríamos por 1.

La búsqueda empezando por 1 iría así:

f(1) = -2
f(1,001) = -1,992995
f(1,002) = 1,98598
f(1,003) = -1,978955
f(1,004) = -1,87192


¿Hasta qué valor continuaríamos? ¿Llega a superarse el número máximo de pruebas?

La búsqueda empezando por 10 iría así:

f(10) = 466
f(9,999) = 465,903
f(9,998) = 465,806
f(9,997) = 465,709
f(9,996) = 465,612


¿Hasta qué valor continuaríamos? ¿Llega a superarse el número máximo de pruebas?

538
Gracias, el que no cargue la ayuda es un problema menor si se dispone de internet. En general con el método descrito anteriormente se puede instalar Visual Basic sin problemas.

539
Nota: este código usa algunas funciones avanzadas como Ubound o Redim y Redim Preserve.

Esto se hace suponiendo que tenemos necesidad de almacenar los resultados en un array. Si no tuviéramos esa necesidad y simplemente necesitamos mostrar un resultado por pantalla no haría falta usar estas funciones, bastaría con hacer lo que se ha indicado aquí: https://www.aprenderaprogramar.com/foros/index.php?topic=305.0 (ir añadiendo elementos a un label a medida que recorremos un bucle)

540
CONSULTA: ¿Cómo puedo almacenar un número de soluciones variable en un array de Visual Basic?

RESPUESTA: El siguiente código es un ejemplo, el código simplemente analiza un array de datos y almacena aquellos valores menores de 25 en un array solución. Si se entiende este código creo que lleva implícita buena parte de la respuesta, de todas formas si hay dudas consultar.

Option Base 1
Dim Datos() As Integer
Dim ValoresSolucion() As Integer
Dim i%, j%, k%

Private Sub Form_Load()
Show
ReDim Datos(5)
ReDim ValoresSolucion(5)
Datos(1) = 19
Datos(2) = 55
Datos(3) = -22
Datos(4) = 78
Datos(5) = 44

Print "Hay"; UBound(Datos); " datos"

k = 0
For i = 1 To (UBound(Datos))
Print "Dato " & i & " es "; Datos(i)
If Datos(i) < 25 Then
    k = k + 1
    ValoresSolucion(k) = i
End If
Next

'Ajustamos el tamaño del array al número de soluciones encontradas
ReDim Preserve ValoresSolucion(k)
Print "Hay"; UBound(ValoresSolucion); " valores menores de 25"


For i = 1 To (UBound(ValoresSolucion))
Print "Solución " & i & " tiene indice "; ValoresSolucion(i); "y valor "; Datos(ValoresSolucion(i))
Next
   
End Sub

Páginas: 1 ... 22 23 24 25 26 [27] 28 29 30 31 32

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".