Dev - C++ - Consignas C

 
Vista:

Consignas C

Publicado por Alexis (2 intervenciones) el 10/05/2005 22:09:24

Hola!

Tengo q contestar unas preguntas poder empezar a programar en C y entender mejor el lenguaje... querrí q me ayudaran a contestarlas y justificarlas.

Gracias!

1- Sea la sentencia 'A' + 'B'... ¿es sintácticamente correcta? ¿es semánticamente correcta? Justificar.
2- Sea la declaración int a=22 ¿es sintácticamente correcta? ¿cuál es su semántica? Justificar.
3- Sea la variable a del tipo y valor del ej anterior, la expresión a++/3 y ++(a/3)
¿es sintácticamente correcta? Justificar.
4- Sea la variable del ej anterior, ¿las expresiones a++/3 y ++(a/3) son semánticamente equivalentes? Justificar.
5- Sea la variable del ej anterior, las sentencias a=++a*2 y a=a+*2 ¿son semánticamente equivalentes?
6- Sea la declaración char='A', entonces la invocación strlen(&X) es semánticamente correcta?
7- Sea la sentencia IF(4+2)-18; else 33.6E-4; ¿es sintácticamente correcta? ¿cuál es su semántica?
8- Construya una función en ANSI C q construya aleatoriamente un dígito hexadecimal.

Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consignas C

Publicado por Yensi Vega (2 intervenciones) el 11/05/2005 12:17:50
Empezemos pues con tus consultas una por una :)

1. 'A'+'B' SI es sintacticamente correcta, pues indica la suma de los codigos ascii de A y B, es decir 65 + 66 = 131. es semanticamente correcto si es lo que quieres hacer.

2. int a = 22; solo te falto el ;, que es fin de instrucción. el significado es es una declaracion e inicializacion en una sola linea.
mas masticado: toda variable en C o C++ debe de ser declarada e inicializada. la inicializacion puede ser en la misma linea que la declaracion. si el programador no pone inicializacion, entonces el valor que toma por defecto es el contenido en la memoria que ha sido asignada la variable, que es un valor BASURA para el programador.

3. a++/3 es sintactamente correcta, pues ++ es un operador unario. en realidad son dos operadores ++ unarios. uno por la derecha como el caso anterior y otro por la izquierda ++a. ++(a/3) no es sintacticamente correcta, pues el operador ++ por la izquierda espera una variable u objeto, si ha sido defindo como operador de una clase (ver programacion orientada a objetos - POO)
PD: lo mismo para el operador --. y acerca de POO, los operadores pueden ser sobrecargadas en las clases, para poder operar con objetos.
PD2: diferencia entre a++ y ++a. a++. depende del contexto, que pueden ser 2
// supongase lo que sigue como codigo c++
...
a++;
++a;
...
// hacen lo mismo, incrementan a
//ahora
..
int x,y; // solo declaracion de x e y
int a = 22;// declaracion y definicion (o inicializacion) de a.
x = a++;
a = 22;
y = ++a;
...
// cuales son los valores de x e y??? mmmmmmmm........ x = 22 e y = 23.
// es decir x = a++; primero asigna x = a; luego incrementa a.
// y = ++a; primero incrementa y luego asigna.
// revisa este codigo tambien:
...
while(a-- > 0){ // bucle 1
cout<<a;
cout<<endl;
}
cout<<endl<<endl<<endl;
a = 22;
while(--a > 0){ // bucle 2
cout<<a;
cout<<endl;
}
...
// cuantas veces se ejecuta el bucle 1 y cuantas el bucle 2??????
//(TAREA jeje)

4. bueno de hecho que no lo son, y con el fundamento anterior creo que queda fundamentado.
5. a = ++a*2; y a = a++*2 (supuse que te falto un +) NO son semanticamente equivalentes, podrias deducirlo tambien de la explicacion de 3.
PD: son sintactacticamente correctas.

6. supongo que quisiste decir char X = 'A'. NO es semanticamente correcta. Ni C ni C++ maneja el tipo de datos String, solo arreglos, y la libreria string.h permite trabajar con arreglos de caracteres y hacernos la vida mas facil. bueno, el manejo de cadenas de caracteres en C y C++ asume que el final de una cadena es '\0' o NULL o simplemete 0 (CERO). Entonces la funcion strlen( const char* str); cuenta cuantos caracteres hay desde la direccion de str hasta el primer CERO que encuentre. en ejemplo que pusiste, strlen dara como resultado la cantidad de caracteres que hay desde la direccion de X hasta antes de encontrar en las direcciones de memoria siguientes un CERO o NULL. :)

7. en primer lugar las palabaras reservadas de C son en minusculas, es decir IF no existe en C ni C++. la sentencia correcta seria:
if (4+2)
-18;
else
33.6e-4;
bueno la sentencia if else en c++ es asi:
if ( condicion ){ // obligado los parentesis
//sentencias si condicion es diferente de CERO
}
else{
// sentencias si condicion es = CERO
}

en el ejemplo que propones deberia de ejecutarse las sentencias si condicion es diferente de CERO (4+2) es diferente de CERO, pero no se ejecuta nada, puesto que el compilador no encuentra ninguna sentencia dentro de los bloques. -18 y 33.6e-4 no son sentencias, simplemente son simbolos que no procesa, pero que no son sintactemante erradas.

8. bueno lo ultimo que pides si esta un poquito mas dificil, si se quisiera generar uno mismo el numero aleatorio, pues existe mucha teoria detras de la generacion de numeros aleatorios, pero C ansi trae dentro de stdlib.h funciones para generar numeros pseudoaleatorios, que por cierto es malo el algoritmo, pues no se ajusta al calculo de probabilidades (ese es otro rollo).

ahora si al grano: un digito hexadecima es un numero entre 0 y15

#include <stdlib.h>

int GeneraDigitoHexadecimal(){
return rand()%16;
// % es el operador de modulo, es decir que el residuo de el numero generado en rand es dividido entre 16 y los residuos posibles estan entre 0 y15
}

espero haber colaborado

Yensi Vega Luján
Bachiller en Ciencias de la Computación
Universidad de Trujillo- PERU
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consignas C

Publicado por McPool (1 intervención) el 17/07/2010 05:57:07
Muy buen aporte, espero se hayan aclarado tus dudas Alexis, el prof. Ing. catedrático Yensi Vega Lujan es uno de los mejores, igual q su papi.. Josesito Gabriel Cruz Silva.. jeje.. espero q cuando lo lea ya no me enseñe, sino me vaya a jalar el profe..xD!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consignas C

Publicado por hernan robles (2 intervenciones) el 18/05/2005 02:43:47
querido alexis, yo no soy quien para contestarte estas preguntas, tu tienes `3 opciones, 1 preguntarle a bruno (no muy recomendable), 2 preguntarle a barbuto( la mas recomendables) o bien 3. preguntarle a nuestro muy capasitado profesor Mulion.
saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar