1a)
- Memoria:
para almacenar programas y datos.
- CPU (Unidad
Central de Procesos): para realizar las instrucciones del
programa.
- Controladores
de E/S: para controlar a los dispositivos periféricos.
- Buses:
para transportar datos y programas entre Memoria, CPU y Controladores.
|
1b)
programa fuente 1 ---> compilador ----> programa objeto 1
programa fuente 2 ---> compilador ----> programa objeto 2
programa objeto 1 -->| | --> enlazador ---> programa ejecutable programa objeto 2 -->|
|
1c)
- Identificador:
Nombres usados para referirse a las variables, identificar
funciones o etiquetas definidos por el usuario. Ejemplo:
abc_76r
- Palabra
reservada: identificador reservado del lenguaje y no puden ser
cambiado. Ejemplo: for
- Variable
Global: variable que es definida fuera de las funciones y es
visible a todas ellas. Ejemplo:
int x; main(){ x = ......; }
- Puntero:
es una variable cuyo contenido es una dirección de memoria.
Ejemplo: int *p;
|
1d)
Una variable local al igual que una variable que es declarada
como argumento de una función, tiene existencia sólo
dentro de la función y mientras esta está en
ejecución. La diferencia es que la el valor inicial de la
variable argumento es el valor que tiene el parámetro de la
llamada a la función.
Ejemplo:
main(){ fun(5); } void fun(int a){ int x = 1; ... = a ....; // a vale 5 }
|
2a) //Este programa cuenta el numero de bits en "1" de un //caracter sin signo ingresado por teclado
main(){ int n=0,i; unsigned char x; scanf("%x", &x); for (i=0;i<8;i++) n = n + ((x>>i)&0x1); printf("%d\n",n); }
|
2b) void func(int *, int *, int *); int x = 5, y = 2, z =8; main(){
func(&x,&y,&z); printf("%d %d %d\n",x,y,z); } //Esta funcion recibe los punteros a las tres variables //y puede usan internamente otros nombres para los punteros //reales, manteniendo su accion
void func(int *a, int * b, int *c){ int aux; aux = *a; *a = *b; *b = *c; *c = aux; }
|
3a) int esSimetrico(int); main(){ int x; scanf("%d",&x); printf("%d\n", menorDigito(x)); } //esta funcion retorna el menor digito excepto los //ceros a la izquierda
int menorDigito(int x){ int menor=9,a; do { a = x % 10; if (a < menor)menor = a; } while ((x = x/10)!=0); return menor; }
|
3b) int esSimetrico(int); main(){ int x = 18344381; scanf("%d",&x); printf("%d \n",esSimetrico(x)); } //solucion alemental:
int esSimetrico(int x){ int a,b,c,d,e,f,g,h; a = x % 10; b = (x / 10) % 10; c = (x / 100) % 10; d = (x / 1000) % 10; e = (x / 10000) % 10; f = (x / 100000) % 10; g = (x / 1000000) % 10; h = (x / 10000000) % 10;
if (d != e)return 1; if (c != f)return 1; if (b != g)return 1; if (a != h)return 1; return 0; }
|
4) //Este programa lee un conjunto de n enteros, n leido por teclado, //e imprime el numero de enteros pares e impares. El cero lo cuenta //como impar main(){ int n; int np=0, ni=0; int nuevo; int i; printf("ingrese n: "); scanf("%d", &n); for (i = 0; i < n; i++){ printf("ingrese: "); scanf("%d", &nuevo); if((((nuevo/2)*2)==(nuevo)))np++; else ni++; } printf("%d\t%d\n",np,ni); }
|