Está en la página 1de 24

ING.

JOSE ESTRADA MONTES


Operadores Desplazamiento de bits
División de un numero por la potencia de 2𝑛

ING. JOSE ESTRADA M.


Operadores - Desplazamiento de bits
División de un numero por la potencia de 2𝑛

ING. JOSE ESTRADA M.


Operadores – Direccionamiento de Memoria

Operador Operacion Ejemplo Resultado

& Dirección de &x Apuntando a x

Direccionamiento El objeto o función que p


* *p esta apuntando
Indirecto
El elemento número y
[] Subíndice x[y]
del arreglo x
. Miembro de El miembro llamado y en
x.y
union/struct la estructura o unión x
Miembro de El miembro llamado y, en
-> union/struct por p->y la estructura o unión que
referencia p esta apuntando.
ING. J.ESTRADA

ING. JOSE ESTRADA M.


Operadores – Direccionamiento de Memoria

Operador Operacion Ejemplo Resultado

Llamada a Pasa el control a la función


() foo(x)
función con argumentos específicos

sizeof Tamaño de un sizeof x El numero de bytes de x


objeto en bytes ocupados en memoria
Tipo de conversión (short) x Convierte el valor de x al
(type) tipo especificado
explicita definida
?: Expresión El valor de y, si x es
condicional x ? y :z verdad , sino el valor de z.
, Evaluación Evalúa x luego y , sino el
secuencial x, y resultado es el valor de y
ING. J.ESTRADA

ING. JOSE ESTRADA M.


Operadores – Precedencia
Operador Descripcion Asociatividad

( ) Parentesis para la expresión


[ ] Subindice de Arreglo
De Izquierda
. Miembro de Estructura a derecha
-> Apuntador de Estructura

+ - Unario + y – (Signos positivo y negativo)


++ -- Incremento y Decremento
! ~ NOT Lógico and complemento bit a bit
* Dereferencia (Apuntador) De Derecha
a Izquierda
& Direccionamiento de
sizeof Dimensión de la expresión o tipo
(type) Tipo explicito definido
ING. J.ESTRADA

ING. JOSE ESTRADA M.


Operadores – Precedencia
Operador Descripcion Asociatividad
* / % Multiplicar, Dividir, y Modulo Izquierda a Derecha
+ - Sumar y Restar Izquierda a Derecha
<< >> Desplazamiento a la Izquierda y a la Derecha Izquierda a Derecha
< <= Menor que y menor o igual a Izquierda a Derecha
> >= Mayor que y Menor o Igual a Izquierda a Derecha
== != Igual a y diferente a Izquierda a Derecha
& AND bit a bit Izquierda a Derecha
^ XOR bit a bit Izquierda a Derecha
| OR bit a bit Izquierda a Derecha

&& AND lógico Izquierda a Derecha


|| OR lógico Izquierda a Derecha

?: Operador condicional Derecha a Izquierda


ING. J.ESTRADA

ING. JOSE ESTRADA M.


Operadores – Precedencia
Operador Descripcion Asociatividad
= Asignación
+= -= Asignación de Suma y Resta
/= *= Asignación de División y Multiplicación
%= Asignación de Modulo Derecha a Izquierda
<<= >>= Asignación desplazamiento Izquierda y Derecha
&= |= Asignación AND y OR bit a bit
^= Asignación XOR bit a bit
, Operador Coma Izquierda a Derecha

Los operadores agrupados en una sección tienen


la misma precedencia–conflictos, dentro de una
sección son manejados por las reglas de
asociatividad ING. J.ESTRADA

ING. JOSE ESTRADA M.


Operadores – Precedencia
Si dos operadores tienen la misma precedencia,
su asociatividad determina el orden de la
evaluación.
Precedence
Expresion Expresion Efectiva

a – b * c a – (b * c)
a + ++b a + (++b)
a + ++b * c a +((++b) * c)
ING. J.ESTRADA

En el desarrollo del programa es importante


agrupar los elementos de una expresión

ING. JOSE ESTRADA M.


Arreglos o vectores

Los Arreglos (arrays) son variables que pueden


almacenar muchos ítems de un mismo tipo de
datos.
Los ítems individuales son conocidos como
elementos, son almacenados secuencialmente y son
únicamente identificados por el índice del arreglo.

 Pueden contener cualquier numero de elementos.


 Elementos deben ser del mismo tipo.
 El índice base es 0.
 El tamaño del arreglo debe ser especificado en la
declaración.
ING. JOSE ESTRADA M.
Arreglos (Arrays)
Los arreglos se declaran al igual que las
variables ordinarias:
Sintaxis
type arrayName[size];

size se refiere al numero de elementos.


size debe ser un entero constante
Ejemplo

int a[10]; // Un arreglo que retiene 10 enteros

char s[25]; // Un arreglo que retiene 25 caracteres

ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos (Arrays)
Los arreglos (Arrays) pueden ser inicializados
con una lista cuando es declarado:
Sintaxis

Los items deben todos coincidir al type de


arreglo
Ejemplo

int a[5] = {10, 20, 30, 40, 50};

char b[5] = {'a', 'b', 'c', 'd', 'e'};

ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos (Arrays)
Los arreglos son accesados como las variables,
pero con un indice (index):
Sintaxis
arrayName[index]

- Indice puede ser una variable o una constante


- El 1er elemento tiene un indice de 0
ejemplo
int i, a[10]; //Un arreglo que puede retener 10 enteros

for(i = 0; i< 10; i++) {


a[i] = 0; //Todos los elementos del arreglo a 0
}
a[4] = 42; //pone el quinto elemento a 42
ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos Multidimensionales
Agregando dimensiones a una declaración de
arreglo
Sintaxis
type arrayName[size1]...[sizen];

Los arreglos pueden tener cualquier numero de


dimensiones, 3 dimensiones es de uso comun.
Ejemplo

int a[10][10]; // arreglo 10x10 para 100 enteros


float b[10][10][10]//arreglo 10x10x10 p/.1000 flotantes

ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos Multidimensionales
Los arreglos pueden ser inicializados con listas
dentro de una lista.
Sintaxis
type arrayName[size1]...[sizen] =
{{item,…,item},

{item,…,item}}
Ejemplo
char a[3][3] = {{'X' , 'O' , 'X'},
{'O' , 'O' , 'X'},
{'O' , 'O' , 'X'}};
int b[2][2][2] = {{{0,1},{2,3}},{{4,5},{6,7}}};
ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos Multidimensionales
Visualizando un arreglo 2D.
int a[3][3] = {{0 , 1 , 2},
{3 , 4 , 5},
Fila, Columna {6 , 7 , 8}}; Columna

a[y][x] 0 1 2 x

a[0][0] = 0; 0 0 1 2
Fila 0

a[0][1] = 1; 0,0 0,1 0,2

a[0][2] = 2;

Fila
a[1][0] = 3; 1 3 4 5
Fila 1

a[1][1] = 4; 1,0 1,1 1,2

a[1][2] = 5;
a[2][0] = 6; 2 6 7 8
Fila 2

a[2][1] = 7; 2,0 2,1 2,2

a[2][2] = 8; y ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos Multidimensionales
Visualizando un arreglo 3D.
int a[2][2][2] = {{{0,1},{2,3}},
{{4,5},{6,7}}};
1 z
Plano, Fila, Columna
a[z][y][x] 0
4
0
a[0][0][0] = 0; 5
Plano 0

a[0][0][1] = 1;
0
Fila
a[0][1][0] = 2; x
a[0][1][1] = 3;
1
1 7
a[1][0][0] = 4; 2
Plano 1

a[1][0][1] = 5; y
a[1][1][0] = 6;
3
0
a[1][1][1] = 7;
1
ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos Multidimensionales
Ejemplo de un procesamiento de arreglo.
/**************************************************
* Imprime de 0 a 90 en incrementos de 10
**************************************************/
int main(void)
{
int i = 0;
int a[10] = {0,1,2,3,4,5,6,7,8,9};
while (i < 10)
{
a[i] *= 10;
printf("%d\n",a[i]);
i++;
}
while (1)
} ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos
STRINGS

Se define como arreglos del tipo de dato char, el cual su


ultimo elemento es un carácter nulo ‘\0’ con un valor
ASCII de 0.
El lenguaje C, no tiene un tipo de dato string como nativo,
pero los string, siempre son tratados como arreglos de
caracter.

Los strings :

 Son encerrados con doble comillas “string”


 Son terminados por un carácter nulo ‘\0’
 Deben ser manipulados como arreglos de caracteres.
 Pueden ser inicializados por un string (cadena) literal.

ING. JOSE ESTRADA M.


Arreglos (Arrays)
Creando un string con un arreglo de caracteres
Sintaxis
Sintaxis
type arrayName[lenght];
Length debe ser uno más grande que la longitud
del string (Mensaje) para acomodar el carácter
terminal ‘\0’. El arreglo char con n elementos
retiene strings con n-1 char.
Ejemplo
char str1[10]; //retiene 9 caracteres mas ‘\0’

char str2[6]; //retiene 5 caracteres mas ‘\0’

ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos (Arrays)
Los arreglos carácter son inicializados con
string literales
Sintaxis
type arrayName[] = “Microcontroladores";

La dimension del array no es requerida y es


determinada por la longitud del string. El
carácter NULL ‘\0’ es agregado automaticamente
Ejemplo
char str1[]= “MCU"; //4 caracteres “MCU\0”
char str2[5]= “Hola”; //5 caracteres “Hola\0”
//Declaracion string alternativa – requiere dimension
char str3[4]= {’P’,’I’,’C’,’\0’}; ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos (Arrays)
Los strings se inicializan elemento por elemento.
Sintaxis
arrayName[0] = char1;
arrayName[1] = char2

arrayName[n] = '\0';
El carácter NULL ‘\0’ es agregado manualmente.
Ejemplo
str[0]= “H";
str[1]= “o”;
str[2]= “l”;
str[3]= “a”;
str[4]= “\0”;
ING. J.ESTRADA

ING. JOSE ESTRADA M.


Arreglos
Los arreglos en las FUNCIONES:

 Los arreglos se pasan por referencia en lugar de por


valor, para una mayor eficiencia.
 Un puntero al arreglo (array), de preferencia en lugar
del propio arreglo para pasar a la función.

Esta declaración….
void WriteLCD(char greetings[]){…}

….es equivalente a esta declaración.


void WriteLCD(char *greetings){…}

ING. JOSE ESTRADA M.


SISTEMAS DIGITALES BASADOS EN
MICROPROCESADORES

MUCHAS GRACIAS

ING. JOSE ESTRADA MONTES

También podría gustarte