Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación I
Herramientas
Básicas
Tipos de Datos, Variables y
Constantes
Tipos de Datos
int, float, double, char, long, shor,
long double, unsigned int
Variables
Tipo_dato nombre = valor;
constantes
1. const Tipo_dato nombr= valor;
2. #define nombre=valor
Variables o constantes Globales y
Locales
Las variables o constantes GLOBALES se
declaran fueran del main() y son accesibles
desde cualquier parte de un programa; para que
sean LOCALES deben ser declaradas dentro del
main() o dentro de cualquier función definida
por el usuario.
Operadores
1. Aritméticos (+, -, *, /, %)
2. Relacionales (>=, <=, ==, !=, >, <)
3. Lógicos (&&, ||, !)
4. Asignación (=, +=, -=, *=, /=)
5. Incremento o Decremento (++, --)
Estructura Repetitivas
WHILE:
while (condición) {
cuerpo del bucle
}
DO-WHILE:
do {
cuerpo del bucle
}while(condición);
FOR:
for ( inicio; condicion; incre o decre) {
cuerpo del bucle
}
Sentencia Continue y Break
Índice
Cada referencia a un elemento de un Arreglo
incluye el nombre y el índice, que es un valor
que directa o indirectamente referencia la
posición del elemento dentro del arreglo.
Declaración
Gráficamente un arreglo puede
representarse como:
10 2 5 20
A[1] A[2] A[3] A[4]
índice
Nombre del Arreglo
Contenido
A[1]=10
Declaración
Tipo nombrearreglo[numerodeelementos];
int numeros[10];
int edades[5]={ 13,14,15,16,17 };
float lista[ ] ={1,2,3,5,6};
vector de caracteres
char cadena[ ] ={ ‘a’,’b’,’c’,’d ’,’e’,’f ’,’g’} ;
char nombre[ 4 ]= “ANA”;
Inicialización de un arreglo:
char texto[25][80];
otra forma:
int tabla[3] [4] = {
{1,2,3,4} ,{13,14,15,16} , {17,25,23,27 }
};
Operaciones básicas en Matrices:
Suma de Matrices
Si A y B son dos matrices cualesquiera del mismo
tamaño, entonces la suma A + B es la matriz que se
obtiene al sumar los elementos correspondientes
de las dos matrices.
Operaciones Matriciales
Suma de Matrices
a11 a12 … a1n b11 b12 … b1n a11 + b11 a12+ b12 … a1n+ b1n
a21 a22 … a2n b21 b22 … b2n a21 + b21 a22+ b22 … a2n+ b2n
… … … … … … … … … … … …
am1 am2 … amn bm1 bm2 … bmn am1 + bm1 am2+ bm2 … amn+ bmn
Operaciones Matriciales
Matriz Transpuesta
Si A es una matriz m x n, entonces la transpuesta de
A, denotada por At, es una matriz n x m cuya i-ésima
fila es la i-ésima columna de A y cuya j-ésima
columna es la j-ésima fila de A.
1 6
1 8 0
8 -2
6 -2 3
0 3
Operaciones Matriciales
Multiplicación de Matrices
Sea A = [ a1 a2 … an ] un vector fila n-dimensional y sea
B = b1
b2
..
Observe que el
. producto de un vector fila y un
vector columna no se puede definir a menos
bn
que sean de tamaños compatibles
Un vector columna n-dimensional. Entonces el producto AB, de A
y B está dado por
b1
AB = [ a1 a2 … an ] b 2 = a1b1 + a2b2 + … + anbn
.
.
.
bn
Operaciones Matriciales
Multiplicación de Matrices
Sean A una matriz m x r, y B una matriz de r x n. El producto AB es
la matriz m x n cuya componente ij-ésima es el producto de la fila
Fila: 1 Columna: 2
i-ésima de A y la columna j-ésima dex (-2)
4 x 8 + (-1) B. = 34
4 -1 1 8 0 -2 34 -3
0 5 6 -2 3 30 -10 15
Hoy…
Inserción y Eliminación de elementos
en arreglos
Planteamiento teórico
Ejemplo
Agenda
Planteamiento Teórico
Planteamiento Teórico
Inserción de elementos en vectores
valor= 8
V[N] 2 5 1 3 4
N=5 N=6
POS=3
Planteamiento Teórico
Inserción de elementos en vectores
valor= 8
Algoritmo V[N] 2 5 1 3 4
POS=3 N=5 N=6
Planteamiento Teórico
Eliminación de elementos en vectores
V[N] 1 -3 2 4 6
N=4 N=5
POS=2
Planteamiento Teórico
Eliminación de elementos en vectores
Algoritmo V[N] 1 -3 2 4 6
N=4 N=5
POS=2
Planteamiento Teórico
Inserción de una fila/columna en matrices
Planteamiento Teórico
Inserción de una fila/columna en matrices
Algoritmo
1. Determinar el vector fila o columna a insertar: V [depende del
problema].
Planteamiento Teórico
Eliminación de una fila/columna en matrices
A[Fa,Ca]
1 2 3 4
5 6 7 8
9 0 -1 -2
3x3 3x4
L=2
Planteamiento Teórico
Eliminación de una fila/columna en matrices
Algoritmo
Planteamiento Teórico
Ejemplo: Drop Down
Ejemplo
Descripción del problema
Eliminar los asteriscos de la matriz de caracteres A[Fa,Ca].
Desplazar los elementos ubicados por encima de un asterisco hacia el
fondo de la misma columna.
Como último paso para concluir el proceso se deben eliminar aquellas
filas y/o columnas vacías, obteniendo la matriz A[Fa,Ca] actualizada.
A[Fa,Ca] original
A[Fa,Ca] resultante
a * * e *
a c e
* c * f g
b d f g 2x4
b d * * * 3x5
Ejemplo
¿Cómo lograrlo?
A[Fa,Ca] transición
A[Fa,Ca] resultante
‘‘b’
/ ‘‘b’
/ ‘‘b’
/ ‘‘b’
/ ‘‘b’
/
a c e
a c / e
‘‘b’ ‘‘b’
/
b d f g 2x4
b d / f
‘‘b’ g 3x5
Ejemplo
Resultado Matriz original
A[Fa,Ca]
a * * e *
* c * f g
b d * * * 3x5
Matriz resultante
A[Fa,Ca]
a c e
b d f g 2x4
Ejemplo
La Estructura en C
Un registro o estructura es una estructura heterogénea de datos,
denominados miembro y a los que accedemos por nombre. Al igual que
cualquier otro dato, el tipo estructura (struct) antes de poder se utilizado debe
ser declarado
Ejemplo
struct complejo
{
float x , y;
} complex;
Estructuras anidadas
struct cliente
struct info_dir {
{ char nombre_cliente[30];
char direccion[25]; struct info_dir direccion_clien;
char ciudad[20]; double saldo;
char provincia[20];
long int cod_postal; };
};
struct empleado
{
char nombre_emp[30];
struct info_dir direccion_emp;
double salario;
};
Acceso a una estructura
Struct inventario
{
char titulo[25];
char fechapub[20];
char autor [30];
float precioventa;
} libros[100];
Punteros
Es una variable en c que representa una dirección de un
elemento de datos en la memoria. Un puntero apunta a una
dirección en la memoria donde un elemento float, int, char,
un arreglo o una estructura se pueden encontrar.
Nombre de la x
variable
Dirección de la
variable 43658
Acceder a valores usando punteros
var_nombre=&x; /*coloca el puntero de la posición de x en la variable*/
y = *var_nombre; /*busca el valor de x, el cual es 4 y lo asigna a y */
Declaración:
Ejemplo
La llamada
Void incremento (int *i)
int i;
{ i=10;
*i +=5; /*incrementa un entero en 5*/ incremento(&i);
}
Punteros a Punteros
Definición
Un puntero que apunta a otra variable puntero.
Para declarar un puntero a un puntero se hace
preceder a la variable con dos asteriscos
Ejemplo
int valor_e =100; ptr1
int *ptr1 =&valor_e; ptr5
int **ptr5 =&prt1;
/* donde ptr5 es un puntero
100 valor_e
a puntero*/
Ejemplo
Puntero a una Estructura
Void registro(struct temperatura *t)
{
float actual;
leer(actual);
if (actual > t->alta)
t->alta= actual;
else if (actual<t ->baja)
t->baja= actual;
}
La llamada puede ser:
struct temperatura tmp;
registro(&tmp);
Errores comunes
float* px;
*px=23.5; /* error px no contiene dirección*/
Forma correcta:
float px;
float* px;
px=&px;
*px=23.5;
Verificación de tipos
float *fp;
char c;
fp=&c; /* no válido*/