Está en la página 1de 55

Repaso

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

Estas sentencias se colocan dentro de los


ciclos.

La sentencia continue hace que la ejecución del


bucle vuelva a la cabecera del bucle (siguiente
iteración). La sentencia break finaliza un
ciclo.
Arreglos
y Matrices
Presentado por:
Ing. Marisela Materano
Variables Indexadas
Es una colección de elementos de datos
relacionados y organizados de un modo
particular.

Colección de elementos pertenecientes a tipos de


datos que resulta en la organización de piezas de
datos interrelacionados.
Arreglos Unidimensionales

Un arreglo unidimensional o vector es un


conjunto finito , consecutivo y organizado de
elementos homogéneos.

Í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”;

Formula para calcular el espacio requerido: es la diferencia entre


el índice del valor máximo en el arreglo y el índice del valor
mínimo + 1
Operaciones básicas en Arreglos:

Inicialización de un arreglo:

int n[]={2,3,5}; /*declarando un array de 3 elementos*/

char n[]={‘a’,’b’,’c’,’d’}; /*declarando un array de 4 elementos*/

# define max 100


float muestra[max];

Asignación de valores a elementos del Arreglo:


nombre_arreglo[i] = valor;
Precio[0]=15000;
Operaciones básicas en Arreglos:
Carga de un arreglo:
for (k=0; k<10; k++)
{
printf ("Introduzca un numero: ");
scanf ("%d",&numeros[k]);
}
Visualización de un arreglo:
for (k=0; k<10; k++)
{
printf("%d",numeros[k]);
}
Matrices

Las matrices son arreglos bidimensionales cuyos


elementos se pueden referenciar por dos índices.

El arreglo bidimensional se puede considerar como


un vector de vectores; es un conjunto de
elementos, todos del mismo tipo, en el cual el
orden de los componentes es significativo y en el
que se necesita especificar dos subíndices para
poder identificar cada elemento del arreglo.
Declaración
Tipo nombrearreglo[numerodefilas][numerodecolumnas];

char texto[25][80];

int tabla[3][4]={ 1,2,3,4,13,14,15,16,17,25,23,27 };

float lista[ 1] [3] ={1,2,3};

otra forma:
int tabla[3] [4] = {
{1,2,3,4} ,{13,14,15,16} , {17,25,23,27 }
};
Operaciones básicas en Matrices:

Carga de una Matriz:


float discos[10][10];
int fila, col;
for (fila=0; fila<10; fila++)
{
for (col=0;col<10; col++)
{
printf ("Introduzca un numero: ");
scanf ("%f",&discos[fila][col]);
}
}
Operaciones básicas en Matrices:

Visualizar una Matriz:

for (fila=0; fila<10; fila++)


{
for (col=0;col<10; col++)
{
printf("%2.2f \n",discos[fila][col]);
}
}
Operaciones Matriciales

El uso de matrices o tablas surge en muchos


contextos, tanto si se consideran dentro del ámbito
de las Matemáticas como para la organización de
datos.
El capítulo concerniente a las “Operaciones
Matriciales” comprende el análisis y desarrollo de
algoritmos relacionados con:
•Aritmética
•Tipos de Matrices
•Propiedades
Operaciones Matriciales

Los algoritmos vinculados a este tema involucran


procesos de “Recorrido Total o Parcial de Arreglos
Bidimensionales”.

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 una Matriz por un Escalar


Si A es una matriz cualquiera y c es un escalar,
entonces el producto cA es la matriz que se
obtiene al multiplicar cada elemento de A por c.
a11 a12 … a1n ca11 ca12 … ca1n
a21 a22 … a2n ca21 ca22 … ca2n
… … … … … … … …
am1 am2 … amn cam1 cam2 … camn
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

Operaciones básicas en Arreglos:


Recorrido
Lectura
Impresión
Inserción
Eliminación

Planteamiento Teórico
Inserción de elementos en vectores

Lo que realmente sucede…

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

1. Determinar valor a insertar: VALOR [depende del problema].


2. Determinar Punto de Inserción: POS [depende del problema]
3. Desplazar elementos hacia abajo/derecha.
4. Insertar VALOR en POS
5. Actualizar dimensión

Planteamiento Teórico
Eliminación de elementos en vectores

Lo que realmente sucede…

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

• Determinar Punto de eliminación: POS [depende del problema]


• Desplazar los elementos hacia la posición a eliminar.
• Actualizar dimensión

Planteamiento Teórico
Inserción de una fila/columna en matrices

Lo que realmente sucede…


Inserción de una Fila
A[Fa,Ca]
1 2 3 4
K=2
V[n] -1 -2 3 5 5 6 7 8
N=4 9 0 -1 -2
3x4
4x4

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].

2. Determinar la fila (K) o columna (L) donde se realizará la


inserción [depende del problema]
3. Desplazar elementos hacia abajo/derecha.
4. Insertar el vector en la fila (K) o columna (L) según el caso.
5. Actualizar dimensión

Planteamiento Teórico
Eliminación de una fila/columna en matrices

Lo que realmente sucede…


Eliminación de una Columna

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

1. Determinar la fila (K) o columna (L) a eliminar [depende del


problema]

2. Desplazar elementos hacia la fila/columna a eliminar.


3. Actualizar dimensión

Planteamiento Teórico
Ejemplo: Drop Down

1. Descripción del Problema


2. Análisis del Problema
3. Solución
4. Resultados

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?

Para cada columna:


Copiar la columna en un vector
Para cada elemento del vector:
Eliminar aquellos que sean un asterisco
Insertar un espacio en blanco al inicio del vector por
cada elemento eliminado
Copiar vector en la matriz A[Fa,Ca]
V[Fa] a * * e *
‘‘b’
/
a * c * f g
b* b d * * *
b
Ejemplo
¿Cómo lograrlo?

Para cada columna:


Copiar la columna en un vector
Para cada elemento del vector:
Eliminar aquellos que sean un asterisco
Insertar un espacio en blanco al inicio del vector por
cada elemento eliminado
Copiar vector en la matriz A[Fa,Ca]
V[Fa]
a * * e *
‘‘b’
/ c * f g
*
a b d * * *
b
Ejemplo
Actualizar Dimensión
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] 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

Sintaxis o Formato Ejemplo


struct <nombre de la estructura> struct fecha
{ {
Miembro1; int dia;
int mes;
Mienbro2;
int anio;

};
MiembroN;
};
Declarar variables
Struct fecha,nacimiento, ingreso_trabajo, jubilacion;

Si se desea hacer referencia a los miembros individuales


de la estructura en cada variable, se hace lo siguiente:

Sintaxis o Formato Ejemplo


variable.miembro nacimiento.dia

Se puede asignar valor a la variable en la declaración


misma como se muestra a continuación:
struct fecha f = {2,5,1976}
Sinónimo de un tipo de Datos
typedef
Permite al programador crear un sinónimo de un tipo de dato
definido por el usuario o de un tipo ya existente

Sintaxis o Formato Ejemplo


typedef struct complejo
tipo_dato_definido
nuevo_nombre; {
float x , y;
};
typedef struct complejo complex;
Sinónimo de un tipo de Datos
Otra forma válida

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

utilizando el operador punto (.)

utilizando el operador puntero (->)


Arrays de Estructuras

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

Valor en la posición (contenido


de la variable)
4

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:

Sintaxis o Formato Ejemplo

tipo_de_dato *variable_puntero; int *p;


char *palabra;
int i; /* define la variable i */
int *p;/* define un puntero a un entero p */
p=&i; /*asigna la dirección de i a p*/
Inicializar una variable a un puntero nulo
Ejemplo
#define null 0;
Char *p=null;

Puntero como argumento de funciones

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*/

También podría gustarte