S08 - s1 - Punteros y Arreglos en El Lenguaje C

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 30

MICROCONTROLADORES

S08.s1:
Punteros y arreglos en el
lenguaje C

Mg. Jorge HUARCA


¡Alto a la violencia!
Pautas de trabajo:

Entrar al Zoom con su cuenta UTP. (Puntualidad)

Participar en clase usando el micrófono.

En CANVAS encontrarán la clase de hoy, el


*.PDF de la sesión, la tarea y el foro de
consultas.
M.Sc. Carlos Pacheco
Dudas sobre la clase anterior

¿Qué hicimos la clase anterior?


Dudas sobre la clase anterior

¿Qué hicimos la clase anterior?


 Manejo de periféricos externos
Logro del aprendizaje
Al finalizar el curso, el estudiante aplica los fundamentos de programación
con lenguaje C en microcontroladores de 8 bits para resolver problemas de
ingeniería, a través del uso de programadores, compiladores, la simulación
y la implementación en laboratorio.

• Al finalizar la primera unidad, el estudiante realiza operaciones aritméticas, operaciones


lógicas, manipulación de bits, flujo de control y organización de un programa en
funciones.

• Al finalizar la segunda unidad, el estudiante Comprende los principios fundamentales de


la arquitectura de los microcontroladores de 8 bits, la manipulación de sus registros y el
manejo de puertos de entrada/ salida para el control de periféricos externos.

• Al finalizar la tercera unidad, el estudiante aplica los periféricos internos del


microcontrolador para la implementación de soluciones en problemas de ingeniería.
Logro del aprendizaje

Al finalizar la sesión, los estudiantes analizan el


funcionamiento de los punteros y arreglos en
lenguaje C aplicado al microcontrolador PIC18F4550
por medio de ejemplos.
Actividades de la sesión

 Arreglos en el lenguaje.

 Vectores.

 Punteros.

 Tablas de búsqueda.
Utilidad del tema
¿Dónde lo podrías aplicar?
Utilidad del tema
¿Dónde lo podrías aplicar?

¡Control de entradas y salidas digitales!


Arreglos en el lenguaje C

Un arreglo es una colección de posiciones de almacenamiento de datos, donde


cada una tiene el mismo tipo de dato y el mismo nombre. Cada posición de
almacenamiento en un arreglo es llamada un elemento del arreglo.

Para declarar o crear un arreglo utilizaremos la siguiente forma:


- Escribir el tipo de dato que almacenará el arreglo
- Escribir el nombre del arreglo
- Entre corchetes, escribir la cantidad de elementos de ese tipo que se
almacenarán.

Los arrays pueden ser de una dimensión (vectores), de dos dimensiones


(matrices) o de múltiples dimensiones.
Arreglos en el lenguaje C

También se ha declarado también una variable i, porque para manejar arreglos


utilizaremos ciclos, y se necesita la variable i como contadora.
Vectores

Para facilitar el lenguaje nos referiremos a un array de una dimensión como un


vector en este texto. En otros contextos podemos encontrar el término lista para
referirse también a un array de una dimensión.

Para declarar un vector hay que especificar el tipo de dato que va a contener, el
nombre que deseamos asignarle y el tamaño del mismo entre corchetes a
continuación del nombre.
Asignar valores Vectores

Para asignar valores se puede realizar desde la creación del vector así como del
tamaño del vector. También se puede asignar los datos después de crear el
vector.
Recorrer un vector

Una operación muy frecuente es recorrer los elementos de un vector, bien para
asignarles un valor o bien para leer su valor y operar con él. Para ello
utilizaremos un bucle con una estructura de control y una variable que actué
como contador y que nos sirva de índice para acceder a cada elemento del
vector.
Pasar vectores completos

Cuando se usa funciones, para enviar un vector como argumento en la llamada a


una función bastará con poner su nombre, ya sea que la función vaya a modificar
su contenido o en el caso de que solo sea un dato de entrada.

Cuando definimos una función que acepta un vector como parámetro, en la


definición del parámetro pondremos el equivalente a una declaración normal del
vector. No es obligatorio indicar el tamaño del vector (entre corchetes), pero si
es recomendable hacerlo (y pasar también una variable que represente ese
tamaño) ya que cuando manejemos arrays de múltiples dimensiones si
deberemos hacerlo.
Haga grupo con sus compañeros.
Modificar valores de vectores:
Realice un programa con dos vectores v1 y v2 de tipo short y de tamaño 10,
el primer vector tendrá los 10 primero números impares. El segundo vector
empezará vacío. Realizar dos funciones, uno para borrar el vector (todo en
cero) y otra para copiar el vector v1 en v2.
Haga grupo con sus compañeros.
Modificar valores de vectores:
Realice un programa con dos vectores v1 y v2 de tipo short y de tamaño 10,
el primer vector tendrá los 10 primero números impares. El segundo vector
empezará vacío. Realizar dos funciones, uno para borrar el vector (todo en
cero) y otra para copiar el vector v1 en v2.
Funciones para vectores

Función sizeof
La función sizeof devuelve el tamaño de memoria ocupado por una variable en
bytes.
Punteros

Punteros o también llamados apuntadores son tipo de variables que mejoran la


eficiencia del compilador en lo que respecta al acceso a los datos en la memoria.
Son muy populares debido a las importantes aplicaciones en el direccionamiento
de estructura de datos como Listas, Colas y Arboles binarios. Gran parte de las
librerías en C se implementan utilizando punteros.

Cuando el compilador declara una variable, se establece una reserva de


memoria en Bytes para la misma de acuerdo a si la misma es un Int,
Char,Boolenan, Float, etc.
Punteros

Un Puntero es una variable como cualquier otra


Un Puntero contiene una Dirección de memoria.
Esa Dirección contiene el Dato apuntado por el Puntero
Un Puntero apunta al Dato cuya Dirección de memoria dicho Puntero contiene.
Veamos ahora las variables Puntero. *Ptr1 se aloja en la dirección 9 y su
contenido es 3 que es otra dirección de memoria, y como el contenido de 3 es
1000 que es el valor de a.
Declaración y asignación de Punteros

<Tipo de dato apuntado>< * Nombre puntero >;

En el caso de Ptr1 y Ptr2 apuntan a un Int y a un Float por lo tanto podemos


declararlo como :
int *Ptr1; // Declaraciones
float *Ptr2;

Pero aquí están declarados y no apuntan a nada, apuntan a Null. Para apuntarlos
específicamente a las variables se utiliza la siguiente simbología:
Int a=1000;
Float b= 578.45;
Ptr1 =&a; // Asignaciones una vez declarados los punteros
Ptr2=&b;
Declaración y asignación de Punteros

También podemos Declarar e inicializar al mismo tiempo

int *Ptr1=&a; // Declaración e inicialización juntas


float *Ptr2=&b;

(&) Se llama operador de Dirección y Obtiene la dirección de una variable


(*) Se llama operador de Indirección, Define la variable Puntero y accede al
contenido Apuntado
Haga grupo con sus compañeros.
Secuencia de luces con LEDs:
Crear un vector que contenga los valores, y visualizarlos en forma de forma
directa y de forma indirecta.
Haga grupo con sus compañeros.
Secuencia de luces con LEDs:
Crear un vector que contenga los valores, y visualizarlos en forma de forma
directa y de forma indirecta.

Si quisiera enviar el puerto como puntero a un función ¿como se haría?


Tablas de búsqueda

Se puede tener tablas, que pueden ser arreglos de dimensión dos, en donde se
puede realizar búsqueda de información recorriendo los elementos de la tabla.
Haga grupo con sus compañeros.
Búsqueda de tablas:
La siguiente tabla muestra las 5 notas de 20 alumnos de una clase, indicar:
int notas[20][5] ={ {9,4,6,7,5}, {7,3,5,6,8},
{8,6,8,7,8}, {6,3,5,4,6}, {9,4,8,6,7},
{7,3,5,9,6}, {5,5,4,7,7}, {7,6,7,6,10},
{8,9,8,7,8}, {8,6,5,8,9}, {10,4,6,9,8},
{9,4,6,6,7}, {4,5,5,7,8}, {7,6,5,5,9},
{5,3,5,8,9}, {10,9,9,7,8}, {8,6,6,7,4},
{7,3,5,9,9}, {8,6,8,10,10}, {7,7,8,7,9} } ;

- ¿Cuantos alumnos no tienen ningún curso desaprobado?


- ¿Cuantos alumnos tienen promedio mayor a igual 7?
- ¿Cuantos alumnos han jalado el año si desaprueban con dos cursos menor
a 6?
¿Qué hemos aprendido en esta sesión?

 ……………………

…………………….
¿CUÁL ES TU CONCLUSIÓN FINAL?
Nos vemos la siguiente clase

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy