Sobre la asignatura

Objetivos

Conocer las facilidades avanzadas del lenguaje C y utilizarlas en la resolución de problemas de aplicación en la ingeniería electrónica, bajo computadoras y microcontroladores.

Conocer la arquitectura elemental de un sistema de procesamiento basado en microcontrolador, sus bloques básicos constituyentes y su funcionamiento.

Traducir problemas de la ingeniería a implementaciones programadas correctas y eficientes.

Manejar adecuadamente entornos avanzados de desarrollo y herramientas de edición, compilación, ejecución y depuración de programas para computadoras y microcontroladores.

Manejar adecuadamente los aspectos teórico-prácticos de un lenguaje de programación orientado a objetos, siendo capaz de identificar y utilizar adecuadamente sus elementos sintácticos y semánticos fundamentales.

Contenido Temático

UNIDAD 1: SISTEMAS DE COMPUTO DIGITALES

1.1. Comparación de la arquitectura de Von Neumann vs. la arquitectura Harvard.
1.2. Estructura básica y funcionamiento del procesador. Memoria de datos y de programa. Contador de programa, unidad de control, registros, ALU. Forma en que se ejecutan los programas.
1.3. Estructura, módulos básicos y más comunes de un microcontrolador. Funcionamiento conceptual de un microcontrolador y sus módulos constituyentes.
1.4. Memorias, tipos de memoria, direccionamiento. Registros de control de módulos.
1.5. Puertos de E/S digitales. Registros de control y datos.

2. UNIDAD 2: EL PROCESO DE DISEÑO Y CONSTRUCCION DE SOFTWARE
2.1. Entornos integrados de desarrollo de software.
2.2. El proceso de compilación. Conceptos, características y estrategias para el diseño, edición, compilación, depuración y documentación de programas utilizando un entorno integrado de desarrollo (IDE) profesional.
2.3. Entornos orientados a desarrollo de programas de PC y a microcontroladores.

3. UNIDAD 3: RESOLUCION DE PROBLEMAS DE INGENIERÍA APLICANDO LENGUAJE C
3.1. Elementos básicos del lenguaje (repaso de Informática). Operaciones de bits-Máscaras.
3.2. Elementos avanzados del lenguaje. Punteros, Operaciones básicas. Declaración. Asignación. Desreferencia. Aritmética de punteros. Uso de punteros.
Punteros const y puntero a const. Punteros genéricos (void). Punteros a punteros y punteros a funciones.
3.3. Asignación dinámica y administración de memoria.
3.4. Estructuras de datos y de bits. Máscaras vs. Campos de bits. Uniones. Endianness, alineamiento y padding (relleno). Enumeraciones. Creación de tipos de datos. typedef
3.5. Uso del preprocesador. Compilación condicional, macros y pragma
3.6. Librerías standard.
3.7. Entrada/salida en programas de PC y microcontroladores.

4. UNIDAD 4: DESARROLLO DE APLICACIONES PARA MICROCONTROLADORES
4.1. Ciclo de trabajo en modo encuesta.
4.2. Concepto básico de máquina de estado. Diagramas de estado y codificación simple en C.
4.3. Control y uso de entradas y salidas digitales.
4.4. Carga, ejecución y depuración de programas en un microcontrolador. Programadores. Concepto de “bootloader”.

5. UNIDAD 5: PROGRAMACION ORIENTADA A OBJETOS
5.1. Modelo de diseño del software orientado a objetos: propiedades, estado y comportamiento. Conceptos básicos del paradigma: abstracción, encapsulamiento, modularidad y jerarquía.
5.2. Clases, objetos, campos, métodos, herencia, extensión de clases en C++. Constructores y destructores. Sobrecarga de Operadores.
5.3. Polimorfismo. Funciones Virtuales y virtuales puras. Clases abstractas.
5.4. Flujos. Entrada/Salida en C++

Modalidad de enseñanza-aprendizaje

Esta asignatura pretende basarse para su desarrollo en los lineamientos metodológicos definidos en el plan de estudios. En particular, se cita: “El proceso de formación del ingeniero priorizará el desarrollo de la creatividad, el diseño de innovaciones tecnológicas y la resolución de situaciones problemáticas con similitudes de realidad. Las estrategias de aprendizaje comprenderán procesos de integración de conocimientos, para lo cual, los trabajos por proyectos, simulación de realidad y resolución de problemas abiertos, entre otras, constituyen metodologías adecuadas”.

Aproximadamente el 65% de la carga horaria disponible para el desarrollo de los contenidos temáticos de la materia está destinado a la ejercitación, realización de trabajos prácticos y resolución de problemas, conceptuales y de aplicación en la ingeniería electrónica.

Asimismo, los contenidos teóricos básicos y conceptuales, una vez desarrollados, se ejemplifican exponiendo su implicancia o impacto en la aplicación o implementación tecnológica final, contribuyendo también al volumen de conocimientos de índole aplicada impartidos en la materia.

De esta manera se logra transmitir al alumno las tecnologías básicas que enseña la asignatura mediante un enfoque orientado al uso y la aplicación, ya que el carácter de los contenidos implica en gran parte el desarrollo de habilidades que sólo se logran mediante el hacer.

Todas las actividades de índole práctico se realizan en forma individual, para lo cual cada alumno tiene disponible una computadora (actividades para las unidades 2 a 5) y un kit de desarrollo basado en microcontrolador (actividades para las unidades 1 a 4). A los fines organizativos, estas actividades, cuando presenciales, se organizan para su desarrollo en comisiones de hasta 20 alumnos, con un docente a cargo.

A los tiempos previstos para la carga horaria destinada a la materia dentro del plan, deben agregarse la disponibilidad de no menos de 6 horas semanales de consulta que los docentes en conjunto brindan a los estudiantes fueran del horario regular de cursado y que están destinadas a la clarificación de conceptos o explicaciones puntuales conforme la necesidad de cada alumno en particular.

Actividades curriculares relacionadas

Previas aprobadas: FB7-Informática, FB9-Álgebra lineal

Posteriores: A10-Sistemas Digitales I

Actividades de formación práctica

Las actividades prácticas se centran en la resolución de problemas que tienen como producido final un programa en lenguaje C o C++ para ser ejecutado en una computadora multipropósito (PC) o en un microcontrolador. Los enunciados de cada uno de los problemas están consignados en seis prácticas; los contenidos que involucran cada una de ellas están graduados conforme a las unidades temáticas que integran el programa de la asignatura. Algunos de los ejercicios de cada una de las prácticas serán resueltos en clases prácticas y/o teóricas y los demás serán propuestos para ser solucionados por los alumnos o analizados en clases de consultas.

Título Descripción
0 Conceptos básicos del lenguaje C Contempla la realización de ejercicios básicos de lenguaje C (repaso) y su ejecución en PC bajo el entorno de desarrollo a utilizar en la materia. Incluye operaciones de entrada y salida y conceptos de bajo nivel del lenguaje C como así también la realización de ejercicios específicos de depuración e inspección de código para lograr un acabado dominio del entorno de desarrollo (Unidad 2).
1 Punteros A lo visto en la práctica 0, agrega la realización de ejercicios utilizando punteros y asignación dinámica de memoria (lenguaje C).
2 Estructuras-Uniones-Campos de bits. Operaciones a nivel de bits A lo visto en las prácticas anteriores, agrega la realización de ejercicios utilizando estructuras, uniones, campos de bits y operaciones a nivel de bits en lenguaje C.
3 Programación en C para microcontroladores Contempla la realización de ejercicios de aplicación en microcontroladores empleando el ambiente de desarrollo utilizado en la materia. Comprende además ejercicios específicos de depuración e inspección “in-circuit”.
4 Programación Orientada a Objetos en C++

Contempla la realización de ejercicios en C++ sobre conceptos básicos de la programación orientada a objetos y flujos de entrada/salida en C++.

5 Herencia y Polimorfismo en C++ A lo visto en la práctica anterior se añaden los conceptos de jerarquía mediante herencia simple y polimorfismo en C++

Evaluación

El proceso de evaluación de esta asignatura incluye la realización de las siguientes actividades dentro de la carga horaria y horarios asignados:

Evaluaciones parciales I y II

Serán dos exámenes realizados durante las clases de práctica utilizando un entorno integrado de desarrollo (IDE) para lenguaje C/C++ en PC: el objetivo del primero de ellos es la resolución de problemas de ingeniería en lenguaje C (Unidades 2 y 3) y el del segundo será examinar los conocimientos sobre programación orientada a objetos en lenguaje C++ (Unidades 2 y 5). El desarrollo de aplicaciones sobre microcontroladores en lenguaje C (Unidades 2 y 4) se evaluará mediante la realización de un trabajo práctico grupal a aprobar antes de una instancia destinada a medir el desempeño integral del alumno

Evaluación integral: es una evaluación escrita a realizar en la clase de teoría, destinada a medir el desempeño integral del alumno, por lo que la misma basa su contenido en el análisis de los resultados de las evaluaciones parciales y en el trabajo desarrollado por el alumno durante el cursado.

Actividad remedial: es una instancia de recuperación para los alumnos que no hayan aprobado alguna de las dos evaluaciones parciales realizadas en práctica o la evaluación integral citada en el párrafo anterior.

Condiciones de aprobación: tal como indica el Reglamento de Exámenes en vigencia, todas las evaluaciones requieren una calificación igual o mayor a 6 (seis) para su aprobación.

Requisitos de promoción: para obtener la promoción en la asignatura los alumnos deberán aprobar las tres evaluaciones y el trabajo práctico durante el cursado de la materia.

Se prevé la realización excepcional de otras evaluaciones, fuera del horario asignado para la materia, para casos puntuales que pudieran presentarse durante el cursado.

Bibliografía

Bibliografía Básica

Título Autor(es) Editorial Año de edición
El lenguaje de programación C – segunda edición B. Kernighan y D.Ritchie Prentice Hall 1996
Cómo programar en C/C++ y Java – Cuarta edición H. Deitel y P. Deitel Prentice Hall 2004
El lenguaje de programación C++ Bjarne Stroustrup. Pearson Ed 2004

Bibliografía Complementaria

Título Autor(es) Editorial
     
Programación de sistemas embebidos en C – Tercera edición G. Galeano Alfaomega
An embedded software primer D. Simon Pearson Education
Practical C++ Programming O’Reilly O’Reilly Media
Exploring C for microcontrollers –A hands on approach J. Parab et al. Springer

Programming Embedded Systems,

Second Edition with C and GNU Development

Tools

M. Barr y A. Massa O’ Reilly
Programming Embedded Systems I – A 10- week course, using C M. Pont University of Leicester
Embedded C M. Pont Addison Wesley
Programming Embedded Systems in C and C++ M. Barr O’ Reilly

Embedded System Design:

A Unified Hardware/Software

Approach

F. Vahid y T. Givargis John Wiley & Sons
C Programming for Embedded Systems K. Zurell R & D Books

C Programming for

Microcontrollers

J. Pardue Smiley Micros

Programming

Microcontrollers in C

Second Edition

T. Van Sickle LLH Technology Publishing