Eda 1
Eda 1
Algoritmos I
Ing. Patricia Del Valle Morales
M en C Gabriel Castillo Hernández
Proceso de compilación
en C
El compilador del lenguaje C/C++ ejecuta tres etapas desde que se recibe el código fuente (ejemplo.c)
hasta que se tiene el código ejecutable (ejemplo.exe), listo para correr:
La salida es un archivo con código binario (código objeto) pero incapaz de correr, debido principalmente a
que aún falta información para completar el programa
✓ Un tipo de dato establece el conjunto de valores que un dato puede tomar y las
operaciones que se pueden realizar con sus elementos.
✓ Así, un tipo de datos “entero” establece qué valores enteros son válidos y qué
operaciones se pueden realizar (la suma, la resta, la multiplicación y la división son
válidas mientras que la concatenación no lo es).
• Podemos almacenar un número entero (0, 1, 2, 3, etc.) o un numero entero con signo (… -3,
-2, -1, 0, 1, 2, 3, …).
• Como sabemos en el concepto matemático los números son infinitos, en computación esto
no es cierto.
• Algoritmo de complemento a 2
3. si hay un acarreo del bit más a la izquierda hacia afuera (del 4º. bit al 5º. bit para nuestro
ejemplo) este se pierde.
0111 +7
1101 0010+0001 = 0011 -3
#include <stdio.h>
int main()
{
char x;
char y;
while (1) {
printf("Dame un numero: ");
scanf("%d",&x);
y = x+100;
printf("%d + 100 = %d\n",x, y);
y = x-100;
printf("%d - 100 = %d\n",x, y);
printf("Que inteligentes somos las computadoras!\n");
}
}
Ing. Patricia Del Valle Morales, M. en C. Gabriel Castillo Hernández 21
Los números enteros con signo se representan en complemento a 2 y el rango de valores
que se puede representar es [-2n,2n-1] (porque el cero forma parte de la representación
de los positivos).
Si se emplean:
4 bits el rango es [-8,7]
8 bits [-128, 127],
con 16 bits [-32,768 y 32,767]
con 32 bits [-2,147,483,648, 2,147,483,647]
¿Cuántos bits se utilizan y cuál es el rango de valores que un número entero con signo
tiene en el compilador C que usted utiliza?
https://en.wikipedia.org/wiki/C_data_types
Es interesante notar que a nivel de bits no es lo mismo un número entero que un número de
punto flotante o punto fijo.
https://www.uv.es/~diaz/mn/node7.html
• y así sucesivamente.
printf("%d\n“,sizeof(char));
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Tamanio de un char: %d \n",sizeof(char));
printf("Tamanio de un int: %d\n",sizeof(int));
printf("Tamanio de un long int: %d\n",sizeof(long int));
printf("Tamanio de un long long int: %d \n",sizeof(long long int));
printf("Tamanio de un float: %d \n",sizeof(float));
printf("Tamanio de un double: %d \n",sizeof(double));
printf("Tamanio de un void *: %d \n",sizeof(void *));
return 0;
}
Ing. Patricia Del Valle Morales, M. en C. Gabriel Castillo Hernández 30
Variables en memoria
char x;
1 byte
x = ‘a’; 242
Tabla de símbolos: 243
Nombre x 245 a
Contenido a 248
char 249
RAM
Ing. Patricia Del Valle Morales, M. en C. Gabriel Castillo Hernández 31
Variables en memoria
int w;
4 bytes
w = 10; 242
243
Tabla de símbolos:
Atributo Valor 244
Nombre w 245
Contenido 10 248
Número entero 249