You are on page 1of 4

Ejercicio 53:

Original:
<HTML>
<HEAD>
<TITLE>Pruebas JS</TITLE>
<SCRIPT LANGUAGE="JAVASCRIPT">
function multiplicar(x, y) {
var w;
while (x =< y) x++;
return w
}
function ver(){
alert(multiplicar(2, 9));
}
</SCRIPT>
</HEAD>
<BODY onLoad='ver()'>
</BODY>
</HTML>
Corregido:
<HTML>
<HEAD>
<TITLE>Pruebas JS</TITLE>
<SCRIPT>
function multiplicar(x, y) {
var w = 0;
var count = 1;
while (count <= y){
w += x;
count++;
}
return w;

}
function ver(){
alert(multiplicar(2, 9));
}
</SCRIPT>
</HEAD>
<BODY onLoad='ver()'>
</BODY>
</HTML>

Tiene un error de sintaxis en la estructura while, y tambin tiene un error


lgico de semntica estatica por lo que el algoritmo no funciona como se
espera.
Ej 56:
#include <iostream>
using namespace std;
int cubo(unsigned int p){
int n;
n = p * p * p;
return n;
}
int main(){
int n; //+-2^31
unsigned int p = 31489;//2^32
n = cubo(p);
cout <<"El cubo es:"<< n;
}

Correccion

#include <iostream>
using namespace std;
double cubo(unsigned int p){
double n;
n = p * p * p;
return n;
}
int main(){
double n;
unsigned int p = 31489;//2^32
n = cubo(p);
cout <<"El cubo es:"<< n;
}

Error semntico: Al asignar el resultado de la funcin a una variable entera


por coercin se usa el primer bit del numero unsigned como bit de signo del
numero entero que se retorna y queda negativo.
#include <iostream>
using namespace std;
struct pumpkin { unsigned nose:1, eyes:2; } p = { 1, 2 };
int f(){
if( p.nose > 0 && p.eyes > 1 ) return 1;
else return 0;
}
int main(){
if( f() ) cout << "nose and eyes\n";
else cout << "malformed\n";
return 0;
}
Es un error de semntica estatica ya que al declarar un campo de bits con
tipo entero de un bit el primer bit ser un bit de sgno. Al asignar 1 al campo
no se coloca uno sino un 0 y por eso da falso.
Ejercicio 57:
HTML>
<HEAD>
<TITLE>Pruebas JS</TITLE>
<SCRIPT
LANGUAGE="JAVASCRIPT">
function compara(){
var x = 0.3333333333333333, y = 1/3;
alert(x + " , " + y);
if (x == y)
alert(1);
else
alert(0);
}
</SCRIPT>
</HEAD>
<BODY onLoad="compara()">
</BODY>
</HTML>
Tiene un error semntico ya que la mantisa de x no es igual a 1/3, si
agregamos un 3 mas a x las mantisas sern iguales.
#include <iostream>
using namespace std;
void compara(){
int k;
double x, y;
x = 1.0;
y = 3.0;
for (k=1; k<=20; k++){
x= x/y;
}
cout<<x;
}

int main(int argc, char *argv[]) {


compara();
return 0;
}
Programa en C++,
Ejercicio 58:
function calcula(){
var x = new Array();
for (i = 0; i < 5; i++) x[i] = i * 2;
alert(x);
for (i = 5; i < 10; i++) x[i] = i * 2;
alert(x);
}

Hay un error de semntica esttica ya que la funcin no acepta argumentos.


Lo nico que hacela funcin es mostrar que javascript permite el uso de
arreglos dinamicos
Verificar para las llamadas:
calcula(4, 12) : las variables a, b y e no estn declaradas (error semntico
estatico)
calcula(): la funcin espera argumentos que no le son proveidos (error
semntico estatico)
calcula(4, 2) Lo mismo que para 4 y 12.
Ejercicio 59:
#include <iostream>
using namespace std;
int main() {
struct foo {
int i;
};
foo x = {3};
foo y = x;
x.i = 4;
cout <<"-"<< y.i<< endl;
}
Lo que realiza este programa es asignar una instancia de la estructura foo a
la variable x con el campo i=3. Luego asigna la variable x a la variable y,
despus de eso modifica el contenido del campo i de x al entero 4 y
muestra que el contenido de y.i sigue siendo 3. Lo que muestra el programa
es que al copiar un objeto de una variable a otra se copia el objeto en s y
no la referencia a l, por lo tanto el cambio en x no se ve reflejado en y.
#include <iostream>
using namespace std;
int main() {
struct foo {
int i;
};
foo x = {3};
foo *y = &x;
x.i = 4;
cout <<"-"<< y->i<< endl;
}
En el segundo caso si se copia la referencia entonces las dos variables
referencian al mismo objeto. Sera lo mismo modificar en x que en y.
Ejercicio 60:
forma de acceso: Si es puntero se accede con ->

You might also like