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

Páginas: [1] 2 3 4 5 6 ... 100
1
Buenas Sixtoex, gracias por tus aportaciones, creo que pueden ser de utilidad para muchas personas que estén estudiando y buscando ejercicios de este tipo.

2
Buenas, no sé bien qué idea es la que tienes, si recuperar datos de la base de datos, o al revés, insertar datos en la base de datos. A lo mejor este código de ejemplo te orienta algo
 
Código: [Seleccionar]
import tkinter as tk
from tkinter import *
from tkinter import ttk
import mysql.connector
 
connection = mysql.connector.connect(host='localhost', user='root', port='3306', password='', database='test_py')
c = connection.cursor()
 
root = Tk()
frame = tk.Frame(root, padx=40,pady=40, bg='grey')
 
c.execute("SELECT nombre FROM `usuarios_2`")
opciones = c.fetchall()
seleccionado = StringVar(frame)
seleccionado.set(opciones[0])
 
combobox = ttk.Combobox(frame, textvariable=seleccionado, values=opciones, font=('verdana',14))
 
combobox.pack()
frame.pack()
 
root.mainloop()
 
El código ejecuta una consulta SQL para seleccionar la columna "nombre" de la tabla "usuarios_2" en la base de datos. Los resultados se almacenan en la variable "opciones".
 
Se crea un widget ttk.Combobox dentro del marco.
El parámetro textvariable se establece en una instancia de StringVar denominada "seleccionado", que contendrá la opción seleccionada del combobox.
El parámetro de valores se establece en las opciones recuperadas de la base de datos.
El parámetro de fuente especifica el estilo y tamaño de la fuente.
 
El widget del combobox está empaquetado dentro del marco, lo que hace que se muestre en la ventana de la aplicación.

3
Buenas, aparte de que el tipo de dibujo sea mejor o peor, este tipo de ejercicios resulta muy aconsejable para practicar lógica de la programación para todas aquellas personas que estén aprendiendo. Una cosa buena es que esto puede hacerse con prácticamente cualquier lenguaje, incluso pseudocódigo, así que animo a quienes estén aprendiendo a que intenten programarlo en cualquier lenguaje, solos, como forma de practicar.


4
Comunidad / Re: Feliz Navidad y Próspero Año Nuevo para todos
« en: 15 de Diciembre 2023, 12:04 »
Me uno a las felicitaciones, encantado de seguir por aquí un año más con todos vosotros. Felicidades y próspero año nuevo para todos. Salu2

5
Enhorabuena por el trabajo, a seguir adelante y a seguir cumpliendo años. ¡Ya son unos cuantos!

6
Buenas, para quien revise este ejercicio, está correctamente resuelto. Salu2.

7
Buenas, para quien revise este ejercicio comentar algunas cuestiones:

- Si introducimos como datos de entrada (2.55, 2) el resultado esperado sería 255 pero al menos yo he obtenido 254,9999999... Este problema de "precisión decimal" relacionado con la forma que tienen los computadores de representar valores numéricos se comenta en https://aprenderaprogramar.com/foros/index.php?topic=1972.0 (en este hilo se presenta una solución del ejercicio de forma clásica o iterativa).

- Una peculiaridad que tiene esta forma de resolver el ejercicio es que hace uso de la recursión (ésta no se trata en el curso, por tanto no es necesario resolver el ejercicio de esta manera). Recursión es la llamada a un método por parte de ese mismo método, generando una "cascada de llamadas" que no se resuelve hasta que se llega a un "caso base" que permite determinar una solución. En este caso si llamamos  multiplicarPorDieces (30, 2) tenemos

 -- Invocación 1: devuelve 30*10*multiplicarPorDieces(1, 1)
 -- Invocación 2: devuelve 10*multiplicarPorDieces(1, 0)
 -- Invocación 3: devuelve 1, esto permite resolver
 -- Resolución de invocación 2 a partir de la 3: 10*1
 -- Resolución de invocación 1 a partir de la 2: 30*10*10*1 = 3000

La recursividad resulta más compleja de manejar y de plantear que la solución clásica (iterativa), por ello muchos programadores prefieren no usarla, aunque es una técnica que puede ser interesante. En el hilo https://aprenderaprogramar.com/foros/index.php?topic=1536.0 puede verse otra solución recursiva, junto a otra solución iterativa clásica.

En este ejercicio posiblemente dejar la recursión con un único parámetro para obtener la potencia, en lugar de hacer recursiones con dos parámetros (si nos fijamos al usar multiplicarPorDieces44 (1, b-1) la recursión se hace siempre con el primer parámetro fijado como 1, lo cual no parece muy eficiente.

Quien lo desee, puede profundizar en determinar las diferencias entre las dos soluciones recursivas propuestas y las soluciones iterativas clásicas.

Salu2

8
Buenas, para quien revise este ejercicio comentar que puede dar algún problema. En concreto, en algunos entornos de ejecución (como BlueJ) el programa puede quedarse bloqueado debido a que no se abre de forma automática la consola y se produce el bloqueo esperando la entrada de la palabra con Scanner, pero no puede introducirse la palabra al no abrirse la consola. Para detener la ejecución en BlueJ se puede ir al menú View y elegir Show Debugger y pulsar en "Terminate".

Para evitar este problema debemos introducir una línea que fuerce que se abra la consola, por ejemplo System.out.print("Introduzca una palabra: "); como primera línea del programa. De esta manera se fuerza que se abra la consola y ya se puede introducir la palabra y no se produce el problema del bloqueo.

De resto el ejercicio está bien planteado y cumple con lo que se pedía.

Salu2

9
Buenas, algunos comentarios para quien revise este ejercicio:

1. Bien respondido. El resultado parece lógico y parece correcto a la vista de lo que se ha programado y conforme a lo que parece que se pretendía. Tener en cuenta que el que sea correcto o no depende de lo que se quiera conseguir: lo que se llaman "las especificaciones" para el desarrollo de código. Un código es correcto conforme a unas especificaciones (donde se determinan los resultados que debe devolver el código). Si en las especificaciones se indicara que en caso de pasarse dos cadenas vacías se debe devolver un mensaje de error, entonces el resultado no sería correcto.

2. Bien respondido. El hecho de que aparezcan esos atributos ahí podría indicarnos lo siguiente:

- Un error o descuido en la programación
- Que aunque en este fragmento de código no veamos la utilidad, quizás la tengan con vistas a una ampliación del código o con vistas al uso del código dentro de un programa más extenso.

Con este código no sabemos exactamente por qué están ahí, lo único que sabemos es que viendo este código esos dos atributos o campos no tienen utilidad conocida.

Salu2

10
Buenas, lee https://aprenderaprogramar.com/foros/index.php?topic=1460.0 es importante seguir lo que se indica ahí para poder obtener ayuda en los foros. Si no lo haces tus hilos pueden ser borrados. Por ejemplo el título que has puesto no es adecuado.

En este hilo tienes ejemplos de ejercicios resueltos usando archivos .h: Exámenes resueltos Fundamentos de programación UNED Ingeniería Informática 1ero: https://aprenderaprogramar.com/foros/index.php?topic=401.0

Es posible que algunos de los ejercicios cumplan con lo que te están pidiendo. En el hilo se habla de C/C++ que es código que vale tanto para C como para C++. El código de los archivos cpp lo puedes guardar como archivo c y en principio debe funcionarte.

También tienes ejemplos en el Curso básico de programación lenguaje C desde cero en https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=82&Itemid=210

Pega tu código como se explica en el hilo de normas y sugerencias (usando las etiquetas code).

Salu2

11
Buenas, para escribir en los foros mira el hilo https://aprenderaprogramar.com/foros/index.php?topic=1460.0 Es importante seguir las pautas que se indican ahí, por ejemplo poner la referencia del ejercicio en el título de la consulta. Es decir, el título del hilo debería ser algo así como <<Copiar tabla phpMyAdmin instrucciones DELETE y TRUNCATE Curso PHP CU00844B>>.

Si en phpMyAdmin seleccionas la base de datos, luego la tabla, luego vas a la pestaña "Más", opción "Operaciones", ¿no te aparece una opción Copiar tabla a (base de datos.tabla) donde te permite introducir los datos y opciones necesarios para copiar la tabla?

12
Buenas, como se ha comentado, garantía ninguna. En algunos casos ese software puede funcionar bien, en otros medio funcionar con más o menos problemas, en otros no funcionar en absoluto y en otros contener virus. En caso de comprar una licencia también hay que tener cuidado en desde dónde se hace, hay muchas webs que no son oficiales y terminan siendo estafas.

13
Buenas, para escribir en los foros recomendamos leer https://aprenderaprogramar.com/foros/index.php?topic=1460.0 Crea un nuevo hilo antes que contestar sobre hilos antiguos.

En este curso: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193 puedes encontrar algunos ejercicios resueltos y/o propuestos. Y en los foros, buscando con el código del ejercicio, quizás puedas encontrar algunas respuestas a los ejercicios propuestos. Salu2

14
Comunidad / Re: ayuda con deber
« en: 06 de Marzo 2023, 08:51 »
Buenas, en esta consulta faltan cosas básicas como el lenguaje de programación en que se trabaja, un título del tema adecuado, etc. Mira las indicaciones sobre cómo escribir en los foros en https://aprenderaprogramar.com/foros/index.php?topic=1460.0
Si lo deseas, crea un nuevo tema siguiendo las indicaciones. Salu2,

15
Buenas, no se entiende bien lo que hay que hacer, si lo explicas mejor a lo mejor alguien puede dar alguna idea. ¿Puedes explicarlo mejor, o poner un ejemplo de lo que se quiere? ¿Has visto ejemplos del curso Java desde cero: https://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188?


16
Comunidad / Re: Feliz Navidad y Próspero Año Nuevo para todos
« en: 20 de Diciembre 2022, 19:41 »
Feliz Navidad para todos. Cuantos más años pasan más grande percibo que es mi desconocimiento a pesar de saber siempre un poquito más. Gracias por seguir compartiendo ;)

17
Buenas, aquí creo que se entra en otros detalles.

En esta línea: array_walk($this->productos, $llamadaDeRetorno); lo que diría yo que se hace es que se llama a la función array_walk, y a esta se le pasan dos parámetros: un array ($this->productos) y una función ($llamadaDeRetorno).

La función array_walk lo que hace es ejecutar la función usando el índice y valor o key y value de cada elemento del array. Además podrían incluirse otros parámetros en la llamada de array_walk, pero en este caso no lo hace.

En este ejemplo:

Código: [Seleccionar]
<?php
function myfunction($value,$key)
{
echo 
"The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
?>

Lo que se obtiene es:

The key a has the value red
The key b has the value green
The key c has the value blue

¿Por qué? Porque al pasar un array, se está pasando indirectamente para cada elemento del array un índice o key y un value o valor.

Entonces cuando llamas esto: array_walk($this->productos, $llamadaDeRetorno);

Lo que estás diciendo es que se va a ejecutar la función llamadaDeRetorno para cada uno de los elementos del array, y en cada ejecución llamadaDeRetorno recibe dos parámetros, que son el key y el value de cada elemento del array. El key es el producto, y el value la cantidad. Por tanto la función recibe lo que necesita.

Yo por lo que veo al carro le va añadiendo productos donde el key es el nombre del producto, por ejemplo 'mantequilla' y el value es la cantidad de producto, por ejemplo 1. Así que llamadaDeRetorno está recibiendo el producto (key de cada elemento del array) y la cantidad (value de cada elemento del array).

Tener un array donde los índices son nombres es algo a lo que muchos no estamos acostumbrados, pero php lo permite.

$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43"); es un array asociativo (con índices nombres). También puede escribirse:

$age['Peter'] = "35";
$age['Ben'] = "37";
$age['Joe'] = "43";

Un ejemplo de uso sería:

 <?php
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>

Otros lenguajes no permiten esto, pero PHP sí lo permite.

En este caso

$productos['mantequilla'] = "1";
$productos['leche'] = "3";
$productos['huevos'] = "6";

Lo que indica es que en el array productos tienes tres elementos cuyas key son mantequilla, leche y huevos. Y estos elementos del array tienen como value 1, 3 y 6.

A mí particularmente no me gusta mucho este planteamiento, pero bueno, así es como parece que lo han hecho.


18
Buenas, tal y como lo veo yo se trataría de un caso de asignación de una función a una variable.

Un ejemplo de esto sería lo siguiente:

<?php
$f = 'strlen';
echo $f('Tarde');

Cuando ejecutamos esto la salida que devuelve es: 5

Esto ocurre porque php permite asignar funciones a nombres de variables y luego invocar la función añadiendo los parámetros necesarios entre paréntesis después del nombre de variable.

En el caso que comentas, la variable $llamadaDeRetorno está asignada a una función anónima que recibe como parámetros $cantidad y $producto, por tanto hace uso de estos porque los recibe (o los recibirá en su momento).

No sé si era esto lo que te generaba dudas o si era otra cosa. Salu2

19
Buenas, lo más normal es tratar de impedir el acceso de bots maliciosos y esto no es demasiado fácil de hacer. No obstante, si conoces la IP que quieres bloquear, lo puedes hacer desde el archivo .htaccess en aquellos sistemas que lo permiten, o bien introduciendo una orden deny en el cortafuegos, bien para una IP o bien para un rango de IPs. No sé si es esto lo que pretendes, no me queda muy claro qué es lo que quieres lograr. Salu2

20
Buenas, para escribir en los foros recomendamos leer https://aprenderaprogramar.com/foros/index.php?topic=1460.0 y pegar el código y poner título a los temas según se indica ahí.

No sé si entiendo lo que quieres plantear. Tal y como lo describes, entiendo que quieres que el valor del array pase a tener comillas cuando detectes que el tipo de dato es VARCHAR.

En este código (no demasiado elegante, pero creo que puede valer como ejemplo) planteo lo siguiente:

- Creo un array de cadenas que llamo tipoDato con contenido inicial {"LONG", "LONG", "VARCHAR", "SHORT", "VARCHAR", "DOUBLE", "DOUBLE"};

- Creo un array de supuestos valores con contenido inicial {"esto es long", "esto es long", "esto es otro varchar", "esto es short", "esto es varchar", "esto es double", "esto es double"};

- Recorro el array de tipoDato, y cuando detecto que es VARCHAR, le añado comillas al value.

Nota: no se recomienda la modificación de elementos de una colección al recorrerla sino usando un iterador (ver https://aprenderaprogramar.com/index.php?option=com_content&view=article&id=633:tipo-iterator-api-java-ejemplo-error-javautilconcurrent-modificationexception-resumen-bucles-cu00667b&catid=68&Itemid=188)

El código:

Código: [Seleccionar]
public class Test {

    public static void main (String[] Args) {

        String[] tipoDato = {"LONG", "LONG", "VARCHAR", "SHORT", "VARCHAR", "DOUBLE", "DOUBLE"};
        String[] valueEjemplo = {"esto es long", "esto es long", "esto es otro varchar", "esto es short", "esto es varchar", "esto es double", "esto es double"};

        for (int index = 0; index < tipoDato.length; index++) {
            System.out.println((index+1)+": "+tipoDato[index]+" "+ valueEjemplo[index]);
            if (tipoDato[index].equals("VARCHAR")){
                System.out.println("Detectado VARCHAR");
                valueEjemplo[index] = "\"" + valueEjemplo[index] + "\"";
                System.out.println("Modificado el value ahora vale "+valueEjemplo[index]);
            }
        }

        for (int index = 0; index < tipoDato.length; index++) {
            System.out.println((index+1)+": "+tipoDato[index]+" "+ valueEjemplo[index]);
        }
    }
}

Salu2

Páginas: [1] 2 3 4 5 6 ... 100

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