2. DATO
Información en bruto, sin ningún significado
Dado un enunciado, evento o acción, los datos
Permiten representar sus actores o participantes
Analizándolos, se podrá obtener resultados deseados
Analicemos el siguiente hecho:
El estudiante de nombre Pedro Velez de 22 años, tiene un promedio de 7.5
Podemos tomar los siguientes datos
Nombre: Pedro Velez -> Conjunto de Caracteres
Edad: 22 -> entero
Promedio: 7.5 -> real
3. INFORMACIÓN
Es el resultado deseado luego de procesar los datos
Los datos, al ser procesados, se convierten en
información útil o resultados.
Procesamiento:
Calcular salarios
Juan, Perez $320
Pedro, Rodriguez $310
Luis, Pozo $240
Datos de salida(se muestran
en el monitor)
Datos de entrada(ingresados x
teclado)
Juan, Perez
Pedro, Rodriguez
Luis, Pozo
160
155
120
Empleado Horas
Valor por hora = $2
4. TIPOS DE DATOS
Los datos se clasifican en TIPOS
Son los diferentes dominios existentes. Ejemplo:
Edad, Año de Nacimiento, Numero de multas
Tienen dominio numérico
Nombre, Dirección, Num. Cedula,
Caen en el dominio de la información tipo texto
Y las operaciones permitidas para dicho dominio
Un conjunto de valores y operaciones
definidas solo para esos valores
5. TIPOS DE DATOS BASICOS
Los podemos distinguir fácilmente, están en el diario vivir:
El Sr. Vera de 63 años tiene cedula No. 0908815533, y paga $120 de
impuestos
Son tipos de datos simples
Que permiten representar información numérica, caracteres, etc.
NOMBRE CONJUNTO DE VALORES OPERACIONES
Enteros Negativos y positivos sin decimal Sumar, restar, dividir, multiplicar,
residuo
Reales Negativos y positivos, con decimal Sumar, restar, dividir, multiplicar
Lógicos Verdadero o Falso(1 o 0) And, Or, Not
Caracteres Letras, números, especiales, juntos
forman una cadena
Sumar carácter + entero restar,
multiplicar por entero
6. ALMACENANDO DATOS
TIPO DE DATO #bytes Representación interna En ANSI C
ENTEROS 2
4
8
Positivos: conjunto de bits
38 -> 00100110
Negativos:Complemento a Dos
-38 -> 11011001
int
long
REALES 8
16
Mantisa x base(exponente)
387.53 -> 38753 x 10-2
00000000100101110110000111111110
float
double
CARACTERES 1 ASCII
11000000 -> ‘A’
char
7. DECLARACION DE
VARIABLES
Una declaración de variables en C incluye
Tipo de dato y
Nombre de variable(identificador)
Ejemplo:
int a, b;
float c;
¿Para que se declaran variables?
Especifica cuanta memoria debe reservarse y
Como se van a interpretar dichos datos
f = a + b
Es una suma de enteros, que al final se convierte a real
Al declarar una variable se
le asigna espacio en
memoria y una dirección
para dicho espacio
int a;
4 bytes,
dir: 100
1 byte,
dir: 104
100
101
102
103
104
char c;
8. DIRECCIONES DE
MEMORIA
1000
1001
1002
1003
&a es
1000
Las variables
Tienen direcciones de memoria
Si deseamos conocer dicha dirección
En lenguaje C
Se usa el operador & de dirección
Ejemplo:
int a;
a = 3;
printf(“Valor:%d Dir: %d”, a, &a);
Un puntero
Es una variable que puede almacenar dirección de
memoria
9. DECLARACION DE
PUNTEROS
Un tipo de dato
El puntero solo podrá almacenar direcciones de
memoria de variables del tipo especificado
Se pueden definir punteros de cualquier tipo:
float *pf;
char *pc;
Un identificador que siempre va antecedido del operador *
pt almacena la
dirección de x, se dice
que pt apunta a x
x
pt
int *p;
1000
1001
1002
1003
1004
1005
1000
int *pt, x;
x = 3;
pt = &x;
3
10. CONSULTANDO CONTENIDO
Si un puntero apunta a una variable
A través del puntero se puede llegar a conocer todo sobre la variable
Ejemplo:
c = ‘A’
printf(“%c”, *pc1);
*pc1 = ‘N’
printf(“%c”,c);
Es equivalente a :
printf(“%c”, c);
Es equivalente a :
c = ‘N’
Imprime ‘N’ pues c ya
cambio
char c, *pc1, *pc2;
pc1 = &c;
Si quiero conocer la dirección, uso directamente el puntero
printf(“%d”, pc1); //Imprimo la dir. Almacenada por pc1
pc2 = pc1; //pc2 almacena la misma dir. que pc1
Si quiero conocer el contenido al que apunta un puntero, uso el
operador *, sobre dicho puntero
11. PASO DE PARAMETROS
Las funciones son porciones de código
Ejecutan una tarea especifica
Usualmente toman datos de entrada->parámetros
Y retornan un valor
Los parámetros se pueden enviar de dos formas:
Por valor
Por referencia
12. PASO POR VALOR
La función no recibe la variable enviada
Recibe una copia
Similar a cuando va al hacer algún tramite y le piden al cédula
No entrega la cédula verdadera
Entrega una copia
La verdadera estará segura, aunque quemen y destruyan la copia
Ejemplo: x = 5
printf(“%dn”,x);
funct(x);
printf(“%dn”,x);
void funct(int y){
y = y+1;
printf(“%dn”,y);
}
Se imprime 5, el valor de x no
cambia aunque la función haya
intentado modificarla
13. PASO POR REFERENCIA
Aquí si la función recibe exactamente la variable enviada
No hay copias
Si algo se le hace al parámetro, se le esta haciendo a la variable
Para esto, se usan punteros
La función trabaja con un puntero a la variable enviada
Sabe todo sobre esa variable y se pude acceder a través de *
Ejemplo: x = 5
printf(“%dn”,x);
funct(&x);
printf(“%dn”,x);
void funct(int *py){
*py = *py+1;
printf(“%dn”,*py);
}
Se imprime 6, el valor de x cambió
dentro de la función
14. ARREGLOS
Conjunto de elementos
Finito, Ordenado y Homogéneo,
Todos sus elementos son del mismo tipo
Un arreglo estático se declara
int A[100];
El tipo de los elementos, el identificador y
El numero de elementos (dimensión)
Cada elemento del arreglo tiene un índice
En C, siempre el índice mas pequeño es el 0: limite inferior
El limite superior, es 1 menos que la dimensión
Si el arreglo tiene 100 elementos, el índice mas alto es el 99
Y si un entero ocupa 4 bytes, el arreglo ocupa 400 bytes
seguidos
0 1 2 3 4 ...
A
99
15. OPERACIONES
No basta con la declaración, para ser tratado como un tipo
de dato
Faltan las operaciones para actuar sobre él
Consulta de un elemento
//Consulto el contenido de los elementos 4 y 5 de A
printf(“%d %d”,A[4], A[5]);
Modificación de un elemento
A[3] = 2; //Almaceno un valor en el elemento 3 de A
for(i = 0; i < 100; i++)
A[i] = 0;
Tipo de dato:
Conjunto de valores y operaciones
definidas solo para esos valores
16. ARREGLOS
BIDIMENSIONALES
La programación ofrece innumerables opciones
Un elemento de un arreglo, puede ser otro arreglo
int A[3][3];
A[3] es un arreglo de tres elementos
Cada elemento es otro arreglo de 3 elementos enteros
(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
(2,0) (2,1) (2,2)
A[0]
A[1]
A[2]
A[0][0]
A[1][0]
A[2][0]
A[0]1]
A[1][1]
A[2][1]
A[0][2]
A[1][2]
A[2][2]
int A[3][3];