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.


Temas - Mario R. Rancel

Páginas: [1] 2
1
Se plantea a continuación un enunciado y solución para un ejercicio simple de uso de ArrayList con objetos en Java.

Enunciado del ejercicio:

- Crea una clase DirectorCine con los atributos nombre (String), apellidos (String) y edad (int). Crea los métodos get y set para los atributos.

- Crea una clase testEjercicio con el método main y sigue los siguientes pasos:
 
-En el main, crea tres objetos DirectorCine que tengan como atributos respectivamente: Pedro, Gómez, 31. Juan, Suárez, 55. Elena, Albucar, 29.
 
-Crea un ArrayList de objetos DirectorCine.
 
-Añade los tres objetos DirectorCine al ArrayList usando el método add
 
-Procede a mostrar los datos de los tres directores creados usando un bucle for. Para ello el esquema que debes seguir es el siguiente (aunque hay otras formas de hacerlo)
           
                DirectorCine directorRecuparado; //Para almacenar datos
                String nombreRecuperado; String apellidosRecuperados; int edadRecuperada; //Para almacenar los datos
                Bucle desde i=0 hasta nombreDelArrayList.size()-1
                                               Recuperar el objeto de la lista
                                               //Por ejemplo DirectorRecuperado = listadoDirectores.get(i);
                                               Recuperar el nombre de ese director
                                               //Por ejemplo: nombreRecuperado = DirectorRecuperado.getNombre();
                                               Mostrar el nombre de ese director
                                               //Por ejemplo System.out.println("El nombre del director número "+i+1+ " es "+nombreRecuperado;
                                               Hacer lo mismo con los apellidos y con la edad
                Fin del bucle
 
9. Comprueba que al ejecutar el método main se muestren por pantalla los nombres, apellidos y edad de los tres directores
 
Una cosa importante a tener en cuenta es que System.out.println invocado sobre un objeto nos devuelve la referencia en memoria del objeto, cosa que en general carece de utilidad. Para poder mostrar atributos de un objeto hemos de recuperarlos si son tipos primitivos y proceder a mostrarlos (como en este ejercicio), o bien recuperarlos a través de un método del objeto (un método como "mostrarInformacion", "listarDatos" o como se quiera llamarlo. Más adelante veremos que hay una forma estandarizada para hacer esto que es el método toString pero esto no es necesario usarlo ahora).


Solución del ejercicio

Clase DirectorCine

Código: [Seleccionar]
public class DirectorCine{
   
    private String nombre;
    private String apellidos;
    private int edad; //Paso 1 y 2 pedido ejercicio
   
    public DirectorCine(){
        nombre="";
        apellidos="";
        edad=0; }
   
    public DirectorCine(String nombre,String apellidos, int edad){
        this.nombre=nombre;
        this.apellidos=apellidos;
this.edad = edad; //Paso 3 constructor pedido ejercicio
}
   
   //Métodos Get
    public String getNombre(){
        return nombre;}
   
    public String getApellidos(){
        return apellidos;}

       
    public int getEdad(){
        return edad;} //Paso 3 método get pedido ejercicio

   //Métodos set
    public void setNombre(String nombre){
        this.nombre=nombre;}
   
    public void setApellidos(String apellidos){
        this.apellidos=apellidos;}

    public void setEdad(int edad){
        this.edad=edad;} //Paso 3 método set pedido ejercicio
       
   
    public void visualizarDirector(){
        System.out.println("Nombre : "+nombre+", "+"Apellidos : "+apellidos + " Edad: "+edad);}
         
}//fin clase

Clase testEjercicio

Código: [Seleccionar]
import java.util.ArrayList;

public class testEjercicio { //Paso 4 clase pedida ejercicio

    public static void main (String[] Args){

        //Paso 5 pedido ejercicio
        DirectorCine director1 = new DirectorCine("Pedro", "Gómez", 31);
        DirectorCine director2 = new DirectorCine("Juan", "Suárez", 55);
        DirectorCine director3 = new DirectorCine("Elena", "Albucar", 29);

        //Declaramos el ArrayList de directores de cine Paso 6 pedido ejercicio
        ArrayList<DirectorCine> listaDirectores = new ArrayList<DirectorCine>();

        //Declaramos el ArrayList de directores de cine Paso 7 pedido ejercicio
        listaDirectores.add(director1);
        listaDirectores.add(director2);
        listaDirectores.add(director3);

        //Paso 8 pedido ejercicio
        DirectorCine directorRecuparado; //Para almacenar datos
        String nombreRecuperado; String apellidosRecuperados; int edadRecuperada; //Para almacenar los datos
        for (int i=0; i<listaDirectores.size(); i++) {
            directorRecuparado = listaDirectores.get(i);
            nombreRecuperado = directorRecuparado.getNombre();
            apellidosRecuperados = directorRecuparado.getApellidos();
            edadRecuperada = directorRecuparado.getEdad();
            System.out.println("Datos para el director "+(i+1)+" Nombre: "+nombreRecuperado + " Apellidos: "+apellidosRecuperados + " Edad: "+edadRecuperada);
        }
    }
}



2
Comunidad / Felices fiestas y próspero año 2020
« : 15 de Diciembre 2019, 12:21 »
Aprovechamos las fechas para desearles a todos felices fiestas y un próspero año 2020. Nuestro agradecimiento especial para quienes altruistamente ayudan a mantener los foros. ¡Felicidades!


3
Comunidad / agradecimiento a Kabuto y feliz año nuevo
« : 31 de Diciembre 2018, 14:24 »
Nuestro agradecimiento a Kabuto por la ayuda que presta altruistamente en los foros. Y nuestra bienvenida como "moderador", rol que tiene a partir de hoy. Feliz año nuevo para todos.




4
Vamos a estudiar cómo usar una variable booleana para controlar un bucle.

El enunciado que se nos plantea es el siguiente:

5. Un cajero automático permite extraer distintas cantidades de dinero en un día hasta alcanzar el límite de 600 euros. Se quiere plantear un programa que vaya registrando la cantidad extraida en cada ocasión durante un día y use un acumulador para registrar el total. A su vez, mediante un interruptor se debe controlar cuándo se excede la cantidad máxima permitida y en ese momento mostrar el mensaje “Se ha excedido la cantidad máxima permitida”. Desarrollar el pseudocódigo.

Ejemplo de ejecución:
Introducir la cantidad extraida: 200
Introducir la cantidad extraida: 300
Introducir la cantidad extraida: 400
Se ha excedido la cantidad máxima permitida [Fin]



Primer paso:

Vamos a plantear un pseudocódigo sin hacer uso de variables booleanas (para empezar de una forma simplificada, luego las introduciremos) de modo que nuestro objetivo ahora es que se pida al usuario la cantidad a retirar y cuando se supere que el acumulado retirado es mayor de 600 euros, nos muestre un mensaje de aviso informando de que se ha superado el límite.

Una vez planteado el pseudocódigo, escribir un pequeño programa en Visual Basic para probarlo. Para pedir los datos en Visual Basic usaremos InputBox. Para ver un ejemplo de uso de inputbox podemos consultar http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=203:funcion-val-con-visual-basic-convertir-texto-textbox-inputbox-en-valores-numericos-ejemplos-cu00318a&catid=37:curso-aprender-a-programar-visual-basic-desde-cero&Itemid=61

Tareas a realizar:

1) Definir los nombres de variables que vamos a utilizar y su significado (de momento solo necesitamos una variable para acumular el resultado y si lo deseamos, alguna variable auxiliar más. De momento no usaremos variables booleanas)
2) Definir el pseudocódigo
3) Escribir un pequeño programa en Visual Basic para probar este pseudocódigo
4) Si hay problemas, corregir el pseudocódigo y repetir la prueba hasta que tanto el pseudocódigo como el pequeño programa en Visual Basic podamos considerar que son correctos.

Podríamos pensar en escribir directamente el código saltándonos el pseudocódigo. Eso sería una mala práctica: sería como empezar a construir una casa sin planos. Antes de hacer hay que pensar-planificar. Ese es el papel que juega el pseudocódigo. Para aprender a planificar, corregimos nuestra planificación haciendo uso de un pequeño programa en Visual Basic que nos dirá si hemos planificado correctamente o no.

Una vez tengamos este pseudocódigo y el código de Visual Basic asociado, pasaremos al siguiente paso.


5
Orientaciones para realizar el ejercicio 8 de la semana 7 del curso Bases de la programación nivel I.

Citar
3. Se está realizando un estudio estadístico de los clientes que entran a un supermercado en cada hora a partir de su hora de apertura durante un día. El supermercado abre 8 horas al día y los datos de cuántas personas han entrado al supermercado en cada hora se encuentran almacenados en un array definido como personasEntran(1), personasEntran(2), … hasta personasEntran( 8 ). Se desea desarrollar el pseudocódigo y el diagrama de flujo para un programa que usando “Desde … Siguiente” y “Si … Entonces” determine:

a) El total de personas que entraron al supermercado en el día.
b) Cuántas horas no entró ninguna persona y cuáles fueron.
c) Cuál fue la hora en la que entró el mayor número de personas.
d) El número medio de personas por hora que entraron al supermercado.

Importante: en este tipo de ejercicios usamos arrays combinándolos con bucles desde … siguiente de forma que para recorrer el array usamos un bucle, nunca escribimos una por una las variables que forman el array excepto si tenemos que asignarles un valor inicial.

Nota: en lugar de personasEntran(1), personasEntran(2), … hasta personasEntran( 8 ) podemos usar personasEntran(0), personasEntran(1), … personasEntran(7).


8. Crear un programa en Visual Basic que realice la tarea planteada en el ejercicio 3. Los datos de partida se deben incorporar en el propio código al principio del programa. Para ello tendrás que hacer las declaraciones de variables o arrays oportunas. Como respuesta a este ejercicio se debe entregar el texto que conforma el código y una captura de pantalla con el programa mostrando resultados.

La lógica del programa a crear es análoga a la del ejercicio 18 (página 159 del libro) relativo a un conteo de coches.

Una cosa a tener en cuenta es que el enunciado del ejercicio nos indica: "Los datos de partida se deben incorporar en el propio código al principio del programa."

Esto quiere decir que en lugar de pedir los datos de partida al usuario o leerlos desde un archivo, simplemente los incluiremos directamente al inicio del programa (si estamos con Visual Basic en el form_load, para que se carguen nada más iniciarse el programa).

Ejemplo:

Código: [Seleccionar]
Public Class Form1
    Dim personasEntran(8) As Integer, personasTotal%, transitoCero%, maxTransito%, horaMaxTransito%

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

        personasEntran(0) = 0
        personasEntran(1) = 32
        personasEntran(2) = 47
        personasEntran(3) = 22
        personasEntran(4) = 0
        personasEntran(5) = 31
        personasEntran(6) = 0
        personasEntran(7) = 87

'Aquí podemos procesar los datos usando un bucle for

'Aquí podemos mostrar los resultados usando labels

    End Sub

    End Class

Nota: aquí hemos usado índices para el array comprendidos entre 0 y 7. Otra opción es usar índices entre 1 y 8.

Nota: los datos que hemos tomado son los propuestos en el ejercicio 4.

Citar
4. Indica cuáles serían los resultados que obtendríamos con el pseudocódigo anterior si en la primera hora entraron 0 personas, en la segunda 32 personas, en la tercera 47 personas, en la cuarta 22 personas, en la quinta 0 personas, en la sexta 31 personas, en la séptima 0 personas y en la octava 87 personas.

La escritura del programa en Visual Basic seguirá una lógica similar a la del ejercicio 77 en la página 520, con las siguientes diferencias:

- No necesitamos un botón para leer datos desde un archivo, ya que los datos los hemos incluido directamente en el programa
- No necesitamos las instrucciones de apertura de archivo ni de lectura de datos de archivo ni de cierre de archivo, ya que los datos los hemos incluido directamente en el programa
- No necesitamos un botón calcular. Podemos realizar todo el proceso en el form_load si queremos.
- Hemos de tener cuidado con los índices. Si usamos los índices de 0 a 7, tener cuidado (en el libro los índices se han tomado comenzando en 1), por ejemplo los bucles serán del tipo for i=0 to 7 en lugar de for i=1 to 8.


Otra opción sería incluir un botón de modo que el proceso no se ejecute al iniciarse el programa, sino al pulsar el botón. En ese caso tendríamos que incluir los datos de partida tras el button_click para que estén accesibles.

Puede ser de interés consultar el código en http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=279:ejercicios-resueltos-en-visual-basic-ejemplos-leer-datos-desde-ficheros-bucles-for-next-if-then-cu00330a&catid=37:curso-aprender-a-programar-visual-basic-desde-cero&Itemid=61

Aquí hay que tener en cuenta las mismas consideraciones que hemos comentado anteriormente.


Recomendación: para quien no se sienta seguro, comenzar desarrollando procesos básicos. Una forma de empezar sería la siguiente:

Crear un programa básico (programa nº1) que realice lo siguiente:

a) Cargar los datos
b) Usando un bucle for mostrar los datos en un formato similar al siguiente:

En la hora 1 entraron 0 personas
En la hora 2 entraron 32 personas
En la hora 3 entraron 47 personas
En la hora 4 entraron 22 personas
En la hora 5 entraron 0 personas
En la hora 6 entraron 31 personas
En la hora 7 entraron 0 personas
En la hora 8 entraron 87 personas

Una vez tengamos este programa funcionando, lo guardamos y a continuación crearemos un programa donde ampliaremos los procesos que se realizan.

Saludos

6
moveTo JavaScript no funciona coordenada y, explicación por monitores

Descripción del problema: al crear una nueva ventana (window.open) y aplicarle el método moveTo(x, y) la ventana sólo se mueve en horizontal pero no en vertical

Código de referencia:

Código: [Seleccionar]
                nuevaVentana = window.open ('', 'miNombre', 'width=250, height=250, resizable=true, menubar=yes');
                nuevaVentana.document.write('<h1>Aprenda a programar ahora. Aproveche la oportunidad</h1>');
nuevaVentana.moveTo(600,200);
                nuevaVentana.focus();


Posible explicación:

Si estás trabajando con dos monitores, moveTo toma el primer monitor o monitor principal como referencia. De modo que las coordenadas x funcionan bien, sin embargo las coordenadas y no funcionan bien si estás trabajando sobre el monitor secundario (principalmente se verá que la ventana se pega a la parte inferior del monitor).

Más información: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=862:window-javascript-metodos-efectos-confirm-prompt-open-moveby-moveto-focus-resize-close-cu01174e&catid=78:tutorial-basico-programador-web-javascript-desde-&Itemid=206

Saludos

7
Descripción del problema: tras crear una ventana que carga una url determinada, al invocar location.href sobre dicha ventana se obtiene about:blank en lugar de la url de la ventana.

Código de referencia:

Código: [Seleccionar]
var nuevaVentana;
nuevaVentana = window.open ('http://aprendeaprogramar.es', 'miNombre', 'width=300, height=300, resizable=true, menubar=yes');
alert ('url de la ventana es ' + nuevaVentana.location.href);

Posible explicación

The open() method creates a new secondary browser window, similar to choosing New Window from the File menu. The strUrl parameter specifies the URL to be fetched and loaded in the new window. If strUrl is an empty string, then a new blank, empty window (URL about:blank) is created with the default toolbars of the main window.

Note that remote URLs won't load immediately. When window.open() returns, the window always contains about:blank. The actual fetching of the URL is deferred and starts after the current script block finishes executing. The window creation and the loading of the referenced resource are done asynchronously.


Según esto la posible explicación sería que al hacer window open y ejecutarse el código la ventana se crea como about:blank. Sólo posteriormente, asíncronamente, se carga la url indicada dentro de esa nueva ventana.

Esto nos puede parecer poco intuitivo, pero la lógica estaría en que estamos hablando de milisegundos. El código se ejecutaría de forma que la ventana estaría creada y se muestran las propiedades antes de que la url haya comenzado a cargar (incluso es posible que la url no llegue a cargar si el servidor no responde por ejemplo). En realidad se trata de un detalle de implementación que parece podrían haber hecho de otra manera... (y quizás cambien en nuevas versiones de navegadores)

Saludos

8
Ante las diversas consultas que recibimos sobre las diferencias entre versiones de html y la importancia que tiene el usar una u otra versión en este post vamos a tratar de dar una orientación sobre algunas preguntas frecuentes:


Tengo una web creada con HTML 4.01 ¿Debo modificarla para adaptarme a HTML 5?

En principio no. Todos los navegadores reconocen HTML 4 y van a seguir reconociéndolo, por lo tanto si tu web funciona correctamente no debes preocuparte.


Estoy haciendo un curso de HTML que usa HTML 4 ¿es mejor abandonarlo y centrarme en HTML 5?

En principio no. Lo importante es que el curso sea de calidad y tenga buenos contenidos. HTML 5 podemos verlo como una extensión HTML 4, por lo tanto todo lo que aprendas de HTML 4 te va a resultar útil para HTML 5.


No sé nada de HTML, ¿con qué versión debería trabajar?

Con HTML 5.


Soy programador y trabajo desde hace muchos años con HTML 4 ¿debo reciclarme y pasarme a HTML 5?

Esta pregunta tiene diferentes matices:

a) Si creas páginas web para tí y tus páginas funcionan bien, no tienes por qué pasarte a HTML 5. Puedes seguir creando webs con HTML 4 y podrás seguir haciéndolo durante muchos años.

b) Si creas páginas web para empresas, aunque no tienes por qué pasarte a HTML 5 (lo realmente importante es que tus páginas funcionen bien), sí sería adecuado que te recicles y adquieras conocimientos de HTML 5 porque este se va a ir imponiendo progresivamente a lo largo de los próximos años y es posible que las empresas te acaben pidiendo que utilices HTML 5 (de hecho muchas empresas ya lo hacen). Por ello es mejor adelantarse e ir aprendiéndolo antes de que nos obliguen a aprenderlo.


¿Qué implicaciones tiene el cambio de HTML 4 a HTML 5 con vistas al aprendizaje de la programación web?

HTML 5 podemos verlo como una extensión HTML 4, por lo tanto todo lo que aprendas  o hayas aprendido de HTML 4 te va a resultar útil para HTML 5. Todos los fundamentos de la programación web siguen siendo los mismos con HTML 4 y HTML 5. Por tanto los cursos básicos o fundamentos se ven poco afectados por el cambio. Sí existen implicaciones en cambio para cursos avanzados o aspectos avanzados.


¿Es HTML 5 una especificación oficial?

Sí, lo es desde finales de octubre de 2014. No obstante, hay que relativizar el hecho de que sea una especificación oficial. Los navegadores no se ciñen exactamente a las especificaciones oficiales. Y por otro lado, a veces la industria web va por delante de las especificaciones oficiales. Por ejemplo, el HTML 5 fue impulsado sin ser una especificación oficial. Sólo después de coger fuerza se ha convertido en especificación oficial. A las personas que quieran aprender programación web les recomendamos crear páginas web que funcionen bien, aunque no cumplan estrictamente con la especificación oficial.


¿Es HTML un lenguaje de programación?

No. Esto se explica en el curso HTML desde cero de aprenderaprogramar.com disponible en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=69&Itemid=192


Tengo webs creadas con declaraciones de doctype tipo
 
Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
¿Debo modificarlas por declaraciones <!DOCTYPE html>?

En principio no debes preocuparte por esto. Tu web va a seguir funcionando igualmente con una declaración u otra.


Estoy consultando en internet y me encuentro webs con declaraciones de doctype tipo

Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
¿Debo desconfiar de estas webs?

En principio no debes preocuparte por esto. El código y los ejemplos serán tan válidos si llevan un tipo de declaración como si llevan la otra. Sí debes preocuparte de si la web ofrece contenidos de calidad y bien estructurados. Si es así no prestes demasiada atención al doctype. Para el aprendizaje son más importantes los conceptos que los detalles.


¿Es HTML 5 experimental?


No en el sentido de que ya es una especificación oficial. Sí en el sentido de que es una tecnología novedosa y no todos los navegadores soportan todas las características de HTML 5. Además, HTML 5 está en evolución. Podríamos decir que aunque ya no se considera experimental, todavía no se considera una tecnología madura.

9
Ejemplo para describir el método de ordenación de números: ordenar esta serie de números

Caso de estudio:      45   11   32   8   267


EXPLICACIÓN

El ejercicio podemos verlo con el siguiente símil: “Tengo 5 cajas que por fuera tienen una etiqueta que pone v(1), v(2), v(3), v(4) y v(5). Dentro de cada caja hay un papel con un número (inicialmente estas cajas tienen como contenido papeles con los números 45, 11, 32, 8 y 267).

Tengo otras 5 cajas que por fuera tienen una etiqueta que pone o(1), o(2), o(3), o(4) y o(5). Dentro de cada caja hay un papel con un número (inicialmente todas estas cajas tienen un papel que no pone nada, lo consideramos como si fuera un cero). Lo que quiero es que en estas cajas al final tenga los números ordenados de mayor a menor, de modo que en la caja o(1) esté el número más grande, en la caja o(2) el siguiente más grande y así hasta terminar.

Paso 1

Queremos escribir un valor en la caja o(1) para ir ordenando los números en estas cajas. En cada paso vamos a escribir en el papel de una caja de orden o(…) analizando una caja de valor v(…) de modo que poco a poco vayamos ordenando los números.

Como la caja que pone o(1) está vacía, escribimos en el papel que contiene lo mismo que pone el papel de la caja v(1), de modo que ahora o(1) = v(1) = 45

Provisionalmente el orden 1, el mayor número, es 45, ya que de momento sólo hemos analizado la caja que pone v(1). Cuando analicemos las otras cajas a lo mejor hay que hacer cambios.

Paso 2

Comparo el papel en la caja que pone o(1) con el que pone la caja v(2). ¿Es mayor el número dentro de la caja que pone o(1) que el número dentro de la caja que pone v(2)? Sí, puesto que en o(1) tenemos un 45 y en la caja v(2) hay un 11. Por tanto el orden 2 será 11, para hacerlo efectivo escribimos en el papel dentro de la caja o(2) el número 11. Ahora tenemos como orden 1 el 45 y como orden 2 el 11 (provisionalmente).


Paso 3

Comparo el papel de la caja que pone o(1) con el que tiene la caja v(3). ¿Es mayor el número dentro de la caja que pone o(1) que el número dentro de la caja que pone v(3)? Sí, por tanto el orden 1 sigue siendo el 45. Ahora comparo el papel de la caja que pone o(2) con el que tiene la caja v(3). ¿Es mayor el número dentro de la caja que pone o(2) que el número dentro de la caja que pone v(3)? No, ya que o(2) tiene 11 mientras que v(3) tiene 32. Queremos asignar un contenido a la caja que pone o(3), pero ya sabemos que este contenido tendrá que ser el número que figuraba en la caja o(2) anteriormente porque hay que escribir otro número dentro de la caja que pone o(2). Entonces, en la caja o(3) escribimos en el papel lo que antes figuraba en la caja o(2), es decir, o(3) = o(2) = 11, esto significa que la caja que pone o(3) ahora tiene escrito en el papel que lleva dentro lo que estaba escrito en la caja que ponía o(2).
Ahora en la caja que pone o(2) escibimos en su papel el número 32 (que es lo que ponía el papel en la caja v(3).

De esta forma en las cajas o(1) nos queda el 45, en la caja o(2) nos queda el 32 y en la caja o(3) nos queda el 11. Vemos cómo nos van quedando ordenados los números.


Paso 4

Comparo el papel de o(1) que pone 45 con el que tiene la caja v(4) que es 8, como o(1) es mayor no hay que hacer cambios. Comparo o(2) con v(4) y también es mayor, no hay que hacer cambios. Comparo o(3) con v(4) y también es mayor. Ahora ya sé que en la caja o(4) puedo escribir 8. Ahora tengo los números ordenados de momento como o(1) = 45, o(2) = 32, o(3) = 11, o(4) = 8


Paso 5

Comparo el papel de o(1) que pone 45 con el que tiene la caja v(5) que es 267. Como v(5) es mayor que o(1) significa que este número se va a convertir en o(1), pero la caja con o(1) tiene un número y no puedo tacharlo directamente porque lo perdería. Lo primero que tengo que hacer es “hacerle sitio” reordenando lo que tiene cada caja y para ello:

Escribo en la caja o(5) lo que ponía la caja o(4), es decir, o(5) = 8  (podemos escribir o(5) = o(4) para indicar que la caja que pone o(5) ahora lleva un papel con lo que ponía la caja o(4)).

Escribo en la caja o(4) lo que tenía la caja o(3), es decir ahora o(4) = 11

Escribo en la caja o(3) lo que tenía la caja o(2), es decir ahora o(3) = 32

Escribo en la caja o(2) lo que tenía la caja o(1), es decir ahora o(2) = 45

Ahora ya puedo tachar el papel de la caja o(1) y escribir en él 267.

Ya no tengo más cajas que analizar (he ido en cada paso analizando una caja v y asignando contenido a una caja o, al haber analizado la última caja, v(5) y asignado el orden o(5) ya no me quedan más cajas.

Podemos escribir que el resultado, los números ordenados, queda así:

o(1) = 267 o(2) =45 o(3) = 32 o(4) = 11 o(5) = 8



10
Partimos de una serie de datos relativos a un taller de coches donde hay coches en distintas zonas (diesel, gasolina, eléctricos) y de distintas marcas (renault, toyota, fiat, seat).

CochesDieselRenault = 9
CochesDieselToyota = 2
CochesDieselFiat = 0
CochesDieselSeat = 14

CochesGasolinaRenault = 3
CochesGasolinaToyota = 7
CochesGasolinaFiat = 4
CochesGasolinaSeat = 1

CochesElectricosRenault = 2
CochesElectricosToyota = 15
CochesElectricosFiat = 9
CochesElectricosSeat= 3


¿Cómo expresar esto en forma de arrays?

Un array es un conjunto de elementos tipo variable con un nombre común. Los arrays tienen índices numéricos y cada índice tiene un significado. El significado lo decidimos nosotros como programadores.

Por ejemplo:

ciudad(1) = "México D.F."
ciudad(2) = "Santiago"

Podría indicar que la ciudad nº1 de una lista es México D.F. y la ciudad nº 2 es Santiago.

Un array puede tener más de una dimensión (índice). Por ejemplo:

ciudad (1, 3) = "México D.F."

ciudad (1, 5) = "Santiago"

Podría significar la ciudad 1 del país 3 es México D.F, y la ciudad 1 del país 5 es Santiago. Fijarse que cada ciudad tiene un número y cada país tiene un número.




Todavía podemos tener más dimensiones. Por ejemplo:

ciudad(1, 3, 2) = "México D.F."

ciudad (1, 5, 2) = "Santiago"

Podría significar: la ciudad 1 del país 3 del continente 2 es México D.F. Y la ciudad 1 del país 5 del continente 2 es Santiago.


Volvamos al problema de los coches. El contenido que nos interesa es el número de coches. Y nos interesa saber cuántos coches hay para zona (diesel, gasolina, eléctrico) y marca (renault, toyota, fiat, seat).

Como los índices de arrays sólo funcionan con números (o de momento consideramos que sólo funcionan con números) tenemos que basarnos en una idea como:

coches (número de zona, número de marca) = cantidad de coches para esa zona y marca

Pero ¿Cuál es el número de zona y el número de marca para cada zona y marca? Tendremos que decidirlo nosotros como programadores, estableciendo una correspondencia. Así, por ejemplo podríamos establecer:

Zona diesel -- > 1
Zona gasolina -- > 2
Zona electrico -- > 3

Marca renault -- > 1
Marca toyota -- > 2
Marca fiat -- > 3
Marca seat -- > 4

Aquí lo que hemos definido son los índices (zona es el primer índice y marca es el segundo índice). Ahora tenemos que escribir asignaciones que sean coherentes. Por ejemplo:

coches (1, 3) = 0 se leería de la siguiente manera: los coches en la zona 1 (que es diesel) de la marca 3 (que es fiat) son 0 coches. O dicho de otra manera, hay 0 coches diesel de marca fiat.

Si escribimos coches(1,3) = 23 estaríamos diciendo que hay 23 coches diesel y fiat, pero esto no sería una asignación correcta si el enunciado del problema nos dice que hay 0 coches en la zona diesel que sean de marca fiat.

Con los datos del problema, tendremos que construir las asignaciones correctas una a una.


11
A continuación algunos ejemplos de tipos básicos de variables y ejemplos de sentencias de asignación:

Nombre de variable: numeroClientesEnHotel
Tipo: numérica
Ejemplo sentencia asignación: numeroClientesEnHotel = 240


Nombre de variable: numeroPersonasEnPlaya
Tipo: numérica
Ejemplo sentencia asignación: numeroPersonasEnPlaya = 44



Nombre de variable: mayorCatedralSpain
Tipo: alfanumérica
Ejemplo sentencia asignación: mayorCatedralSpain ="Catedral de Burgos"



Nombre de variable: haRealizadoPracticasHospital
Tipo: booleana
Ejemplo sentencia asignación: haRealizadoPracticasHospital = verdadero
 

Nombre de variable: probabilidadCaigaMeteoritoM40
Tipo: numérica
Ejemplo sentencia asignación: probabilidadCaigaMeteoritoM40 = 0.05


Nombre de variable: ministroJusticiaSpain
Tipo: alfanumérica
Ejemplo sentencia asignación: ministroJusticiaSpain = "Alberto Gallardón"
 

Nombre de variable: existenSoldadosAfganosEnPakistan
Tipo: booleana
Ejemplo sentencia asignación: existenSoldadosAfganosEnPakistan = Falso



Nota: existenSoldadosAfganosEnPakistan = Falso se interpretaría como "en este momento no existen soldados afganos en pakistán. Sin embargo, más adelante podría cambiar la situación y en ese momento diríamos existenSoldadosAfganosEnPakistan = Verdadero

Nota: probabilidadCaigaMeteoritoM40 = 0.05 se interpretaría como "La probabilidad de que caiga un meteorito mientras circulamos por la carretera M40 es de 0.05 sobre 1, lo que equivale a un 5%. Pero si más adelante se estima que ha disminuido podríamos escribir probabilidadCaigaMeteoritoM40 = 0.01, lo que indicaría que dicha probabilidad ha disminuido.

12
A continuación algunos ejemplos de cómo poner nombres a variables:

‐ El número de clientes en un hotel: numeroClientesEnHotel

‐ El número de personas en una playa: numeroPersonasEnPlaya

‐ El nombre de la mayor catedral de tu país: mayorCatedralSpain

‐ Un parámetro que represente si un enfermero ha realizado las prácticas de hospital o no (sólo hay dos posibilidades, que sí las haya realizado o no las haya realizado): haRealizadoPracticasHospital

‐ La probabilidad de que caiga un meteorito mientras circulamos por la M40: probabilidadCaigaMeteoritoM40

‐ El nombre del ministro de Justicia de tu país: ministroJusticiaSpain

‐ Un parámetro que represente si existen soldados afganos en pakistan o no (sólo hay dos posibilidades, que sí existan o que no existan): existenSoldadosAfganosEnPakistan



Orientaciones: en estos ejemplos (aunque no es obligatorio) hemos usado la sintaxis camelcase, empezando por minúsculas e intercalando mayúsculas en cada nueva palabra. Además, hemos usado nombres descriptivos para tratar de indicar qué es lo que almacena la variable.

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

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

15
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?

16
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

17
ENUNCIADO DEL EJERCICIO 3

3. Se está realizando un estudio estadístico de los clientes que entran a un supermercado en cada hora a partir de su hora de apertura durante un día. El supermercado abre 8 horas al día y los datos de cuántas personas han entrado al supermercado en cada hora se encuentran almacenados en un array definido como personasEntran(1), personasEntran(2), … hasta personasEntran(8 ). Se desea desarrollar el pseudocódigo y el diagrama de flujo para un programa que usando “Desde … Siguiente” y “Si … Entonces” determine:

a) El total de personas que entraron al supermercado en el día.
b) Cuántas horas no entró ninguna persona y cuáles fueron.
c) Cuál fue la hora en la que entró el mayor número de personas.
d) El número medio de personas por hora que entraron al supermercado.



RESPUESTA APORTADA AL EJERCICIO 5

1.Inicio
2.Desde i = 1 a 8 Hacer
3.Leer i
4.PersonasTotales = PersonasTotales + personasEntran(i)
Mostrar “El número de personas que entraron al supermercado durante el día fue de”, PersonasTotales
5.Si personasEntran(i) = 0 Entonces
HorasCero = HorasCero +1
Mostrar “El número de horas en la que no entraron clientes al supermercado fueron de”, HorasCero
Mortrar “Las horas en las que no entraron clientes al supermercado fueron”, i
FinSi
6.Si personasEntran(i) > MayorNum Entonces
MayorNum = personasEntran(i)
Mostrar “La hora en la que entraron mayor número de personas fue”, MayorNum
FinSi
7.PersonasMedia=PersonasTotales/8
Mostrar “El número medio de personas que entraron al supermercado por hora fue de”, PersonasMedia
Siguiente
8.Fin


CORRECCIONES A REALIZAR

La línea 3 está mal expresada. Leer i no tiene sentido. i es la variable de control del bucle y lo que hace es contar 1, 2, 3, ... Se entiende que debe ser Leer personasEntran(i), es decir, extraer un dato que se encuentra almacenado de alguna manera para que pase a estar disponible.

La instrucción Mostrar “El número de personas que entraron al supermercado durante el día fue de”, PersonasTotales se encuentra dentro del bucle. El bucle se repite 8 veces, luego esta instrucción se repetirá 8 veces. ¿Es esto correcto? No, hay cálculos o instrucciones que se deben ejecutar antes del bucle, otras dentro del bucle y otras una vez terminado el bucle.

Tarea: reflexionar sobre qué se debe ejecutar antes del bucle, dentro del bucle y una vez terminado el bucle. Reescribir el algoritmo teniendo en cuenta esto.

Orientación 1: normalmente antes del bucle preparamos los cálculos, dentro del bucle hacemos cálculos y después del bucle mostramos resultados. Decimos "normalmente" porque siempre hay que reflexionar al respecto, no hay una norma fija.

Orientación 2: recordar que lo que se encuentra dentro del bucle se repetirá tantas veces como se ejecute el bucle. Si queremos mostrar 1 resultado no tiene lógica que lo mostremos 8 veces por ejemplo. En cambio, si estamos sumando las veces que ocurre algo sí tiene lógica que contabilicemos cuántas veces sucedió para el dato 1, cuántas veces para el dato 2, ... cuántas veces para el dato n.

Orientación 3: el diagrama de flujo no refleja la repetición de procesos (bucle) ¿Por qué? Recordar que un desde ... siguiente o cualquier otro bucle implica una repetición de procesos hasta que se cumple una condición de salida. Es imprescindible tener esto en cuenta para comprender la algoritmia que estamos estudiando.

Nota: primer paso es responder el algoritmo, antes de hacer el diagrama de flujo.

18
CONSULTA RECIBIDA: buenas, estoy interesado en los cursos de conceptos basicos de programacion , me gustaria hacerles unas preguntas. el proximo año comenzare ha hacer el ciclo superior informatica desarrollo de aplicaciones multiplataforma, la idea despues de acabarlo ( si pudedo) es hacer ingenieria informatica lo que me gustaria saber es si me merece la pena empezar a estudir ya estos conceptos para estar mas preparado y especializado para lo que me gustaria hacer ,gracias.


RESPUESTA: Desde mi punto de vista, sin lugar a dudas que sí merece la pena. Si te gusta y tienes tiempo, empieza a estudiar y a programar en cuanto puedas. Todo lo que avances te servirá para un futuro si te dedicas a esto.

19
ENUNCIADO:

1. Escribir un pseudocódigo basado en “Desde … Siguiente” que nos permita pedir un número y nos muestre el resultado de multiplicar ese número por todos los números comprendidos entre 50 y 60 . Por ejemplo, si el número fuera 32, nos debería devolver 32*50, 32*51, 32*52… así hasta 32*60.


ORIENTACIÓN: Antes que intentar realizar el programa en Visual Basic tenemos que tratar de generar el pseudocódigo. El número habrá que pedirlo antes de iniciar el bucle. Una vez sepamos el número y lo tengamos almacenado en una variable, comenzaremos el bucle. Dentro del bucle tendremos que realizar las operaciones matemáticas y las operaciones de mostrar el resultado.

Intentar escribir el pseudocódigo.

20
CONSULTA 1: he intentado instalar el CD de Visual Basic pero no es compatible con mi sistema operativo. Al parecer la versión es de 32 bits pero mi Windows 7 es a 64 bits. ¿Cómo puede solucionarse el problema?

CONSULTA 2: ¿Cómo puedo instalar Visual Basic en mi computador?


RESPUESTA: vamos a plantear distintas alternativas para poder instalar Visual Basic.

El primer paso es tener el programa (archivos de instalación descargados de internet o cd de instalación). Para quien no disponga del programa puede descargar Visual Basic 6 desde este enlace:

Link de descarga de Visual Basic 6 en google drive:

https://docs.google.com/file/d/0BzAA6hbbWbAeOUJkY2xnMlptRHc/edit?usp=sharing
(cuando aparezca el mensaje Lo sentimos, pero no podemos analizar si este archivo contiene virus. pulsar en "Descargar de todos modos") Una vez descargado hay que descomprimir y luego proceder a la instalación.

En Windows XP, Windows Vista, etc. el programa se puede instalar directamente. Para Windows 7 de 64 bits, Windows 8, etc, seguir las instrucciones que se indican a continuación.

Instalar Visual Basic 6 en Windows 7 ó Windows 8 de 64 bits

1. Copiar el CD de Visual Basic en una carpeta que creamos nueva y que llamaremos VB6 en el disco duro
2. En esa nueva carpeta, buscar la carpeta SETUP
3. Copiar (copiar y pegar) todos los archivos de la carpeta SETUP a la carpeta principal recién creada vb6 (es decir, hemos trasladado los archivos de la subcarpeta a la carpeta principal)
3. Buscar el archivo de nombre VS98ENT.stf. Ahora renombramos el archivo VS98ENT.stf por ACMSETUP.stf. Comprueba que el nombre del archivo es correcto seleccionándolo y pulsando propiedades (sería incorrecto si te aparece acmsetup.stf.stf, o si te aparece en minúsculas cuando el resto de nombres de archivo está en mayúsculas). En algunas versiones como la Profesional, busquen VS98PRO.stf, y tengan en cuenta que vs es de Visual Studio, vb de Visual Basic
4. Ahora, en vez de ejecutar el instalador mediante setup.exe ejecutamos acmsetup.exe. Ten en cuenta de ejecutarlo como Administrador !!


En principio el programa ya funcionará y no hará falta hacer nada más.

En caso de detectar problemas como que se enlentece al mover o cambiar el tamaño de los objetos y titilan los objetos sin parar hacer esto.

1. Ir a la carpeta de instalación de VB6, algo como: C:\Program Files (x86)\Microsoft Visual StudioVB98
2. Seleccionar el ejecutable VB6.exe
3. Botón derecho
4. Propiedades
5. Seleccionar la solapa Compatibilidad
6. En este punto debemos seleccionar y activar los siguientes puntos:
1. Marcar: Ejecutar este programa en modo compatibilidad para: Windows XP SP3
2. Marcar: Deshabilitar los temas visuales
3. Marcar: Deshabilitar la composición de escritorio
4. Marcar: Deshabilitar el ajuste de escala de la pantalla si se usa la configuración elevada de ppp


Para quien no le funcione el método anterior:

La alternativa sería instalar otra versión, recomendamos usar la 2010 o superior. En general va a resultar igual, aunque puede haber pequeños cambios respecto a versiones anteriores. Para la descarga puede usarse:

1) Descarga de Visual Basic 2010 Express: Acceder a  https://drive.google.com/file/d/0BzAA6hbbWbAeZjhQSTlSWThFVmc/view?usp=sharing, pulsar el icono de descarga, descomprimir el fichero zip en nuestro ordenador e instalar. Nota: ejecutar la instalación como administrador (botón derecho del mouse, opción ejecutar como administrador).

2) Descarga una versión actual de Visual Studio Express desde el sitio web de Microsoft. El enlace es el siguiente: https://www.visualstudio.com/es-es/products/visual-studio-express-vs.aspx

3) Alternativamente http://microsoft-visual-studio.softonic.com/

4) Otros

Alternativa 1 para Visual Basic 6: intentar la instalación siguiendo un tutorial como alguno de estos

http://social.msdn.microsoft.com/Forums/es-ES/vb56es/thread/5a5384f3-93e3-4934-a785-d61200484bbc/

http://www.youtube.com/watch?v=TBJp0HPb2hU

http://www.youtube.com/watch?feature=iv&annotation_id=annotation_875253&v=ZuIAkzocW80&src_vid=TBJp0HPb2hU


Alternativa 2 para Visual Basic 6: intentar la instalación siguiendo un tutorial como este

http://www.taringa.net/posts/info/6796511.R/Visual-Basic-6_0-en-Windows-7.html


Alternativa 3: Descargar otra versión (Visual Basic 2008, Visual Basic 2010)

http://microsoft-visual-basic-2008-express.softonic.com

Si usamos otra versión habrá pequeñas diferencias con respecto a Visual Basic 6, pero a efectos de aprendizaje nos puede servir igualmente. Para el aprendizaje no es estrictamente necesario usar la versión 6.

Páginas: [1] 2
Esto es un laboratorio de ideas...
Aprender a programar

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