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 - Gilding

Páginas: 1 [2] 3
21
Hola Rodrigo_avia.

Realmente no afecta al funcionamiento del programa donde situas los métodos setters y getters. Sin embargo es recomendable ponerlos juntos. Dependiendo de tus gustos o preferencias, o de lo te exijan en un puesto de trabajo, se pueden colocar antes o después del resto de métodos o funciones de la clase. No importa si pones antes los getters y después los setters o lo haces al revés. También puedes poner un método set y a continuación su método get, y así sucesivamente con cada atributo de la clase.

Personalmente yo normalmente establezco los métodos setters y getters tras la declaración de los constructores de la clase (salvo algún caso particular). Y suelo intercalarlos: establezco el set y el get para un atributo, después el del siguiente, etc etc. Todo ello con el fin de facilitar la lectura y comprensión del código.

Una vez dicho esto... sientete libre de hacerlo como prefieras.

Un saludo!

22
Muy buenas Atlantis y bienvenido a aprender a programar.

En el siguiente enlace tienes explicados los pasos para poder descargar Visual Basic Express desde la web oficial de Microsoft. La versión Express es completamente gratuita. La versión 2010 es compatible con Windows XP, pero es necesario que tengas instalado el Service Pack 3 de Windows XP, si no es así, no funcionará.
Este enlace esta extraído del curso de Visual Basic de aprenderaprogramar.com, si quieres aprender Visual Basic te recomiendo este curso. Aunque si vas a empezar a programar por primera vez, tal vez te iria mejor empezar por los cursos de Fundamentos de la programación I y II que ofrece aprenderaprogramar.com.

https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=117:descargar-e-instalar-visual-basic-entorno-ide-vb-visual-studio-empezar-a-programar-cu00304a&catid=37:curso-aprender-a-programar-visual-basic-desde-cero&Itemid=61

Un saludo!

23
Muy buenas.

Por recomendación de Alex Rodriguez tras finalizar el curso de fundamentos I, inicié a la vez el de fundamentos II y el de Visual Basic. Ya casi he terminado estos, y la verdad es que fue un gran consejo, puesto que todo lo que se muestra en los cursos de fundamentos se aplica casi punto por punto en el curso de Visual Basic.

Realizando los cursos me he dado cuenta de que independientemente de realizarlos de esta forma o en orden, es necesario saltar de un curso a otro para asentar conocimientos o realizar comprobaciones, pero los temas casi nunca se corresponden en número o nombre con su homólogo en otro curso. Se que es muy difícil, por no decir imposible que la numeración se corresponda entre los temas, más que nada porque son dos cursos "contra" uno. Sin embargo creo que seria una buena idea agrupar los temas por bloques y por colores. De esta forma saltar de la parte teorica de uno de los cursos de fundamentos a la parte práctica del de Visual Basic seria más sencillo para los estudiantes y también más rápido. También se agradeceria en visitas futuras una vez terminados los cursos. Porque por lo menos por mi parte, sé que volveré a revisar varios de los temas pasado un tiempo.

No habría que cambiar nada en los temas, simplemente definir los bloques temáticos en el índice de cada curso.

Por ejemplo:
Bloque de Errores - Definición - Detección - Tratamiento
Curso Fundamentos nivel II
Temas 29 a 46

Bloque de Errores - Definición - Detección - Tratamiento
Curso Visual Basic
Temas 49 a 56

Para resolver muchos de los problemas del curso de Visual Basic, he recurrido al pseudocódigo de los cursos de fundamentos, para intentar traducir por mi cuenta dicho pseudocódigo a Visual Basic, antes de ver las soluciones de los ejercicios. Estos bloques temáticos hubieran sido de gran ayuda para no tener que buscar tema por tema donde estaba el pseudocódigo de un ejercicio en particular.


Muchas gracias por vuestro tiempo y por el trabajo que haceis.

Un saludo!


24
Muchisimas gracias Mario. Ahora si que he entendido perfectamente que es lo que estaba ocurriendo. Me ha costado jejeje, pero al final lo he pillado.

Sabiendo que sucede exactamente y teniendo en cuenta que la instrucción ReadLine() solo funciona en orden (al menos en este punto del curso), creo que la solución más sencilla a este problema es guardar los datos del fichero en el array (tal vez seria conveniente hacerlo en el inicio de la aplicación, para que no abra y guarde los datos cada vez que queremos buscar algo) y después buscar los ISBN directamente en el array. De esta forma no habría lugar a error alguno.

Muchas gracias, de verdad. Era algo que empezaba a tener atravesado  ;D.

25
Ya estoy de nuevo por aquí.

Antes de nada muchas gracias por tus respuestas Mario.

Más abajo adjunto el código del ejercicio resuelto. Aunque sigue teniendo algunas pegas:

Para empezar he tenido que recurrir a los métodos IsNumeric() y Len(), para comprobar si hay letras y para contar el número de caracteres (dígitos en este caso). Sin embargo tengo la impresión que este problema podría resolverse (y debería poder resolverse dado el punto del curso en el que se encuentra) utilizando solo if... else y while. Algo como:

Código: [Seleccionar]
Dim contador As Integer
Dim ISBN, digitosISBN As Long

contador = 0
digitosISBN = ISBN

Do while digitosISBN > 0
      digitosISBN = digitosISBN / 10
      contador = contador + 1       '[contador seria el número de dígitos del número]
Loop

Con esto evitariamos tener que recurrir a cadenas de texto (nos ahorramos comprobar si hay letras) y ahorramos alguna variable. El problema es que los ISBN pueden empezar por cero, y por ello esta solución no es válida, dado que al llegar al primer cero la condición no se cumplirá y saldrá del bucle antes de contar todos los dígitos que quedan, que serían todo ceros claro. ¿Habría alguna forma de hacerlo solo con If... else y while?

Por otro lado, aunque he añadido la comprobación de línea que mencionabas (dicho sea de paso no se si es correcta), si desactivo la comprobación de los 10 dígitos, sigue sin funcionar correctamente. Continua leyendo los datos de los precios como si fueran ISBN. He hecho bastantes comprobaciones pero sigo sin entender porque si nosotros tenemos dato(1) y despues saltamos a dato(4) con i = i + 3, el algoritmo lee dato(2) como ISBN. Si saltamos del 1 al 4, ¿Por qué lee el 2?.


El ejercicio:

Código: [Seleccionar]
Public Class Form1
    Dim dato(50) As Single
    Dim iISBN As Long
    Dim sISBN As String
    Dim precio, valorLote As Single
    Dim encontrado As Boolean

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.Text = "Libreria"

        LabelResultado.Text = ""

        ButtonBuscar.Text = "Buscar"
        ButtonCalcular.Text = "Calcular"

    End Sub

    Private Sub ButtonBuscar_Click(sender As Object, e As System.EventArgs) Handles ButtonBuscar.Click
        Dim i As Integer
        Dim digitosISBN As Integer

        encontrado = False

        sISBN = InputBox("¿Cuál es el ISBN del libro?", "Busqueda Libro")
        digitosISBN = Len(sISBN)

        Do Until IsNumeric(sISBN) = True And digitosISBN = 10
            MsgBox("El ISBN introducido debe tener 10 dígitos" & vbLf & "y solo puede contener números", , "Error ISBN")
            sISBN = InputBox("Introduzca un ISBN de 10 dígitos: ", "Busqueda Libro")
            digitosISBN = Len(sISBN)
        Loop

        iISBN = CLng(sISBN)

        Dim myFileToRead = New System.IO.StreamReader("C:\Users\Toshiba\Desktop\libros.dat", False)
        i = 1
        dato(i) = myFileToRead.ReadLine()
        Do While dato(i) <> -500

            If dato(i) = iISBN And (i - 1) Mod 3 = 0 Then

                dato(i + 1) = myFileToRead.ReadLine()
                dato(i + 2) = myFileToRead.ReadLine()

                precio = dato(i + 1)

                If dato(i + 2) = -66 Then
                    precio = precio - ((precio / 100) * 15)
                End If

                If dato(i + 2) = -99 Then
                    precio = precio - ((precio / 100) * 25)
                End If

                encontrado = True
                LabelResultado.Text = "Libro encontrado" & vbLf & "Su precio es: " & precio
            End If

            i = i + 3
            dato(i) = myFileToRead.ReadLine()
        Loop
        myFileToRead.Close()

        If encontrado = False Then
            LabelResultado.Text = "Libro no disponible"
        End If

    End Sub

    Private Sub ButtonCalcular_Click(sender As Object, e As System.EventArgs) Handles ButtonCalcular.Click
        Dim i As Integer

        precio = 0
        valorLote = 0

        Dim myFileToRead = New System.IO.StreamReader("C:\Users\Toshiba\Desktop\libros.dat", False)
        i = 1
        dato(i) = myFileToRead.ReadLine()

        Do While dato(i) <> -500

            dato(i + 1) = myFileToRead.ReadLine()
            dato(i + 2) = myFileToRead.ReadLine()

            precio = dato(i + 1)

            If dato(i + 2) = -66 Then
                precio = precio - ((precio / 100) * 15)
            End If

            If dato(i + 2) = -99 Then
                precio = precio - ((precio / 100) * 25)
            End If

            valorLote = valorLote + precio

            i = i + 3
            dato(i) = myFileToRead.ReadLine()
        Loop
        myFileToRead.Close()

        LabelResultado.Text = "El valor total del lote es: " & valorLote
    End Sub
End Class


Un saludo!


26
Hola resakoso!

El ejercicio esta desarrollado correctamente. Solo te hago dos apuntes:
El primero es que deberías declarar los atributos de la clase Profesor como privados. Creo que en Java si no pones nada los declara como públicos (no tengo muchas nociones de Java jeje, todavía...), de todos modos es recomendable declararlos explicitamente para mayor claridad a la hora de leer el código. Es necesario que los atributos sean privados para que no puedan ser modificados por otra clase o la secuencia principal del programa, solo debe poderlos modificar la clase a la que pertenecen. Puedes hacer una prueba en el método main antes de realizar modificación alguna. Prueba a hacer esta llamada:
p1.nombre = "Manolo"
Esto no debería poder hacerse. Siempre tendríamos que recurrir al método setNombre().

El segundo apunte: si seguimos al pie de la letra el enunciado del ejercicio, todavía te faltaría crear un constructor para la clase Profesor que no requiera argumentos e inicialice los atributos "vacios".

Un saludo!

27
Hola LPM!

Para entender tu primer problema primero hay que ir a la base de las matemáticas. Doy por hecho que sabes que existen distintos tipos de conjuntos de números, en total son 5 conjuntos de tipos de números. Nosotros nos vamos a centrar en 2:

Los números Enteros. Que son los números comprendidos entre en el 1 y el infinito (números positivos), el cero, y del -1 al menos infinito (los números negativos).

Los números Reales. Que son los números comprendidos entre el 1 y el infinito (números positivos), el cero, del -1 al menos infinito y todos los números decimales que hay entre medias. Es decir, que los números reales comprenden los números enteros... los números enteros estan dentro de los números decimales. Pero no ocurre al contrario, los decimales no estan dentro de los números enteros.

Si te pongo como ejemplo un 2, este dos sin más podría ser un número entero o un número decimal (float o double). Si pusiera 2,00 (o 2.00 según tengas que usar el punto o la coma), entonces seria un número decimal (float o double).

Ahora, remitiendome a tu primer ejemplo, te indican que no es recomendable la sentencia "sobrepeso = 2 * peso", cuando sobrepeso es de tipo decimal (double) y peso de tipo entero (int). Por si misma esta sentencia es correcta, porque tanto el "2", como "peso" son de tipo entero, dando como resultado otro número de tipo entero, que podría almacenarse perfectamente dentro de una variable decimal. La cuestión es, si realizo una operación con dos números enteros... ¿Por qué guardarlo en una variable de tipo decimal?. Estamos desperdiciando memoria al utilizar una variable de tipo decimal (que requiere más memoria), en vez de utilizar una variable de tipo entero (que requiere menos memoria que una variable de tipo decimal). Y además en un código de cierta longitud, podría dar lugar a errores. Por no mencionar que dificulta la lectura del código para el programador.

Sobre el segundo ejemplo: Este ejemplo es correcto, por dos motivos. Para el primero debes ver su versión "extendida", si no utilizamos el operador de asignación compuesta:
saldo = saldo - precioCaja * cantidadCajas;
Como puedes observar, en las operaciones estamos incluyendo la variable "saldo", que es de tipo decimal, por lo tanto cabe la posibilidad de que el resultado tenga decimales.
El segundo motivo por el que es válida se da en el supuesto que "precioCaja" sea de tipo decimal (float o double). Yo con verlo estoy seguro que es de tipo decimal, porque por norma general el precio de un objeto suele tener decimales o puede tener decimales. Con todo esto llegamos a la conclusión que la sentencia es válida, aunque una de las variables sea de tipo entero (cantidadCajas), porque si realizamos una operación entre un número entero y uno decimal, el resultado normalmente será un número decimal.

Llegando a tu último ejemplo debes ser consciente de una cosa, no estas realizando una operación aritmética, sino una operación lógica. Estas comparando un número con otro, no sumandolos, restandolos, multiplicandolos, etc etc. Cuando realizamos una comparación, ya sea entre números o cualquier otra cosa, solo podemos obtener dos resultados: o son iguales (verdadero, true, etc) o no son iguales (falso, false, etc). En tu ejemplo en vez de si son iguales se compara si es mayor que o menor que, y los resultados posibles en cada caso son los mismos, solo 2: o es mayor que, o no es mayor que; o es menor que, o no es menor que. Si nos remitimos a la definición de lo que es una variable booleana, vemos que este tipo de variable solo puede tener dos resultados: Si o No, Verdadero o Falso, 1 o 0, True o False, etc etc. Por ello se dice que estas comparaciones son de tipo booleano, y solo pueden devolverte verdadero o falso.

Espero que te sirva de aclaración. Si tienes alguna duda más, no te cortes en preguntar.

Un saludo!!

28
Aprender a programar desde cero / Re:Duda Idioma api Javas
« en: 13 de Noviembre 2014, 20:47 »
Hola de nuevo Sixtoex.

Puedes apoyarte en google por supuesto. También puedes preguntar en un foro o a un programador si tienes esa suerte. Pero debes asumir que la ayuda o referencia de un lenguaje es una de las mayores y mejores herramientas de las que dispone un programador. Ten en cuenta que si el día de mañana te dedicas a esto profesionalmente cabe la posibilidad que en el trabajo no dispongas de acceso directo a internet. Yo he estado en esta situación (no como programador), ya sea por seguridad, por evitar filtraciones o robos, etc etc.

Como decías en otro comentario, desconocer métodos no te convierte en mal programador, pero conocerlos si que te hace ser mejor programador al aumentar tu rango de acción y tus opciones de desarrollo. He tenido la suerte de trabajar en algún proyecto con programadores que llevaban 10 o 12 años como programadores profesionales, y lo primero que hacian al llegar al trabajo era abrir el software en el que programaran y la referencia del lenguaje con el que estuvieran programando. Absolutamente nadie se conoce un lenguaje entero (si eres un genio tal vez si jejeje). Ellos conocían o sabían que existía un método que resolvía "x" situación. A veces recordaban el nombre del método, otras simplemente lo que hacia, pero normalmente no recordaban todos los parámetros del método, o de que tipo eran. Así pues, siempre que utilizaban un método que hacia tiempo que no usaban entraban en la referencia, lo buscaban, volvian a recordar sus parámetros y como funcionaban exactamente. Si personas que llevaban tantos años como profesionales seguían recurriendo a ella con regularidad, significa que es una herramienta a la que como programadores, cariñosamente hablando, estaremos atados de por vida. Es más, uno de mis profesores nos expuso una métafora sobre esta cuestión: "La referencia de un lenguaje es a un programador, lo que la biblia a un sacerdote".

¿Qué es difícil utilizar la ayuda? En este punto no podemos estar más de acuerdo. Al principio es muy difícil. Pero como dije en el otro post, cuanto más la usas, más fácil es navegar por ella. Y sí, vas a tener que invertir días enteros simplemente navegando en ella, y no te sientas mal por ello, es parte de ser programador. Este es uno de los motivos por los que en aprenderaprogramar.com inciden varias veces en que ser programador conlleva bastante tiempo. Por mi experiencia personal, que no es mucha, y por lo que me han dicho programadores profesionales... se necesitan entorno a 2 años (dependerá del tiempo que se le dedique evidentemente) para tener una base sólida de conocimientos sobre un lenguaje de programación. Y esto es solo un punto desde el que partir, porque es probable que pasen 10 años más, y todavía te topes alguna que otra vez con un método que no conocías.

Además, el aprender a utilizar correctamente la ayuda te facilitará el camino si algún día tienes que utilizar SDK o bibliotecas de terceros. Muchas veces estos SDK no aparecen comentados en ninguna parte de la red y la única forma de poder utilizarlos es sumergirse directamente en ellos.

Un saludo! y espero haberte servido de ayuda.

29
Hola Mario.

Muchas gracias por tu respuesta. Challenge Accepted! jajaja. Voy a intentar resolverlo con las indicaciones que me das en tu respuesta. Aunque no sé si sería más correcto llegar primero al tema en el que se tratan los errores, para intentar aplicar esa teoría a este problema o intentar resolverlo ya.

Gracias también por la aclaración del uso del término "base de datos". Un artículo muy interesante el que has adjuntado. No tenía muchas nociones sobre el tema, asi que me ha aclarado bastantes cosas.

Me gustaría añadir una cosa más. Sigo teniendo una "espinita" clavada con este ejercicio. Me ha quedado claro que el problema se puede resolver añadiendo algunos condicionates para realizar comprobaciones. Pero no entiendo porque no funciona correctamente el código del ejercicio. Este ejercicio lo presentais por primera vez en el curso fundamentos nivel I, en el tema CU00171A. He repasado el diagrama de flujo que exponeis en dicho tema varias veces, y para mi la lógica de ese diagrama es correcta, debería funcionar correctamente en la situación en la que ahora no lo hace (evidentemente para lo de los 10 dígitos del ISBN es completamente necesario añadir una comprobación). No comprendo donde surge el error... si la lógica es correcta: ¿Por qué falla?

De nuevo muchas gracias, y perdón por la insistencia, esto me tiene desconcertado.

Un saludo!

30
Aprender a programar desde cero / Re:Duda Idioma api Javas
« en: 12 de Noviembre 2014, 21:09 »
Hola Sixtoex.

Con respecto a la traducción de la API espero que alguien pueda ayudarte, ya que yo no tengo ni idea de si se puede poner en español. De todos modos mi consejo es que te acostumbres a trabajar con ella en inglés, ya que allí donde vayas es como te la vas a encontrar por norma general.

Sobre tu otra duda voy a exponerte como me enfrento yo a esta situación.
Por un lado, si conozco el término aproximado en español, intento buscarlo así en google. También busco sinónimos del término y realizo busquedas con ellos. Si aún así no encuentro nada o lo que encuentro no me convence, traduzco el término al inglés e inicio de nuevo las busquedas con dicho término y sus sinónimos. Normalmente en este punto ya aparece algo que cubre mis necesidades.
Por otro lado, una vez llevo un tiempo trabajando con un lenguaje intento buscar dichos términos en la ayuda o referencia que suelen adjuntar prácticamente todas las APIs para estos menesteres. Al principio cuesta un poco, pero cuanto más la usas, más fácil te resulta encontrar nuevas funciones o métodos.
Otra cosa que suelo hacer es ver los tutoriales que suelen venir incluídos dentro de estas ayudas. Por norma general estos tutoriales no estan orientados a enseñar a programar a alguien que no tiene conocimientos de programación. Su objetivo es enseñar a programadores que se inician en un nuevo lenguaje la sintaxis y palabras reservadas de dicho lenguaje. Además muestran muchas de las funciones más utilizadas en el lenguaje al que sirven de referencia. También te enseñan a navegar por la ayuda y a convertirla en tu mayor aliada jejeje.

Todo esto lo explican muy bien en los primeros temas del curso de Visual Basic de aprenderaprogramar.com. Dan las instrucciones paso a paso para instalar la ayuda de Visual Studio en el ordenador, para no tener que acceder a internet para visualizarla. Aunque también se puede acceder a ella a través de la red sin tener que descargarla. Lo mismo ocurre con casi todas las ayudas que he visto yo en otros softwares.

Para finalizar, si ninguna de estas vias resuelve alguno de tus futuros problemas, siempre tendrás la posibilidad de preguntar en un foro de programación como este.

Un saludo!

31
Hola!

En el tema CU00334A-2 del curso de Visual Basic proponeis un ejercicio para comprobar si existe un libro dentro de un lote, y si existe que nos devuelva el precio en función de un descuento. Y en la segunda parte del ejercicio que nos devuelva el precio del lote completo.

Mi problema surge en la primera parte del ejercicio. He utilizado como base de datos del lote los datos que poneis en el ejemplo. Si introduzco un ISBN que esta en el lote, lo encuentra y me devuelve el precio correctamente aplicando el descuento. Si introduzco un ISBN que no esta en lote, me indica que no esta en el lote. El problema surge cuando introduzco como ISBN un valor que corresponde por ejemplo con uno de los precios de la base de datos, ya que me dice que si existe ese libro, me devuelve como precio el centinela que se utiliza para indicar el descuento (seria la siguiente posición en la base de datos), y por último me da un error al exceder los limites del array que contiene los datos, porque se salta el centinela que es usado como indicador de final de archivo.

Esto no debería ocurrir puesto que vamos saltando posiciones en el array de 3 en 3 para que solo lea los datos correspondientes al ISBN de cada libro. Tras volverme loco buscando el error en mi código, he probado con el que poneís de ejemplo... y sucede exactamente lo mismo. Mis preguntas son: ¿este es un error "controlado", ya sabiais que existia? ¿Como podríamos solucinar esto? Ahora ya me pica la curiosidad jejeje.

Aclaro que el archivo libros.dat al tener pocos datos, lo he creado a mano con el bloc de notas, en vez de hacerlo por código. Por si esto influyera en algo. Lo adjunto por si fuera un error del archivo

Muchas gracias por vuestro tiempo.

Un saludo!

32
Hola Mario.

Gracias por intentar ayudarme... pero con tu explicación no ha quedado resuelta mi duda. Entiendo como funcionan tanto el array bidimensional, como los bucles. Lo que no comprendía bien era en que punto el bucle o el array le indicaban al archivo o a la instrucción de lectura del archivo por que línea seguir leyendo. Porque realmente si estamos en la iteración nota(2, 1), a través de este dato la instrucción de lectura del archivo no interpreta de ninguna manera que tiene que leer la linea número 41 del archivo.

Y digo comprendía, porque después de leer varias veces el código y hacer algunas pruebas creo haber entendido "porque" ocurre esto... aunque no el "como" (lo que sucede internamente), pero tampoco me es necesario saberlo.

Este hecho se debe a que abrimos el archivo antes de iniciar el primer bucle, y lo cerramos tras finalizar todas las iteraciones de ambos bucles. Y dentro del bucle llamamos al método o función lectura de línea. Entiendo que al estar abierto en todo momento el archivo este método continua leyendo en orden cada línea del archivo, es decir, cada vez que es llamado lee la siguiente línea del archivo independientemente de la iteración en la que se encuentre el bucle.

Por el contrario, si ponemos las instrucciónes de abrir y cerrar el archivo dentro de uno de los bucles:
Si fuera dentro del primer bucle (de 1 a 18), tendríamos el comportamiento que describo en el primer post. Siempre leería las 40 primeras líneas.
Si fuera dentro del segundo bucle (de 1 a 40), en cada una de las 40 iteraciones leería siempre la primera línea del archivo.

De todos modos muchas gracias por tu tiempo.

Un saludo!

33
Muy buenas!

En el tema CU00333A del curso del Visual Basic proponeis el siguiente ejercicio:

 En un complejo industrial se desea incentivar a los encargados de turnos de producción. A cada encargado le corresponde un turno. Hay 18 turnos, y por cada uno de ellos 40 operarios. Para evaluar a los encargados se ha hecho una encuesta entre los trabajadores. Se les ha pedido que evalúen a su encargado de 0 a 10 siendo el 5 el aprobado. Los resultados están almacenados en un array tipo Nota(turno, operario) donde turno indica el número de turno y operario el número de operario dentro del turno. Desarrollar un programa que determine en qué turnos todos los operarios del mismo han aprobado al encargado.

Nota: las notas las generaremos aleatoriamente en un fichero con un pequeño programa auxiliar.


Para resolverlo proponeis utilizar un bucle dentro de otro bucle:
For i = 1 to 18
      For j = 1 to 40
          nota(i, j) = Leer linea del archivo
          Comparar si la nota(i, j) es mayor a 5.
      Next j
Next i

Teniendo en cuenta que en total tenemos 720 notas (18 * 40), en 720 líneas de un archivo. No entiendo como este bucle interpreta que tras la primera iteración (notas de la 1 a la 40) debe leer las notas de la 41 a la 80 en la segunda iteración y así sucesivamente hasta llegar a la nota 720. Ahora mismo yo interpreto que siempre lee las notas de la 1 a la 40. ¿Podría alguien explicarme esto, por favor?

Muchas gracias y un saludo!

34
De todo un poco... / Re:Que curso hago antes de empezar?
« en: 11 de Noviembre 2014, 00:26 »
Considero que si una persona ha tenido la inquietud de probar un sistema operativo distinto de Windows, aunque solo sea por verlo por si mismo y probarlo un poco, para mi ya tiene conocimientos suficientes para aventurarse en la programación. Para la gente entendida instalar un sistema operativo no tiene mayor complicación, pero no todo el mundo tiene los conocimientos necesarios para instalar un sistema operativo en su propio equipo. Asi que te animo a que te inicies en el apasionante mundo de la programación jejeje.

Con respecto a los cursos de fundamentos me gustaría añadir una alegoría que se me ha ocurrido. Imaginate el siguiente supuesto:

Tú nunca has aprendido a hablar, ni a escribir, en ningún idioma conocido. No es importante como te comunicaras antes... y damos por hecho que tienes conocimientos generales. Y un día, de pronto, te da no solo por aprender ha hablar español, sino por escribirlo. Es dificil escribir español (y casi cualquier idioma occidental) sin saber que es un sustantivo, un verbo, un adjetivo, un adverbio, etc etc. Ni siquiera sabes como se forma una frase, o que significan el punto o la coma.  Tal vez aprendas algunos nombres (sustantivos) viendo escritos. Puede que alguna conjugación de algunos verbos... pero no sabras conjugar un verbo por ti mismo. No sabrás que un adjetivo representa una cualidad de un sustantivo o que un adverbio es un complemento de un verbo. Con todos estos inconvenientes es posible que seas capaz de escribir una frase, puede que incluso un párrafo, pero será muy dificil que algún día escribas una página entera, ya no digamos una carta, un libro, etc etc. Lo más interesante de esto, es que si aprendes esta serie de cosas, no solo se facilitará tu aprendizaje del español, también lo harán el del inglés, el francés, el portugués, el italiano, etc etc. porque todos estos conceptos son comunes a todos estos lenguajes. Pues básicamente los cursos de fundamentos de programación que ofrece aprenderaprogramar son estos conceptos generales.

Por otro lado, estos conocimientos te permitirán seleccionar y clasificar de forma más productiva la información que encuentres en otras webs, libros, etc.

Un saludo!

35
De todo un poco... / Re:Que curso hago antes de empezar?
« en: 10 de Noviembre 2014, 21:22 »
Hola Shoori83!
Bienvenido a aprenderaprogramar.com.

Por como te has referido a la informática me ha dado la impresión que no tienes muchas nociones de la misma. Si este es el caso, y sin pretender desanimarte u ofenderte ni nada por estilo, yo te recomendaría que empezaras por otros aspectos más básicos o "sencillos" de la informatica. Ya que la programación es una rama de la informática un tanto compleja o "avanzada". Sino es así y te he mal interpretado te pido disculpas.

Da igual si quieres aprender a programar por hobbie o con vistas a dedicarte profesionalmente a ello. Yo recomiendo a todo el mundo aprender a programar, indistintamente de los objetivos que tenga. Creo que es una materia que nos ayuda a mejorar nuestra forma de enfrentarnos a nuevos problemas. Porque en eso consiste la programación, en resolver problemas.

Yo he llegado hace poco a este foro y aún llegando con una pequeña base de programación decidí empezar por los cursos de fundamentos, y realmente no me equivoqué. Asi pues, te recomiendo que empieces por ellos.
Lo que tratan en estos cursos son conceptos generales a todos los lenguajes de programación. También te enseñan como abordar un nuevo problema, como desarrollarlo paso a paso... porque sin una buena planificación previa es muy fácil perderse una vez te has puesto a escribir código, te lo digo por experiencia personal ;D. Además te recomiendo que una vez hayas hecho los dos cursos de fundamentos, completes también el de Visual Basic. También puedes hacer lo que me recomendaron a mi: hacer el primero de fundamentos y después hacer a la vez el segundo de fundamentos y el de Visual Basic.
El curso de Visual Basic no es un curso completo de Visual Basic como tal, es más bien la aplicación prática de los cursos de fundamentos de la programación. No profundiza exhautivamente en lenguaje, más bien sirve como un acercamiento general a los lenguajes de programación. Yo era reticente en hacerlo, pero después de varias lecciones, me he dado cuenta de su gran utilidad. Si nunca has programado, es por donde deberías empezar. Todo lo que aprendas en ellos podras aplicarlo a cualquier lenguaje que desees aprender después, sea el que sea.
Se que te parece mucha carga de información y que tendrás que invertir mucho tiempo, pero la informática en general es así, hay que echarle horas. Y tienes que ver la programación como una maratón, no como los 100 metros lisos.

Espero haberte ayudado. Si tienes alguna duda más... aquí estamos.

Un saludo! 

36
Hola Sintoex!

A priori yo creo que tiene mucho sentido y grandes ventajas.
Como dices, las rutas no son iguales en un sistema operativo y en otro. Tampoco lo serían las entradas de usuario, por ejemplo del teclado de Windows al de Mac. Y puede que incluso unas bibliotecas esten denominadas de distinta forma en uno u otro sistema, pero muchas al final hacen lo mismo, solo varia el nombre.
La gran ventaja que observo yo, es que el grueso de la aplicación no varia en absoluto de una plataforma a otra. No tienes que reescribir la aplicación completamente desde cero para adaptarla de un sistema operativo a otro. Simplemente con cambiar las rutas de los archivos, modificar los inputs (algo más acuciante si pasas de un sistema de "sobremesa" a uno móvil, por ejemplo), modificar la sintaxis de las llamadas a algunas bibliotecas, y algunas cosillas más y voila! tienes exactamente la misma aplicación, exportada a distintos sistemas operativos.

Es mi humilde opinión, pero a mi parecer es un gran avance el no tener que reescribir toda la aplicación de nuevo.

Un saludo!

37
Hola de nuevo.

Estoy de acuerdo con Mastermind en todo lo que ha dicho.

Es cierto que Flash a caído en deshuso en la mayoría de la red. Primero fue Apple la que decidió dejar de utilizarlo y tiempo después se unió Microsoft dejando de dar soporte para la versiones de Windows para móviles y tablets, pero en PC todavía esta presente. Android también sigue trabajando con Flash.
Y también es cierto que esta siendo sustituido por HTML 5. Porque permite, entre otras cosas, reproducir videos utilizando directamente el hardware de los dispositivos, sin depender de software de terceros, ahorrando así "algo" de batería en los dispositivos móviles y también evitando que las compañias tengan que esperar las actualizaciones de dichos softwares.

Aún así, todavía siguen existiendo muchas webs que dependen principalmente de Flash, y otras tantas que aunque ya no dependen completamente de Flash, siguen utilizandolo en un segundo plano. Asique creo que Flash estará algunos años más "dando guerra".

Mi recomendación... si lo vas a usar como "hobbie", para uso personal y porque te gusta Flash, aprendelo o sigue con él. Por el contrario, si tu objetivo es de indole profesional, tal vez seria más conveniente invertir tu tiempo en otros lenguajes, como por ejemplo los que te recomienda Mastermind. La decisión es tuya.

Un saludo!

38
Hola muy buenas!

En el tema CU00309A del curso de Visual Basic indicais que la forma más acertada de declarar una serie de variables es de la siguiente forma:

   Dim i%, j%, k As Integer
   Dim longitud!, canto!, ancho As Single.

La cuestión es que Visual Studio 2010 no me permite hacerlo de esta forma. Me indica que no puedo utilizar una abreviatura y una declaración explicita de tipo de variable en la misma línea. Tengo que poner la abreviatura en todas las variables, o hacer la declaración explicita de todas las variables o (y aquí viene la mejora de esta versión) poner solo la declaración explicita de la última variable, y todas las variables que preceden a esta automáticamente quedan definidas con el tipo de la última. Un ejemplo:

   Dim i, j, k As Integer    (todas la variables serian de tipo entero)
   Dim longitud, canto, ancho As Single    (todas las variables serian de tipo real)


Por otro lado en este tema también indicais que se pueden declarar varias variables en una misma línea utilizando dos puntos en lugar de coma. En esta versión al menos, no te permite hacerlo de esa forma.

    Dim i! : j! : k!   (ya no se puede hacer así, te indica "Se esperaba una declaración")


He abierto este tema a modo informativo. No tengo ningún problema en no usar las abreviaturas, es más, hasta ahora siempre que he programado tenía la costumbre de declarar cada variable en una línea e indicar explicitamente el tipo. A mi personalmente me resulta más fácil leer todas las variables de esta forma.


Un saludo!

39
Muy buenas URK484.

No soy un experto en Flash, pero aunque se haya pasado el "hipe" de Flash, no creo que vaya a desaparecer a corto o medio plazo.

Dicho esto, si quieres desarrollar tus propios videojuegos yo te recomendaría buscar un motor gráfico que incluya su propio editor visual. Hay varios en el mercado tales como Unreal Engine, Cry Engine, etc etc. Personalmente yo te recomiendo Unity3D. Es un motor gráfico o motor de videojuegos (aunque puede usarse para más cosas, no solo videojuegos), orientado sobre todo al desarrollo de juegos indies. Eso si, se pueden hacer cosas de mucha calidad con este motor. Las grandes ventajas que te ofrece:
Por un lado tiene una versión completamente gratuita, que te permite compilar juegos para PC y para Web. Evidentemente tiene algunas cosas "capadas" y no incluye una serie de herramientas que si ofrece su versión de pago... pero si lo vas a utilizar como hobbie realmente no vas a notar estas cosas, creeme. Aparte una vez finalizada una aplicación o videojuego, cambiando el sistema de control y optimizando sobre todo el apartado visual, puedes compilar el mismo juego para Mac, Android, iOS, PSP, PS Vita, PS3, PS4, Xbox 360, Xbox One, Wii y Wii U... pero tendrás que pagar una licencia por cada plataforma a la que quieras exportar. Con algunas licencias además te enviarán un kit de desarrollo del propietario de la plataforma (por ejemplo con iOS), para poder adaptar sin problemas el juego a dicha plataforma.

Otra ventaja que tiene es que puedes crear juegos en 2D y en 3D. En su origen fue creado para 3D, pero la gente se las ideaba para crear juegos en 2D y finalmente han incluido una serie de herramientas para el desarrollo 2D muy potentes... trae algunas gratuitas y otras son de pago.

Otra ventaja es que ya tienes un motor gráfico del que partir, tienes un gran trabajo hecho, y con unos cuantos scripts puedes tener un juego funcionando. Otra cosa es que sea bueno o malo ;D y otra que sea bonito :D. Se puede programar en 3 lenguajes diferentes que yo recuerde: Boo (es un lenguaje nativo de su editor de código), JavaScript y C#Script. Trae su propio editor de código llamado MonoDevelop, aunque puedes asociar otro al programa como Visual Studio.

Por último tiene una tienda (el asset store) incluída dentro del propio programa en la que puedes comprar todo tipo de cosas para el motor. Desde personajes y escenarios, hasta herramientas y scripts para ayudarte hacer tus juegos. Algunas cosas de la tienda son gratuitas.

Me gustaría añadir que tiene una gran comunidad en la red con la que podrás aprender a utilizarlo, entre ellas varias en español.

Un saludo y espero haberte ayudado.

40
Hola Sixtoex.

Tal vez no sea el más indicado para resolver tu duda... todavía jejeje. Pero voy a intentar arrojar un poco de luz sobre el tema. De todos modos espera a la respuesta de un moderador.

De entrada te recomiendo que revises este tema https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=144:modulos-genericos-y-paso-de-parametros-por-valor-byval-o-por-referencia-byref-ejemplos-cu00207a&catid=36:curso-qbases-de-la-programacion-nivel-iiq&Itemid=60 del cursos Fundamentos de programación nivel II.

Lo has entendido bastante bien, aunque hay un pequeño pero que me gustaría aclararte. Cuando tu le pasas una variable a una función/método/módulo (o como lo quieras llamar) este método realiza sus operaciones y obtienes como resultado:
1.- Si es por valor: la variable original que le has pasado no se modificará.
2.- Si es por referencia: la variable original que le has pasado tomará el valor final de los cálculos que ha realizado dicho método. Modificando entonces el valor de dicha variable.

Te pongo un par de ejemplos utilizando tu código para que lo veas de otra forma.

Por valor:
Código: [Seleccionar]
static void Incrementar(int param)
{

   param++;
   return param;

}

static void Main()
{
   int arg = 42;
   int resultado = 0;

   resultado = Incrementar(arg);
   console.writeline(arg);
   console.writeline(resultado);
}

Por referencia:
Código: [Seleccionar]
static void Incrementar(ref int param)
{

   param++;
   return param;

}

static void Main()
{
   int arg = 42;
   int resultado = 0;

   resultado = Incrementar(ref arg);
   console.writeline(arg);
   console.writeline(resultado);
}

Pruebalos y verás los resultados. (Puede que haya algún error de sintaxis puesto que este no es precisamente el lenguaje del que más conocimientos tengo jejeje).

Un saludo!

Páginas: 1 [2] 3

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