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 - Dimitar Stefanov

Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 ... 30
121
Buenas tardes. Propongo una posible solución del ejercicio CU00520F del curso de programación con lenguaje C desde cero.

Citar
EJERCICIO

Tomando como punto de partida el código que hemos visto de ejemplo de uso de funciones matemáticas, define un programa análogo que realice lo siguiente. En primer lugar define una variable de tipo double de nombre num1 y valor 15.75, una variable de tipo entero de nombre num2 y valor 45, y una variable de tipo double a la que denominaremos Pi, con el valor del número Pi expresado con cinco decimales. A continuación muestra el contenido de cada variable por pantalla. A continuación muestra por pantalla el resultado de multiplicar num1 por -1. A continuación muestra por pantalla el resultado de aplicarle la función valor absoluto a la multiplicación de num1 por -1. A continuación muestra el valor en radianes de la variable num2. Para ello debes realizar la operación matemática oportuna, si no recuerdas cómo hacerlo consulta en internet. A continuación muestra por pantalla el valor del seno del ángulo anterior, recuerda que debes expresarlo en radianes. A continuación muestra por pantalla el valor del coseno del ángulo anterior, recuerda que debes expresarlo en radianes. A continuación muestra por pantalla el redondeo al entero superior de num1. Finalmente muestra por pantalla el redondeo al entero inferior de num1.

 Responde a las siguientes cuestiones:

a) ¿Cuál es el código del programa que has definido?

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main() {

    double num1 = 15.75;
    int num2 = 45;
    const double Pi = 3.14159;

    printf("num1 vale %g, num2 vale %d, Pi vale %g\n", num1, num2, Pi);
    printf("num1 * -1 vale %g\n", num1*-1);
    printf("el resultado de aplicarle la función valor absoluto a la multiplicación de num1 por -1 vale %g\n", fabs(num1*-1));
    printf("el valor en radianes de la variable num2 vale %g\n", (num2*Pi)/180);
    double anguloEnRadianes = (num2*Pi)/180;
    printf("el valor del seno del ángulo vale %g\n", sin(anguloEnRadianes));
    printf("el valor del coseno del ángulo vale %g\n", cos(anguloEnRadianes));
    printf("el redondeo al entero superior de num1 vale %g\n", ceil(num1));
    printf("el redondeo al entero inferior de num1 vale %g\n", floor(num1));

    return 0;
}

Citar
b) ¿Cuáles son los resultados que obtienes por pantalla al ejecutar el programa?

num1 vale 15.75, num2 vale 45, Pi vale 3.14159
num1 * -1 vale -15.75
el resultado de aplicar la función valor absoluto a la multiplicación de num1 por -1 vale 15.75
el valor en radianes de la variable num2 vale 0.785397
el valor del seno del ángulo vale 0.707106
el valor del coseno del ángulo vale 0.707107
el redondeo al entero superior de num1 vale 16
el redondeo al entero inferior de num1 vale 15

Gracias.

122
Buenas.

Dejo una posible solución del ejercicio CU00519F del curso lenguajeC desde cero.

Citar
EJERCICIO

Dadas las variables de tipo entero con valores A = 5, B = 3, C = -12 indicar si la evaluación de estas expresiones daría como resultado verdadero o falso:

a) A > 3                                                            b) A > C                                               c) A < C

d) B < C                                                            e) B != C                                               f) A == 3

g) A * B == 15                                                   h) A * B == -30                                    i) C / B < A

j) C / B == -10                                                    k) C / B == -4                                       l) A + B + C == 5

m) (A+B == 8 ) && (A-B == 2)                       n) (A+B == 8 ) || (A-B == 6)

o) A > 3 && B > 3 && C < 3                           p) A > 3 && B >= 3 && C < -3

a) Verdadero
b) Verdadero
c) Falso
d) Falso
e) Verdadero
f) Falso
g) Verdadero
h) Falso
i) Verdadero
j) Falso
k) Verdadero
l) Falso
m) Verdadero
n) Verdadero
o) Falso
p) Verdadero


123
Buenas tardes. Dejo una posible solución del ejercicio CU00518F del curso lenguajeC desde cero.

Citar
EJERCICIO

Tomando como punto de partida el código que hemos visto de ejemplo de uso de operadores aritméticos, define un programa análogo que realice lo siguiente. En primer lugar define cuatro variables enteras a las que denominaremos num1, num2, num3 y num4 cuyos valores serán 28, 7, 15 y 3. A continuación muestra el contenido de cada variable por pantalla. A continuación muestra por pantalla el resultado de multiplicar num1 por 3. A continuación muestra por pantalla el resultado de sumar num1 y num2. A continuación muestra por pantalla el resultado de restarle num2 a num1. A continuación muestra por pantalla el resultado de dividir num1 entre num2. A continuación muestra el resto de la división entre num1 y num3. A continuación muestra por pantalla el resto de la división entre num1 y num2. Finalmente muestra por pantalla de nuevo el valor de cada una de las variables. El valor final debe ser igual al valor inicial puesto que no hemos indicado que deba modificarse ninguna variable.

 Responde a las siguientes cuestiones:

a) ¿Cuál es el código del programa que has definido?

El código:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num1 = 28;
    int num2 = 7;
    int num3 = 15;
    int num4 = 3;

    printf("num1 vale %d, num2 vale %d, num3 vale %d, num4 vale %d\n", num1, num2, num3, num4);
    printf("num1 por 3 vale %d\n", num1 * 3);
    printf("num1 más num2 vale %d\n", num1 + num2);
    printf("num2 menos num1 vale %d\n", num2 - num1);
    printf("num1 entre num2 vale %d\n", num1 / num2);
    printf("num1 entre num3 vale %d\n", num1 / num3);
    printf("el resto de la división entre num1 y num2 vale %d\n", num1 % num2);
    printf("num1 vale %d, num2 vale %d, num3 vale %d, num4 vale %d\n", num1, num2, num3, num4);

    return 0;
}

Citar
b) ¿Cuáles son los resultados que obtienes por pantalla al ejecutar el programa?

num1 vale 28, num2 vale 7, num3 vale 15, num4 vale 3
num1 por 3 vale 84
num1 más num2 vale 35
num2 menos num1 vale -21
num1 entre num2 vale 4
num1 entre num3 vale 1
el resto de la división entre num1 y num2 vale 0
num1 vale 28, num2 vale 7, num3 vale 15, num4 vale 3

Gracias.

124
Buenas. Os dejo una posible solución del ejercicio CU00517F del curso lenguajeC desde cero.

Citar
EJERCICIO

El siguiente código es un código en lenguaje C. No te preocupes por el código en sí, ya que hay aspectos que todavía no hemos explicado, fíjate únicamente en los comentarios. Responde a las siguientes preguntas:

a) ¿Cuántos comentarios en línea existen en el código?

5

Citar
b) ¿Cuántos comentarios en bloque existen en el código?

4

Gracias.

125
Buenas tardes. Presento una posible solución del ejercicio CU00516F del curso lenguajeC desde cero.

Citar
EJERCICIO

Responde razonadamente a estas preguntas:

a) ¿Crees que sería posible escribir código C utilizando un editor simple como el bloc de notas de Windows?

Sí se podría escribir.

Citar
b) Si no es posible, ¿por qué? Si es posible, ¿crees que podríamos compilar y ejecutar ese código sin usar Code::Blocks?

No se podría compilar, porque necesitaríamos un compilador y el block de notas no es un IDE y no tiene un compilador incorporado. Tampoco lo podríamos ejecutar si no lo compilamos previamente.

Citar
c) ¿En qué casos piensas que puede resultar útil tener el Spell Checker o corrector ortográfico de Code::Blocks activado?

Podría ser útil en la ortografía de las cadenas de texto tipo mensajes por pantalla (printf).

Citar
d) ¿Crees que si escribimos un código C en Code::Blocks bajo Windows, ese mismo código podría ser compilado y ejecutado en Linux ó en Macintosh?

Sí se podría compilar en Linux o Macintosh. El código es el mismo sea cual sea el sistema operativo. Lo que importa es de que forma lo compilamos (con que extensión).

Gracias.

126
Hola. Os dejo una posible solución del ejercicio CU00515F del curso lenguajeC desde cero.

Citar
EJERCICIO

Crea el código de un programa que cumpla las siguientes premisas. Declara un array de elementos enteros y tres dimensiones denominado ventasEmpleadoOficinaEdificio. La primera dimensión tendrá 6 elementos, la segunda 10 y la tercera 2. Establece para el elemento con índices 3, 7, 2 un valor igual a 4234. A continuación haz que se muestre por pantalla (ventana de consola) el texto: “El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido 4234 unidades”, donde 4234 estará definido referenciando al elemento del array creado previamente.

El código del programa:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ventasEmpleadoOficinaEdificio[6][10][2];

    ventasEmpleadoOficinaEdificio[3][7][2]=4234;

    printf("El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido: %d unidades\n", ventasEmpleadoOficinaEdificio[3][7][2]);

    return 0;
}

Código: [Seleccionar]
Responde a estas preguntas:

a) ¿Cuántos elementos componen el array multidimensional?

Un elemento con los índices 3,7,2.

Citar
b) ¿Qué ocurre si intentamos mostrar por pantalla un valor con un índice que no está definido para ese array multidimensional?

Depende del compilador con el que estamos trabajando. Puede producirse un error a la hora de intentar compilar el código, puede ejecutarse el programa pero no imprimir nada por pantalla en el lugar del array con localizador no inicializado o puede imprimirse un valor impredecible.

Citar
c) Modifica el valor de productos vendidos para que pase a ser el valor anterior más diez. A continuación muestra el mismo mensaje que anteriormente. En esta ocasión, dado que hemos modificado el contenido, deberá mostrarse por pantalla: “El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido 4244 unidades”.

El código del programa:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int ventasEmpleadoOficinaEdificio[6][10][2];

    ventasEmpleadoOficinaEdificio[3][7][2]=4234;

    printf("El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido: %d unidades\n", ventasEmpleadoOficinaEdificio[3][7][2]);

    ventasEmpleadoOficinaEdificio[3][7][2]=ventasEmpleadoOficinaEdificio[3][7][2]+10;

    printf("El empleado numero 3 de la oficina numero 7 del edificio numero 2 ha vendido: %d unidades\n", ventasEmpleadoOficinaEdificio[3][7][2]);

    return 0;
}

Gracias.

127
Buenas tardes. Expongo una posible solución del ejercicio CU00514F del tutorial de programación en lenguaje C desde cero.

Citar
EJERCICIO

Crea el código de un programa que cumpla las siguientes premisas. Declara un array de caracteres denominado arrayDeCincoChar. Establece para cada uno de los índices del array que el contenido sean los caracteres a, b, e, t, o. A continuación haz que se muestre por pantalla (ventana de consola) el texto: “La palabra en el array es abeto”, donde abeto estará definido letra a letra utilizando los elementos del array.

El código del programa:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char arrayDeCincoChar[5];
    arrayDeCincoChar[0]='a';
    arrayDeCincoChar[1]='b';
    arrayDeCincoChar[2]='e';
    arrayDeCincoChar[3]='t';
    arrayDeCincoChar[4]='o';

    printf("La palabra en el array es: %c%c%c%c%c\n", arrayDeCincoChar[0], arrayDeCincoChar[1], arrayDeCincoChar[2], arrayDeCincoChar[3], arrayDeCincoChar[4]);

    return 0;
}

Citar
Responde a estas preguntas:

a) ¿Qué índice o localizador tiene el primer elemento del array? ¿Y el último?

El primer localizador es 0, y el último es 4.

Citar
b) ¿Qué ocurre si intentamos mostrar por pantalla una letra con un índice que no está definido para ese array de caracteres?

Depende del compilador con el que estamos trabajando. Puede producirse un error a la hora de intentar compilar el código, puede ejecutarse el programa pero no imprimir nada por pantalla en el lugar del array con localizador no inicializado o puede imprimirse un valor impredecible.

Citar
c) Modifica la tercera letra de la cadena para que pase a ser la letra a. A continuación muestra el mismo contenido que anteriormente. En esta ocasión, dado que hemos modificado la tercera letra, deberá mostrarse por pantalla: “La palabra en el array es abata”.

El código del programa:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char arrayDeCincoChar[5];
    arrayDeCincoChar[0]='a';
    arrayDeCincoChar[1]='b';
    arrayDeCincoChar[2]='e';
    arrayDeCincoChar[3]='t';
    arrayDeCincoChar[4]='o';

    printf("La palabra en el array es: %c%c%c%c%c\n", arrayDeCincoChar[0], arrayDeCincoChar[1], arrayDeCincoChar[2], arrayDeCincoChar[3], arrayDeCincoChar[4]);

    arrayDeCincoChar[2]='a';
    printf("La palabra en el array es: %c%c%c%c%c\n", arrayDeCincoChar[0], arrayDeCincoChar[1], arrayDeCincoChar[2], arrayDeCincoChar[3], arrayDeCincoChar[4]);


    return 0;
}

Gracias.

128
Hola a todos los campañeros y equipo de aprenderaprogramar.com. Les dejo una posible solución del ejercicio CU00513F del curso lenguajeC desde cero.

Citar
EJERCICIO

Crea el código de un programa que cumpla las siguientes premisas. Declara un tipo definido por el usuario que se llame TipoVectorDe10 y que contenga 10 elementos de tipo entero. Declara una variable de nombre edadesConcursantes que sea de tipo TipoVectorDe10. Establece las siguientes edades para cada uno de los elementos del array (arreglo): 55, 24, 34, 26, 46, 62, 45, 24, 31, 61. Muestra por pantalla, haciendo uso de los elementos del array, mensajes informando de la edad de las personas. Por ejemplo: La edad de la primera persona es 55 annos. La edad de la segunda persona es 24 annos. La edad de la tercera persona es… etc. (No usamos la eñe).

El código:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    typedef int TipoVectorDe10[10];
    TipoVectorDe10 edadesConcursantes;
    edadesConcursantes[0]=55;
    edadesConcursantes[1]=24;
    edadesConcursantes[2]=34;
    edadesConcursantes[3]=26;
    edadesConcursantes[4]=46;
    edadesConcursantes[5]=62;
    edadesConcursantes[6]=45;
    edadesConcursantes[7]=24;
    edadesConcursantes[8]=31;
    edadesConcursantes[9]=61;

    printf("La edad de la primera persona es: %d\n", edadesConcursantes[0]);
    printf("La edad de la segunda persona es: %d\n", edadesConcursantes[1]);
    printf("La edad de la tercera persona es: %d\n", edadesConcursantes[2]);
    printf("La edad de la cuarta persona es: %d\n", edadesConcursantes[3]);
    printf("La edad de la quinta persona es: %d\n", edadesConcursantes[4]);
    printf("La edad de la sexta persona es: %d\n", edadesConcursantes[5]);
    printf("La edad de la séptima persona es: %d\n", edadesConcursantes[6]);
    printf("La edad de la octava persona es: %d\n", edadesConcursantes[7]);
    printf("La edad de la novena persona es: %d\n", edadesConcursantes[8]);
    printf("La edad de la décima persona es: %d\n", edadesConcursantes[9]);
}

129
Buenos días. Hago entrega del ejercicios CU00512F del curso lenguajeC desde cero.

Citar
EJERCICIO

Crea el código de un programa que cumpla las siguientes premisas. Declara un array de enteros denominado numeroDeHijos que contenga 10 elementos. Declara una variable tipo int que se llame T. Establece el valor de T en 8 y el valor de numeroDeHijos para un localizador de valor T en 3. Procede a mostrar en pantalla un mensaje que indique cuál es el valor T y el número de hijos para el valor T. Finalmente, modifica únicamente la asignación de valor a T de modo que en vez de 3 sea 5 y ejecuta de nuevo el programa. Responde a estas preguntas:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int numeroDeHijos[10];
    int T = 8;
    numeroDeHijos[T] = 3;
    printf("La variable T tiene un valor: %d y el numero de hijos para el valor T: %d\n",T ,numeroDeHijos[T]);
    numeroDeHijos[T] = 5;
    printf("Ahora el valor del numero de hijos para el valor T es: %d", numeroDeHijos[T]);
    return 0;
}

Citar
a) ¿Qué significado podríamos atribuir a los índices del array? (Supón que se trata de un programa donde debes atribuirle un significado, si no tuvieran un significado en un programa, ¿para qué nos servirían?).

Podrían ser diferentes personas y el número de hijos que tiene dicha persona.

Citar
b) ¿Cuál será el primer índice del array?

0

Citar
c) ¿Cuál será el último índice del array?

9

Gracias.

130
Buenas, eduardoc.

Muy bien resuelto el ejercicio. Sigue así :)

Saludos.

131
Hola, eduardoc.

Otro ejercicio correcto. Sólo comentarme que la declaración de la variable de tipo primitivo "boolean" creo que se declara con minúscula "boolean" y no "Boolean" (si es con minúsculas es tipo primitivo. Si es con mayúsculas es tipo objeto). Has hecho un método de más que no requería el ejercicio "DimeTipoMotor", pero también es correcto.

Saludos.

132
Buenos días, eduardoc.

Muy bien resuelto el ejercicio. Sólo una objeción, en apartado o) da falso no verdadero, porque B > 3 da falso. El valor de "B" es 3, no mayor que 3.

Saludos. 

133
Buenas noches. Expongo una posible solución el ejercicio CU00511F del curso lenguajeC desde cero.

Citar
EJERCICIO

Crea un programa en C que paso a paso contenga lo siguiente:

a) Los include que ya conocemos.

b) El int main de la misma forma que hemos visto.

c) Declarar una variable de tipo decimal doble denominada precio e inicializarla con un valor de 100.

d) Declarar una variable de tipo decimal doble e inicializarla con un valor del 4 por ciento (0.04).

e) Declarar una variable de nombre precioConImpuestos y asignarle como valor el resultado de multiplicar el contenido de la variable precio por la variable impuesto.

f) Mostrar un mensaje por pantalla que diga cuál es el precio con impuestos, utilizando la sintaxis que hemos visto.

¿Cuál es el resultado que se obtiene si en lugar de precio 100 usamos un valor de precio igual a 58.34?

La solución:

Código: [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main()
{
    double precio = 100;
    double impuesto = 0.04;
    double precioConImpuestos = (precio * impuesto) + precio;
    printf("El precio con impuesto de un producto que vale 100 es: %lf\n", precioConImpuestos);
    precio = 58.34;
    precioConImpuestos = (precio * impuesto)+precio;
    printf("El precio de un producto que vale 58.34 con el impuesto es: %lf", precioConImpuestos);
    return 0;
}

Lo que no entendí como se imprimer los variables. En el ejemplo de la entrega lo hicimos con "%d", pero veo que ahora tuve que utilizar "%lf". Supongo que se explicará más adelante en el curso.

Gracias.

134
Buenas tardes a todo el equipo de aprenderaprogramar.com

Mediante la presente hago entrega de la última entrega CU01216F del curso de programación web con Ajax desde cero.

Quería agradecer, una vez más, el gran esfuerzo que hace todo el equipo de aprenderaprogramar.com y decir que me ha gustado mucho este curso también. Se me ha brindado la oportunidad de aprender aún más. Gracias.

El ejercicio:

Citar
EJERCICIO

Modifica el código que hemos usado como ejemplo para cumplir con el siguiente propósito:

a) Devolver como respuesta una cadena en formato JSON generada del lado del servidor.

b) Parsear la respuesta recibida del servidor para, ahora del lado del cliente, crear un objeto JavaScript usando JSON.parse.

c) Obtener resultados análogos a los que hemos obtenido, es decir, cuando se seleccione un país deberán mostrarse las ciudades importantes de ese país.

La diferencia entre el ejemplo que hemos visto y el de este ejercicio estará en qué se devuelve del lado del servidor y cómo se trata. En el ejemplo que hemos visto se devuelve una cadena de elementos separados por comas y se trata separándola, mientras que en este ejercicio debes devolver una cadena de texto con formato JSON y tratarla con notación de objetos.

Código utilizado en la entrega como ejemplo:

Código: [Seleccionar]
<!DOCTYPE html><html><head><title>Cursos aprende a programar</title><meta charset="utf-8"/>

 <style type="text/css">
 *{font-family:sans-serif;} a:link {text-decoration:none;} select{font-size:18px;}
 div div {color: blue; background-color:#F1FEC6; font-size: 20px; float:left; border: solid; margin: 20px; padding:15px;}
 </style>
 
<script>
function mostrarSugerencia(str) {
var paisElegido='';
if (str=='spain') {paisElegido='España';}
else if (str=='mexico') {paisElegido='México';}
else if (str=='argentina') {paisElegido='Argentina';}
else if (str=='colombia') {paisElegido='Colombia';}
else {paisElegido='none';}

var xmlhttp;
var contenidosRecibidos = new Array();
var nodoMostrarResultados = document.getElementById('listaCiudades');
var contenidosAMostrar = '';

if (str.length==0) { document.getElementById("txtInformacion").innerHTML=""; nodoMostrarResultados.innerHTML = ''; return; }

xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    contenidosRecibidos = xmlhttp.responseText.split(",");
    document.getElementById("txtInformacion").innerHTML=contenidosRecibidos[0];
    for (var i=1; i<contenidosRecibidos.length;i++) {
    contenidosAMostrar = contenidosAMostrar+'<div id="ciudades'+i+'"> <a href="http://aprenderaprogramar.com">' + contenidosRecibidos[i]+ '</a></div>';
    }
    nodoMostrarResultados.innerHTML = contenidosAMostrar;
    }
}
var cadenaParametros = 'pais='+encodeURIComponent(paisElegido);
xmlhttp.open('POST', 'ajaxCU01216F.php'); // Método post y url invocada
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); // Establecer cabeceras de petición
xmlhttp.send(cadenaParametros); // Envio de parámetros usando POST
}
</script>
</head>

<body style="margin:20px;">
<h2>Elige un país:</h2>
<form action="">
 <select onchange="mostrarSugerencia(this.value)">
  <option value="none">Elige</option>
  <option value="spain">España</option>
  <option value="mexico">México</option>
  <option value="argentina">Argentina</option>
  <option value="colombia">Colombia</option>
</select>
</form>
<br/>
<p>Informacion sobre operacion en segundo plano con POST y Ajax: <span style="color:brown;" id="txtInformacion"></span></p>
<div id="listaCiudades"> </div>
</body>
</html>

Solución del ejercicio:

Código HTML:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
  <title>Cursos aprende a programar</title>
  <meta charset="utf-8">
  <style type="text/css">
    *{
      font-family:sans-serif;
    }
    a:link{
      text-decoration:none;
    }
    select{
      font-size:18px;
    }
    div div{
      color: blue;
      background-color: #F1FEC6;
      font-size: 20px;
      float: left;
      border: solid;
      margin: 20px;
      padding:15px;
    }
  </style>
 
  <script>

    function mostrarSugerencia(str){
      var paisElegido='';
      if(str=='spain'){
        paisElegido='España';
      }else if(str=='mexico'){
        paisElegido='México';
      }else if(str=='argentina'){
        paisElegido='Argentina';
      }else if(str=='colombia'){
        paisElegido='Colombia';
      }else{
        paisElegido='none';
      }
     
      var xmlhttp;
      if(str.length==0 ||paisElegido=='none'){
        document.getElementById("txtInformacion").innerHTML="no hay datos";
        mostrarCiudades();
        return;
      }

      xmlhttp=new XMLHttpRequest();
      xmlhttp.onreadystatechange = function(){
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
          var jsonResponse = xmlhttp.responseText;
          var objeto_json = JSON.parse(jsonResponse);
          ciudadesRecibidas = objeto_json.ciudadImportante;
          document.getElementById("txtInformacion").innerHTML = 'El país recibido por post en segundo plano son:  ' + objeto_json.ciudadImportante[0];
          mostrarCiudades(ciudadesRecibidas);
        }
      }
      var cadenaParametros = 'pais='+encodeURIComponent(paisElegido);
      xmlhttp.open('POST', 'CU01216F(01).php');
      xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
      xmlhttp.send(cadenaParametros);

    }
   
    function mostrarCiudades(arrayCiudades){
      var nodoMostrarResultados = document.getElementById('listaCiudades');
      if(!arrayCiudades){
        nodoMostrarResultados.innerHTML = '';
        return
      }

      var contenidosAMostrar = '';
      for(var i=1; i<arrayCiudades.length;i++){
        contenidosAMostrar = contenidosAMostrar+'<div id="ciudades'+i+'">';
        contenidosAMostrar += '<a href="http://aprenderaprogramar.com">' + arrayCiudades[i]+ '</a></div>';
      }

      if(contenidosAMostrar){
        nodoMostrarResultados.innerHTML = contenidosAMostrar;
      }
    }

  </script></head>
 
<body style="margin:20px;"><h2>Elige un país:</h2>
  <form action="">
    <select onchange="mostrarSugerencia(this.value)">
      <option value="none">Elige</option>
      <option value="spain">España</option>
      <option value="mexico">México</option>
      <option value="argentina">Argentina</option>
      <option value="colombia">Colombia</option>
    </select>
  </form>
  <br/>
  <p>Informacion sobre operacion en segundo plano con Ajax: <span style="color:brown;" id="txtInformacion"></span></p>
  <div id="listaCiudades"> </div>
</body>
</html> 

Código PHP:

Código: [Seleccionar]
<?php
// Rescatamos el parámetro que nos llega mediante la url que invoca xmlhttp
$pais=$_POST["pais"];
$msg 'El pais recibido en segundo plano ahora es '.$pais;
if ($pais){
$link mysqli_connect($servidor,$usuario,$contrasena);
mysqli_select_db($link$baseDeDatos);
$tildes $link->query("SET NAMES 'utf8'"); //Para que se muestren las tildes correctamente
$result mysqli_query($link"SELECT a.ciudadImportante FROM ciudades_importantes AS a, paises AS b WHERE a.idPais = b.id AND nombrePais = '".$pais."'");

$paisYCiudades[0] = $pais;
$i=1;
while ($fila mysqli_fetch_array($result)){
$paisYCiudades[$i++] = $fila['ciudadImportante'];
}

$consulta['ciudadImportante'] = $paisYCiudades;

//Devolvemmos la cadena de respuesta
echo json_encode($consulta);
mysqli_free_result($result);
mysqli_close($link);
} else {
echo 'No se han recibido datos';
}
?>

Debo reconocer que para la solución del presente ejercicio he tenido que consultar la solución del compañero Pedro desde el hilo:
https://www.aprenderaprogramar.com/foros/index.php?topic=4287.msg17916#msg17916

Gracias.

135
Buenas tardes. Os dejo una posible solución del ejercicio de la entrega CU01215F del curso Ajax desde cero.

Citar
EJERCICIO

Modifica el código que hemos usado como ejemplo para realizar la petición de datos con ajax mediante POST en lugar de mediante GET.

Código de ejemplo que se ha usado en la entrega:

Código: [Seleccionar]
<!DOCTYPE html><html><head><title>Cursos aprende a programar</title><meta charset="utf-8">
 <style type="text/css">
 *{font-family:sans-serif;} a:link {text-decoration:none;} select{font-size:18px;}
 div div {color: blue; background-color:#F1FEC6; font-size: 20px; float:left; border: solid; margin: 20px; padding:15px;}
 </style>
 
<script>
function mostrarSugerencia(str) {
var paisElegido='';
if (str=='spain') {paisElegido='España';}
else if (str=='mexico') {paisElegido='México';}
else if (str=='argentina') {paisElegido='Argentina';}
else if (str=='colombia') {paisElegido='Colombia';}
else {paisElegido='none';}

var xmlhttp;
if (str.length==0 ||paisElegido=='none') { document.getElementById("txtInformacion").innerHTML="no hay datos";
mostrarCiudades(); return; }
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    var jsonResponse = xmlhttp.responseText;
    var objeto_json = JSON.parse(jsonResponse);
    paisesRecibidos = objeto_json.listadoPaises.pais;
 
    for (var i=0; i<paisesRecibidos.length;i++) {
    var nombrePais = objeto_json.listadoPaises.pais[i].nombre;
        if (nombrePais==paisElegido) {
        document.getElementById("txtInformacion").innerHTML = 'El pais recibido por get en segundo plano es '+nombrePais+ ' y tiene indice '+i;
        var ciudadesPais = objeto_json.listadoPaises.pais[i].ciudadImportante;
        mostrarCiudades(ciudadesPais);
        }
    }
   
}
}

xmlhttp.open("GET","listadoPaises.json?nocache=' + (new Date()).getTime()");
xmlhttp.send();
}

function mostrarCiudades (arrayCiudades) {
var nodoMostrarResultados = document.getElementById('listaCiudades');
if (!arrayCiudades) {nodoMostrarResultados.innerHTML = ''; return}
var contenidosAMostrar = '';
for (var i=0; i<arrayCiudades.length;i++) {
    contenidosAMostrar = contenidosAMostrar+'<div id="ciudades'+i+'">';
    contenidosAMostrar += '<a href="http://aprenderaprogramar.com">' + arrayCiudades[i]+ '</a></div>';
}
if (contenidosAMostrar) {nodoMostrarResultados.innerHTML = contenidosAMostrar;}
}
</script></head>

<body style="margin:20px;"><h2>Elige un país:</h2>
<form action="">
 <select onchange="mostrarSugerencia(this.value)">
 <option value="none">Elige</option>
  <option value="spain">España</option>
  <option value="mexico">México</option>
  <option value="argentina">Argentina</option>
  <option value="colombia">Colombia</option>
</select>
</form>
<br/>
<p>Informacion sobre operacion en segundo plano con Ajax: <span style="color:brown;" id="txtInformacion"></span></p>
<div id="listaCiudades"> </div>
</body></html>

Solución del ejercicio:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
  <title>Cursos aprende a programar</title>
  <meta charset="utf-8">
  <style type="text/css">
    *{
      font-family:sans-serif;
    }
    a:link{
      text-decoration:none;
    }
    select{
      font-size:18px;
    }
    div div{
      color: blue;
      background-color: #F1FEC6;
      font-size: 20px;
      float: left;
      border: solid;
      margin: 20px;
      padding:15px;
    }
  </style>
 
  <script>

    function mostrarSugerencia(str){
      var paisElegido='';
      if(str=='spain'){
        paisElegido='España';
      }else if(str=='mexico'){
        paisElegido='México';
      }else if(str=='argentina'){
        paisElegido='Argentina';
      }else if(str=='colombia'){
        paisElegido='Colombia';
      }else{
        paisElegido='none';
      }

      var xmlhttp;
      if(str.length==0 ||paisElegido=='none'){
        document.getElementById("txtInformacion").innerHTML="no hay datos";
        mostrarCiudades();
        return;
      }

      xmlhttp=new XMLHttpRequest();
      xmlhttp.onreadystatechange = function(){
        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            var jsonResponse = xmlhttp.responseText;
            var objeto_json = JSON.parse(jsonResponse);
            paisesRecibidos = objeto_json.listadoPaises.pais;
         
          for(var i=0; i<paisesRecibidos.length;i++){
            var nombrePais = objeto_json.listadoPaises.pais[i].nombre;
            if(nombrePais==paisElegido){
              document.getElementById("txtInformacion").innerHTML = 'El pais recibido por get en segundo plano es '+nombrePais+ ' y tiene indice '+i;
              var ciudadesPais = objeto_json.listadoPaises.pais[i].ciudadImportante;
              mostrarCiudades(ciudadesPais);
            }
          }
        }
      }

      var cadenaParametros = 'pais='+encodeURIComponent(str);
      xmlhttp.open("POST","listadoPaises.json");
      xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
      xmlhttp.send(cadenaParametros);
    }

    function mostrarCiudades (arrayCiudades) {
      var nodoMostrarResultados = document.getElementById('listaCiudades');
      if(!arrayCiudades){
        nodoMostrarResultados.innerHTML = '';
        return
      }
      var contenidosAMostrar = '';
      for(var i=0; i<arrayCiudades.length;i++){
        contenidosAMostrar = contenidosAMostrar+'<div id="ciudades'+i+'">';
        contenidosAMostrar += '<a href="http://aprenderaprogramar.com">' + arrayCiudades[i]+ '</a></div>';
      }
      if(contenidosAMostrar){
        nodoMostrarResultados.innerHTML = contenidosAMostrar;
      }
    }

  </script>
</head>

<body style="margin:20px;"><h2>Elige un país:</h2>
<form action="">
 <select onchange="mostrarSugerencia(this.value)">
 <option value="none">Elige</option>
  <option value="spain">España</option>
  <option value="mexico">México</option>
  <option value="argentina">Argentina</option>
  <option value="colombia">Colombia</option>
</select>
</form>
<br/>
<p>Informacion sobre operacion en segundo plano con Ajax: <span style="color:brown;" id="txtInformacion"></span></p>
<div id="listaCiudades"> </div>
</body></html>

Gracias.

136
Buenos días, eduardoc.

A tu consulta si tienes que subir todos los ejercicios, esta cuestión queda a la elección personal de cada uno. Yo creo que es aconsejable que lo hagas, porque puedes pensar que has entendido bien la entrega y que tengas bien el ejercicio, pero que se te haya escapado algún detalle sin darte cuenta.

Además, subiendo el ejercicio darás la oportunidad de más gente que mire tu solución y así ayudarle que avance.

Sobre el ejericicio actual:

Es muy recomendable que subas todo el ejericicio completo. Aunque tengas el código en otro ejercicio imagínate que este ejercicio te lo esté corregiendo otra persona que no haya visto el ejercicio anterior. Así no sabrá que código tenías en el otro ejercicio. Subiendo todo el código sí que ahorras tiempo a los que te corrigen.

Este ejercicio lo tienes bien.

Saludos. 

137
Buenos días, eduarcod.

Este ejercicio lo veo correcto. Has comprendido muy bien el concepto de procedimiento y función. Tienes bien definidas las signaturas para los métodos. Es muy importante que la definición de un método describa lo que hará el mismo.

Saludos.

138
Buenos días, eduardoc.

Veo el ejercicio correcto.

Saludos.

139
Buenas. Les dejo una posible solución del ejercicio CU01214F del tutorial programación web con Ajax desde cero.

Citar
EJERCICIO

Analiza el siguiente código y responde a las preguntas indicadas más abajo:

Código JSON:

Código: [Seleccionar]
{
    "ResultSet": {
        "totalResultsAvailable": "1827221",
        "totalResultsReturned": 2,
        "firstResultPosition": 1,
        "Result": [
            {
                "Title": "potato jpg",
                "Summary": "Kentang Si bungsu dari keluarga Solanum tuberosum L ini ternyata memiliki khasiat untuk mengurangi kerutan  jerawat  bintik hitam dan kemerahan pada kulit  Gunakan seminggu sekali sebagai",
                "Url": "https://www.aprenderaprogramar.com/spaw/uploads /images/potato.jpg",
                "ClickUrl": "http://www. aprenderaprogramar.com/spaw/uploads/images/potato.jpg",
                "RefererUrl": "http://www.mediaindonesia.com/mediaperempuan/index.php?ar_id=Nzkw",
                "FileSize": 22630,
                "FileFormat": "jpeg",
                "Height": "362",
                "Width": "532",
                "Thumbnail": {
                    "Url": "http://thm-a01.yimg.com/nimage/557094559c18f16a",
                    "Height": "98",
                    "Width": "145"
                }
            },
            {
                "Title": "potato jpg",
                "Summary": "Introduction of puneri aloo This is a traditional potato preparation flavoured with curry leaves and peanuts and can be eaten on fasting day  Preparation time   10 min",
                "Url": "http://www.infovisual.info/01/photo/potato.jpg",
                "ClickUrl": "http://www.infovisual.info/01/photo/potato.jpg",
                "RefererUrl": "http://aprenderaprogramar.com.com/puneri-aloo-indian-%20recipe",
                "FileSize": 119398,
                "FileFormat": "jpeg",
                "Height": "685",
                "Width": "1024",
                "Thumbnail": {
                    "Url": "http://thm-a01.yimg.com/nimage/7fa23212efe84b64",
                    "Height": "107",
                    "Width": "160"
                }
            }
        ]
    }
}

Citar
a) Obtén el código XML equivalente usando 2 webs de conversión on-line. Indica qué webs has utilizado, el resultado obtenido y si el resultado es el mismo con ambas herramientas. Si no es el mismo indica por qué crees que no es el mismo.

1. http://www.freeformatter.com/json-to-xml-converter.html#ad-output

2. http://codebeautify.org/jsontoxml

Código XML con la primera página:

Código: [Seleccionar]
<?xml version="1.0" encoding="UTF-8"?>
<root>
   <ResultSet>
      <Result>
         <element>
            <ClickUrl>http://www. aprenderaprogramar.com/spaw/uploads/images/potato.jpg</ClickUrl>
            <FileFormat>jpeg</FileFormat>
            <FileSize>22630</FileSize>
            <Height>362</Height>
            <RefererUrl>http://www.mediaindonesia.com/mediaperempuan/index.php?ar_id=Nzkw</RefererUrl>
            <Summary>Kentang Si bungsu dari keluarga Solanum tuberosum L ini ternyata memiliki khasiat untuk mengurangi kerutan  jerawat  bintik hitam dan kemerahan pada kulit  Gunakan seminggu sekali sebagai</Summary>
            <Thumbnail>
               <Height>98</Height>
               <Url>http://thm-a01.yimg.com/nimage/557094559c18f16a</Url>
               <Width>145</Width>
            </Thumbnail>
            <Title>potato jpg</Title>
            <Url>https://www.aprenderaprogramar.com/spaw/uploads /images/potato.jpg</Url>
            <Width>532</Width>
         </element>
         <element>
            <ClickUrl>http://www.infovisual.info/01/photo/potato.jpg</ClickUrl>
            <FileFormat>jpeg</FileFormat>
            <FileSize>119398</FileSize>
            <Height>685</Height>
            <RefererUrl>http://aprenderaprogramar.com.com/puneri-aloo-indian-%20recipe</RefererUrl>
            <Summary>Introduction of puneri aloo This is a traditional potato preparation flavoured with curry leaves and peanuts and can be eaten on fasting day  Preparation time   10 min</Summary>
            <Thumbnail>
               <Height>107</Height>
               <Url>http://thm-a01.yimg.com/nimage/7fa23212efe84b64</Url>
               <Width>160</Width>
            </Thumbnail>
            <Title>potato jpg</Title>
            <Url>http://www.infovisual.info/01/photo/potato.jpg</Url>
            <Width>1024</Width>
         </element>
      </Result>
      <firstResultPosition>1</firstResultPosition>
      <totalResultsAvailable>1827221</totalResultsAvailable>
      <totalResultsReturned>2</totalResultsReturned>
   </ResultSet>
</root>

Código XML con la segunda página:

Código: [Seleccionar]
<?xml version="1.0" encoding="UTF-8" ?>
<ResultSet>
    <totalResultsAvailable>1827221</totalResultsAvailable>
    <totalResultsReturned>2</totalResultsReturned>
    <firstResultPosition>1</firstResultPosition>
    <Result>
        <Title>potato jpg</Title>
        <Summary>Kentang Si bungsu dari keluarga Solanum tuberosum L ini ternyata memiliki khasiat untuk mengurangi kerutan  jerawat  bintik hitam dan kemerahan pada kulit  Gunakan seminggu sekali sebagai</Summary>
        <Url>https://www.aprenderaprogramar.com/spaw/uploads /images/potato.jpg</Url>
        <ClickUrl>http://www. aprenderaprogramar.com/spaw/uploads/images/potato.jpg</ClickUrl>
        <RefererUrl>http://www.mediaindonesia.com/mediaperempuan/index.php?ar_id=Nzkw</RefererUrl>
        <FileSize>22630</FileSize>
        <FileFormat>jpeg</FileFormat>
        <Height>362</Height>
        <Width>532</Width>
        <Thumbnail>
            <Url>http://thm-a01.yimg.com/nimage/557094559c18f16a</Url>
            <Height>98</Height>
            <Width>145</Width>
        </Thumbnail>
    </Result>
    <Result>
        <Title>potato jpg</Title>
        <Summary>Introduction of puneri aloo This is a traditional potato preparation flavoured with curry leaves and peanuts and can be eaten on fasting day  Preparation time   10 min</Summary>
        <Url>http://www.infovisual.info/01/photo/potato.jpg</Url>
        <ClickUrl>http://www.infovisual.info/01/photo/potato.jpg</ClickUrl>
        <RefererUrl>http://aprenderaprogramar.com.com/puneri-aloo-indian-%20recipe</RefererUrl>
        <FileSize>119398</FileSize>
        <FileFormat>jpeg</FileFormat>
        <Height>685</Height>
        <Width>1024</Width>
        <Thumbnail>
            <Url>http://thm-a01.yimg.com/nimage/7fa23212efe84b64</Url>
            <Height>107</Height>
            <Width>160</Width>
        </Thumbnail>
    </Result>
</ResultSet>

Los resultados de conversión no son idénticas porque en la primera página nos pide "Nombre del elemento raíz" y "Nombre del elemento de entradas de matriz JSON" y posteriormente los incorpora en el archivo XML convertido.

También, tendremos que tener en cuenta que, en el archivo JSON, a veces entre "nombre" y "valor" hay un espacio que prodría afectar en la conversión.

Citar
b) Minifica los datos JSON. ¿Cuántos caracteres ocupan los datos minificados JSON? Minifica los datos XML. ¿Cuántos caracteres ocupan los datos minificados XML?

Los datos minificados JSON ocupan 1294 caracteres y los datos minificados XML ocupan 1571 caracteres.

Citar
c) Explica qué crees que representan los datos y da una breve explicación de cómo se organizan.

Los datos representar una búsqueda de archivos en la cual se han obtenido 2 resultados de 1827221 disponibles.

En el archivo existe un único objeto de datos compuesto por 4 pares nombre - valor. El cuarto par tiene como valor un array de dos objetos JSON. Cada objeto JSON del array está compuesto de 10 pares nombre - valor.  El décimo par nombre - valor de cada objeto JSON del array  tiene como valor un objeto de tres pares nombre - valor.

Citar
d) Indica cuántos datos numéricos (number según la especificación oficial JSON) se pueden encontrar, en total, en el archivo.


Se pueden encontrar 4 datos numéricos. Los números puestos entre comillas se consideran una cadena de texto.

140
Hola a todos los compañeros. Aquí os dejo una posible solución del ejercicio CU01213F del curso Ajax desde cero.

Citar
EJERCICIO

Transforma los datos en formato JSON mostrados a continuación en datos en formato XML y responde:

Código JSON:

Código: [Seleccionar]
{
    "personas": [
        {
            "nombre": "Juan Pérez Galones",
            "altura": 1.72,
            "peso": 75,
            "pasatiempos": [
                "Comics",
                "Baloncesto",
                "Gaming"
            ],
            "soltero": true,
            "direccion": {
                "calle": "Avenida Soleares",
                "numero": "44",
                "pais": "Chile"
            }
        },
        {
            "nombre": "Pedro Motos Sandez",
            "altura": 1.69,
            "peso": 72,
            "pasatiempos": [
                "Programación",
                "Senderismo"
            ],
            "soltero": true,
            "direccion": {
                "calle": "Torero Pedro Cano",
                "numero": "78",
                "pais": "México"
            }
        }
    ]
}

Citar
a) Muestra el código XML equivalente.

Código XML:

Código: [Seleccionar]
<?xml version="1.0" ?>
<persona>
<nombre>Juan Pérez Galones</nombre>
<altura>1.72</altura>
<peso>75</peso>
<pasatiempos>Comics</pasatiempos>
<pasatiempos>Baloncesto</pasatiempos>
<pasatiempos>Gaming</pasatiempos>
<soltero>true</soltero>
<direccion>
<calle>Avenida Soleares</calle>
<numero>44</numero>
<pais>Chile</pais>
</direccion>
</persona>
<persona>
<nombre>Pedro Motos Sandez</nombre>
<altura>1.69</altura>
<peso>72</peso>
<pasatiempos>Programación</pasatiempos>
<pasatiempos>Senderismo</pasatiempos>
<soltero>true</soltero>
<direccion>
<calle>Torero Pedro Cano</calle>
<numero>78</numero>
<pais>México</pais>
</direccion>
</persona>

Citar
b) Compara el número de caracteres que forma una codificación y otra. ¿Cuántos caracteres ocupa la codificación JSON? ¿Cuántos caracteres ocupa la codificación XML? (Nota: el número de caracteres se puede contar con un editor de texto).

La codificación JSON ocupa: 385. En cambio, la codificación XML ocupa: 612.

Citar
c) Transforma la notación JSON para que toda la información quede en una sola línea. ¿Crees que el contenido en una sola línea es equivalente al contenido inicial? ¿Qué ventajas e inconvenientes le ves a tener toda la información en una sola línea?

El contenido en una sola línea es equivalente al contenido inicial. La ventaja es que el archivo en el cual la codificación está en una sola línea es menos pesado que en el cual no está en una sola línea. El inconveniente es que por humanos es más fácil leer codificación que no esté en una sola línea que si lo estuviera.

Citar
d) Transforma la notación XML para que toda la información quede en una sola línea. ¿Qué línea resulta más larga, la línea con notación JSON o la línea con notación XML?

La línea con notación de XML es más larga.

Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 ... 30

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