Está en la página 1de 19

Laboratorio de Microprocesadores I Ing.

Roger Guachalla Narváez

5. Programación en C con MikroC PRO for PIC


5.1 Objetivos
 Realizar un resumen de la sintaxis del lenguaje C con el compilador MikroC PRO for PIC
 Conocer la creación de proyectos con el entorno de Desarrollo Integrado (IDE) MikroC
 Realizar la Edición, Compilación y Depuración de un programa en el IDE MikroC
 Realizar ejemplos de manejo de puertos digitales a través de un Dado y una Ruleta electrónica

6.1 Sintaxis básica del lenguaje MikroC


La programación en el compilador MikroC se basa en PROYECTOS. Cada proyecto está conformado por
un conjunto de archivos interrelacionados entre sí y almacenados en un folder. Para escribir un
programa primero se debe crear un Proyecto donde se seleccionan el tipo de microcontrolador, la
frecuencia de operación y se establecen los bits de configuración; a continuación se procede a escribir
las instrucciones del programa en lenguaje C (código fuente); y por último, al compilar el código, se
genera el código hexadecimal .HEX, el cual contiene el código ejecutable que será almacenado en la
memoria de programa del microcontrolador.
6.2 Estructura básica de un programa en mikroC PRO
Todos los programas (código fuente) de microcontroladores PIC en C tienen una estructura básica, a
partir de la cual se desarrolla cualquier aplicación del usuario:
//Declaración de variables
...
//Función principal
void main() {
//Instrucciones del programa
...
}
En el código anterior se debe entender lo siguiente:
 Las líneas que comienzan con ‘//’ son sólo comentarios que no son necesarios, pero sí son muy
importantes para documentar (informar) acerca del significado de este código.
 La declaración de variables se hace donde aparecen los puntos suspensivos ... (normalmente la
mayoría de programas que son de alguna utilidad práctica tienen variables, por lo tanto, se debe
hacer la declaración correspondiente).
 Las instrucciones del programa (las instrucciones que va a ejecutar o realizar el
microcontrolador) se colocan dónde van los puntos suspensivos ... (dentro de la función main)

6.3 Elementos básicos de la programación de PIC en C


El propósito de la mayoría de los programas es resolver un problema. Los programas resuelven los
problemas por medio de la manipulación de información o datos.
Normalmente los programas se caracterizan por permitir el ingreso de datos, tener uno o varios lugares
de almacenamiento de dichos datos, contar con las instrucciones para manipular los datos y obtener
algún resultado del programa que sea útil para el usuario.

Ing. Roger Guachalla Narváez 1


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

También, las instrucciones se pueden organizar de tal forma que algunas de ellas se ejecuten sólo
cuando una condición específica (o conjunto de condiciones) sea verdadera, otras instrucciones se
repitan un cierto número de veces y otras pueden ser agrupadas en bloques que se ejecutan en
diferentes partes de un programa.
Lo anterior constituye una breve descripción de los siete elementos básicos de la programación: entrada
de datos, tipos de datos, operaciones, salida, ejecución condicional, lazos y funciones.

6.4 Instrucciones básicas de MikroC para PIC


6.4.1 Instrucción de asignación =
Permite asignar a una variable un valor constante, el contenido de otra variable o el resultado de una
expresión matemática. La asignación va de derecha a izquierda.
Por ejemplo:
suma=0; //El valor 0 se almacena en la variable suma
x0=x1; //El contenido de la variable x1 se almacena en la variable x0
dx=(b-a)/n; //El resultado de la expresión matemática se almacena en dx

6.4.2 Instrucción de configuración de puertos TRISx como Entrada o Salida


Donde x, se refiere al puerto del microcontrolador (RA, RB, RC, RD o RE). El registro TRIS indica si el
puerto será de Entrada o Salida. Al poner Ceros en los bits de TRIS, los correspondientes bits del
puerto serán de Salida y al poner Unos, los bits del puerto serán de Entrada.
Ejemplos:
TRISB=255; //RB será de Entrada (255 equivale a 11111111 en binario)
TRISC.F2=0; //El bit 2 del puerto RC será de Salida
TRISD=0x0F; //El nibble inferior de RD es Entrada y el superior es Salida

6.4.3 Instrucción de entrada de datos por puerto PORTx


Permite el ingreso de datos a través de los puertos del microcontrolador y almacenarlos en una o más
variables.
Ejemplos:
var=PORTA; //Los bits del puerto A se almacenan en var
LATB=PORTA; //Los bits de RA se envían hacia los pines de RB
También se puede leer el estado individual de cada bit de un puerto usando cualesquiera de las
siguientes instrucciones:
variable=PORTB.F3; //Leer el pin RB.3 y guardar en la variable
variable=RB3_bit;

6.4.4 Instrucción de salida de datos por puerto LATx


Permite el envío de datos, el contenido de una variable o el resultado de una expresión matemática
hacia los pines de un puerto.
Ejemplos:
LATA=0x00; //Todos los pines del puerto RA se ponen en 0
LATB=var; //El valor de var sale por el puerto RB
LATB=LATA+65; //El valor del puerto RA más 65 se envía hacia el puerto RB

Ing. Roger Guachalla Narváez 2


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

También se pueden poner a 1 o 0 bits individuales de un puerto usando las siguientes instrucciones:
LATB.F0=0; //El pin 0 del puerto RB se pone en 0
RB0_bit=0;

6.4.5 Instrucción de decisión if...else (si … entonces)


Permite la ejecución de las instrucciones1 si la condición es verdadera, de lo contrario se ejecutan las
instrucciones2. Las llaves { } no son necesarias cuando hay una sola instrucción.
if (condición) {
instrucciones1;
} else {
instrucciones2;
}

Ejemplo A: Si el contenido de la variable ‘codigo’ es igual al contenido de la variable ‘clave’, se


ejecutan las primeras cuatro instrucciones; de lo contrario se ejecutan únicamente las dos últimas
instrucciones.
if (codigo==clave) {
intentos=0;
RA7_bit=1;
Delay_ms(1000);
RA7_bit=0;
} else {
intentos++;
Delay_ms(200);
}

Ejemplo B: Instrucción de decisión sin ‘else’. Esta es una variante muy utilizada cuando se desea
condicionar la ejecución de un grupo de instrucciones. Las dos instrucciones se ejecutarán únicamente
si la variable ‘contador’ es igual a 2, de lo contrario la ejecución continúa a partir de la línea //Aquí
if (contador==2) {
RB6_bit=~RB6_bit;
contador=0;
}
//Aquí

Ejemplo C: Similar al caso anterior, pero con una sola instrucción. Si la variable ‘horas’ es igual a 24
se asigna a esta variable con un valor de cero.
if (horas==24) horas=0;

Nota: Las condiciones se obtienen por medio de los operadores de relación y los operadores lógicos.
 Operadores de relación:
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual a (nótese la diferencia con el operador de asignación =)
!= No es igual a

Ing. Roger Guachalla Narváez 3


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

 Operadores lógicos booleanos:  Operadores lógicos bit a bit:


(devuelven un bit: 1 o 0) (devuelven un byte: 0 a 255)
&& Y (AND) & Y (AND)
|| O (OR) | O (OR)
! No (NOT) ~ No (NOT)

6.4.6 Instrucción de ciclo controlado for (para)


Permite ejecutar un grupo de instrucciones de manera repetitiva, una determinada cantidad de veces.
for (expresión de inicio; expresión de condición, expresión de cambio) {
instrucciones;
}

Ejemplo D: La variable ‘i’ tiene un valor inicial de 7 (i=7) y un valor de condición final de 1
(i>=1). Esta variable va disminuyendo de 1 en 1 (i--). Por lo tanto, las dos instrucciones se ejecutarán
en 7 ocasiones. La primera vez cuando i=7, la segunda cuando i=6, la tercera cuando i=5 y así
sucesivamente hasta la séptima vez cuando i=1. Luego la ejecución continúa en //Aquí
for (i=7; i>=1; i--) {
PORTB=PORTB<<1;
Delay_ms(500);
}
//Aquí

Ejemplo E: El valor inicial de var es 1 y su valor final es 3. La variable var se va incrementando de 1


en 1 (var++). Por lo tanto, la instrucción se ejecuta tres veces, lo que da como resultado un retardo de
3 segundos. Luego la ejecución continúa en //Aquí
for (var=1; var<=3; var++)
Delay_ms(1000);
//Aquí

6.4.7 Instrucción iterativa while (mientras)


Permite ejecutar un grupo de instrucciones de manera repetitiva, mientras una condición sea
verdadera. Primero se revisa la condición para determinar su valor de verdad (verdadero o falso) y
luego se ejecutan las instrucciones.
while (condición) {
instrucciones;
}

Ejemplo F: La ejecución del programa permanece indefinidamente en esta línea mientras el bit
menos significativo del puerto RB sea igual a cero (Falso). Como caso particular no se ejecuta ninguna
instrucción (la cual debería estar antes del punto y coma).
while ( !PORTB.F0 ) ;

Ejemplo G: Ejemplo de un lazo infinito. En MikroC, cualquier valor distinto de cero se considera
VERDADERO, y un valor igual a cero se considera FALSO. Al valor en RA se le suma 65 y el resultado se
envía hacia RB. Este proceso es infinito ya que la condición siempre es verdadera (1).
while (1)
LATB=PORTA+65;

Ing. Roger Guachalla Narváez 4


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

Ejemplo H: Las cuatro instrucciones encerradas por { } se ejecutarán indefinidamente mientras el


valor del bit RD7 sea igual a 1 (Verdadero).
while (PORTD.F7) {
RB1_bit=1;
Delay_ms(500);
RB1_bit=0;
Delay_ms(200);
}

6.4.8 Instrucción iterativa do...while (hacer…mientras)


Permite ejecutar un grupo de instrucciones de manera repetitiva, mientras la condición sea verdadera.
La diferencia con ‘while’ es que primero se ejecutan las instrucciones y luego se revisa la condición.
do {
instrucciones;
} while(condición);
Nota: A diferencia de ‘while’, en ‘do...while’ las instrucciones se ejecutan por lo menos una vez.
Ejemplo I: La variable tipo byte ‘kp’ tiene un valor inicial de cero (FALSO). La instrucción kp++; se
ejecuta y luego se revisa la condición (kp). Mientras kp sea distinto de cero la condición será
VERDADERA. Como resultado se tendrá un lazo infinito mientras la variable kp sea verdad (distinto de
cero). Cuando la variable kp llegue nuevamente a cero, la condición será FALSA (después de 256 ciclos)
y la ejecución continuará en la línea //Aquí
char kp=0;
do
kp++;
while (kp);
//Aquí

Ejemplo J: La instrucción Xval++; se ejecutará infinitamente mientras ‘valor’ sea diferente a 1.


valor=0;
do {
Xval++;
}while (valor != 1);

6.4.9 Instrucción de selección switch … case (revisar … caso)


Ejecuta de un grupo de instrucciones de varios grupos posibles, dependiendo del valor de una variable.
switch (var) {
case 1: instrucciones1; break;
case 2: instrucciones2; break;

default: instrucciones_por_omision;
}
Si la ‘var’ es igual a 1 se ejecutan únicamente las instrucciones1, si es igual a 2 se ejecutan únicamente
las instrucciones2 y así sucesivamente. Si la variable no es igual a ninguno de los casos (case) entonces
se ejecutan las instrucciones_por_omision (default).

Ing. Roger Guachalla Narváez 5


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

Ejemplo K: Si ‘digito’ es igual a 0, ‘valor’ es 0x3F. Si ‘digito’ es igual a 1, ‘valor’ es 0x06. Si


‘digito’ no es 0 o 1 entonces valor será 0.
switch (digito)
{
case 0: valor=0x3F;
case 1: valor=0x06;
default: valor=0;
}

6.5 Tipos de datos en MikroC


Debido a la limitada cantidad de memoria de código (32 kB Flash ROM) y de datos (2 kB SRAM) que
dispone el microcontrolador PIC18F4550, es importante optimizar el tipo de datos en los proyectos.

6.6 Detalles importantes de MikroC


En la programación de PIC en C existen pequeños detalles que se deben tener muy en cuenta y que
permitirán que los programas realizados cumplan las tareas para los cuales fueron diseñados.
 Los comentarios de una sola línea se inician con la doble barra diagonal //
 Los comentarios de varias líneas (o de bloques) inician con /* y terminan con */
 Los signos de agrupación siempre deben estar en pareja, es decir si hay tres llaves de apertura {{{,
debe haber tres llaves de cierre correspondientes}}}. Lo mismo ocurre con los paréntesis ( )
 Los números hexadecimales se escriben comenzando con 0x, por ejemplo, 0x0A, 0x16, 0xFD, etc.
 Los números binarios se escriben comenzando con 0b, por ejemplo, 0b001110, 0b11101111, etc.
 Los números decimales se escriben sin ningún símbolo adicional, por ejemplo 64, 126, 12.75, etc.
 No se debe confundir el operador de asignación = con el operador de comparación igual ==
 El punto y coma ‘;’ indica el final de una instrucción, por lo tanto, se debe tener en claro su uso.
Ejemplo: for(i=0; i<5; i++); no es un bucle de 5 repeticiones debido al ‘;’ al final.
 Las llaves { } no son necesarias en aquellos casos en los que únicamente se va a ejecutar una sola
instrucción.
 Todo programa en mikroC debe tener una función principal main, y su nombre no debe ser
cambiado.
 Si se requiere ayuda referente a una instrucción o función de librería, en MikroC basta con escribir
el nombre de la instrucción o función y, con el cursor dentro de texto escrito, presionar la tecla F1.
Esto nos llevará a la ventana de Ayuda donde, además de una explicación detallada se tiene
también un ejemplo de código y esquemático.

Ing. Roger Guachalla Narváez 6


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

6.7 Compiladores de la empresa Mikroelectronika

Mikroelektronika (www.mikroe.com) es una empresa europea que desarrolla compiladores en


lenguajes C, Basic y Pascal para los procesadores: PIC (8bit), DsPIC/PIC24 (16 bit), PIC32 (32 bit), ARM
(32 bit), AVR (8 bit), FT90x (32 bit) y 8051 (8 bit).
A lo largo de las siguientes guías, se usará el compilador MikroC Pro for PIC v.7.5.0

El Entorno de Desarrollo Integrado (IDE) incorpora el compilador C, diversas herramientas de


programación, un depurador por software, Librerías predefinidas y un sistema de Ayuda muy extenso.
Del sitio web se puede descargar la última versión de este compilador. La versión gratuita y
demostrativa es totalmente funcional y completa. Solo cuando el tamaño del código excede los
2KBytes aparecerá en la ventana de Mensajes ‘Demo Limit’, indicando que se ha superado el tamaño
permitido en la versión demostrativa.
En este caso se debe proceder a parchar el programa para acceder al total de la memoria ROM Flash
del PIC18F4550.

6.8 EJEMPLO A: Creación del primer PROYECTO ‘Led’ con MikroC Pro for PIC
6.8.1 Enunciado
Para demostrar el desarrollo de proyectos con MikroC, se iniciará con el proyecto más simple
posible que consiste en hacer parpadear infinitamente, cada ¼ segundo, 8 leds conectados a un
puerto del PIC18F4550.

6.8.2 Diagrama en Bloques

Ing. Roger Guachalla Narváez 7


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

6.8.3 Flujograma

6.8.4 Diagrama esquemático para simulación

Ing. Roger Guachalla Narváez 8


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

6.9 Procedimiento de creación del proyecto ‘Led’ con MikroC Pro for PIC

a) Iniciar el IDE
b) Cerrar cualquier proyecto previo: ‘Project – Close Project’
c) Crear un nuevo Proyecto: ‘Project – New Project’. El ‘New Project Wizard’ se iniciará.
d) En ‘1. Tipo de Proyecto’, seleccionar `Proyecto Estándar` y hacer click en

e) En ‘2. Configuración del Proyecto’: llenar los datos como indica la figura y luego presionar
. Si se va a programar el microcontrolador con el USB Bootloader entonces NO ACTIVAR
la opción ‘Open Edit Project window to set Configuration bits’.

Nota: Siempre se debe crear un folder diferente para cada nuevo proyecto. Un error común es
crear un proyecto dentro del folder actual lo que tiene como resultado que los archivos se
desordenen y se hace necesario cerrar el proyecto y comenzar uno nuevo.

Ing. Roger Guachalla Narváez 9


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

f) En ‘3’ Añadir archivos’: Si se disponen de librerías del usuario adicionales se pueden agregar en
este punto. Las prácticas de laboratorio no incluyen dichos elementos por lo que basta con

presionar

g) El Wizard ha terminado y MikroC genera la plantilla para iniciar todos los proyectos en C:

h) Aunque el código aún no ha sido escrito, ir al menú ‘File – Save’ para grabar el archivo (con
extensión .c) y en la ventana emergente hacer click en Guardar.

i) Escribir el primer programa ‘Led.c’

Ing. Roger Guachalla Narváez 10


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

j) Compilar el programa seleccionando del menú ‘Build – Build ‘(también se puede digitar
Ctrl+9 o hacer click en el ícono)

k) En la ventana de Mensajes (parte inferior de la pantalla) aparecerá el resultado de la compilación.


En caso de no existir errores, indicará un mensaje de Compilación Exitosa (se genera el archivo
.hex en el folder del proyecto), así como el tamaño en ROM y RAM del código resultante. Si
existen errores de sintaxis se indicarán en líneas rojas indicando el número de línea y el tipo de
error. En el editor se mostrarán las líneas de código donde se encontraron los errores de sintaxis.

l) Para subir el código al microcontrolador usando el Bootloader USB, seleccionar del menú ‘Tools
– USB HID Bootloader’ y proceder como se explicó en la guía P04.
m) Armar el Circuito Mínimo con PIC18F4550 (descrito en la guía P04) y añadir 8 leds cada uno con
una resistencia de 220 Ohm al puerto RB del PIC18F4550
n) Finalmente, después de esperar 3 segundos para que el Bootloader deje de funcionar, se
observarán los 8 leds parpadeando cada ¼ segundo.

Ing. Roger Guachalla Narváez 11


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

6.10 EJEMPLO B: Creación y Depuración del proyecto ‘ALU’


6.10.1 Enunciado
Codificar y Depurar un programa, en MikroC Pro for PIC, que simule una Unidad Aritmético
Lógica (ALU) con 2 entradas Dato A y Dato B de 3 bits cada una, una Salida de 8 bits y un
selector de Operación de 2 bits con la posibilidad de realizar las siguientes operaciones:

Operación Salida
00 Dato A + Dato B
01 Dato A - Dato B
10 Dato A * Dato B
11 Dato A / Dato B
6.10.2 Diagrama en bloques

6.10.3 Flujograma

Ing. Roger Guachalla Narváez 12


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

6.10.4 Código fuente MikroC

6.10.5 Diagrama esquemático - Simulación Proteus

Componentes
Proteus:

Ing. Roger Guachalla Narváez 13


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

6.10.6 Diagrama esquemático – Armado en protoboard

6.10.7 Depuración del código


a) Crear el proyecto ‘Alu’, compilar y corregir los errores de sintaxis (si los hubiera)
b) Del menú y seleccionar ‘Run – Start Debugger’ (o presionar la tecla F9)
c) La disposición de ventanas cambia y se observan dos nuevas: ‘Watch Values’ y ‘Watch Clock’.
La primera permite revisar variables y registros y la segunda monitorear los tiempos de ejecución
del programa. Note además la línea azul sobre la primera instrucción a ejecutarse.

Ing. Roger Guachalla Narváez 14


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

d) En la ventana ‘Watch Values’ hacer click en la flecha en la línea ‘Select variable from
list’
e) De la lista emergente seleccionar el registro TRISB (para un acceso más rápido digitar la primera
letra del elemento a seleccionar (en este caso ‘T’))
f) Seleccionar TRISB y hacer click en ‘Add’

g) En el área inferior aparece el Nombre del registro, el Valor actual (en binario) y su dirección en la
SRAM (en hexadecimal)

h) Para cambiar la base numérica de visualización, hacer click en la columna ‘Value’. Al aparecer el
pequeño ícono hacer click en este y emerge la siguiente ventana:

Seleccionar la base numérica que se desee y hacer click en ‘OK’

Ing. Roger Guachalla Narváez 15


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

i) Proceder de la misma forma para incluir los siguientes registros y variables:

j) Para ejecutar el programa instrucción por instrucción, seleccionar del menú ‘Run’ y elegir el modo
de Paso (Step) y observar los valores que toman los registros y variables. También es posible
seleccionar el Valor de una variable o registro y modificar su valor actual digitando el nuevo valor
deseado.
Para este ejemplo se usará ‘Step Over’ (Tecla F8) y se ingresará los valores de DatoA, DatoB y
operación modificando el valor de PORTD

k) Para detener la depuración, una vez que se ha comprobado el funcionamiento correcto del
programa, seleccionar la opción ‘Stop Debugger’ del menú ‘Run’
l) Si se realiza alguna modificación al código, se debe volver a compilar el proyecto antes de realizar
una nueva depuración.

Ing. Roger Guachalla Narváez 16


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

6.11 EJEMPLO C: Display de leds de 7 segmentos


Un display de 7 segmentos está conformado por un arreglo de 7 leds que comparten un terminal en
común. En función a esto, se dividen en displays de Ánodo Común (7-Seg AC) y Cátodo Común (7-Seg
CC). Cada segmento posee una notación estandarizada (de ‘A’ hasta ‘G’) adicionalmente se suele
incluir un led adicional para representar el punto (dot).

 Si usamos un display 7-Seg CC manejaremos lógica directa, es decir, el terminal común debe tener
un 0 lógico (conectado a tierra) y para prender cada segmento se requiere un 1 lógico.
 Si usamos un display 7-Seg AC manejaremos lógica inversa, es decir, el terminal común debe tener
un 1 lógico (conectado a VCC) y para prender cada segmento se requiere un 0 lógico.
 El display visualizará los dígitos del 0 al 9 de acuerdo a la siguiente figura:

 Cada dígito se codifica asignando un segmento del display a cada bit de un puerto del
microcontrolador. El punto (dot) no será visualizado. Para facilitar la codificación, se usará la
herramienta en MikroC ‘Tools - Seven Segment Editor’
 Para facilitar la codificación, se usará la herramienta en MikroC ‘Tools - Seven Segment Editor’

Ing. Roger Guachalla Narváez 17


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

 La tabla muestra la codificación para un display 7-Seg CC usando el puerto RB del PIC18F4550:

6.11.1 Diagrama Esquemático

6.11.2 Código fuente MikroC

Ing. Roger Guachalla Narváez 18


Laboratorio de Microprocesadores I Ing. Roger Guachalla Narváez

3.2 Procedimiento de Laboratorio


1ERA Firma:
Modificar el programa del EJEMPLO B: ALU de manera tal que Dato A y Dato B sean de 4 bits. Y
Operación sea de 3 bit pudiendo realizar las siguientes operaciones:
Operación Salida
000 Dato A and Dato B
001 Dato A or Dato B
010 Dato A xor Dato B
011 Dato A
100 Not (Dato A)
101 Dato A ^ 2
110 Dato A * Dato A
111*** Dato A !
***
Para el caso del factorial de Dato A, validar para que el valor máximo sea 5
2DA Firma:
Modificar el programa del EJEMPLO C: Display de leds de 7 segmentos de manera tal que se
muestre en el display el NOMBRE COMPLETO de uno de los integrantes del grupo. Usar el
siguiente alfabeto:

3.3 Informe de Práctica


A. Carátula con la Firmas del DOCENTE y/o AUXILIAR que avalen la realización de la práctica
B. Para la 1ERA y 2DA Firma, realizar: Enunciado, Diagrama en Bloques, Flujograma, Diagrama
Esquemático y Código fuente comentado.
C. TRABAJO DE INVESTIGACIÓN: Lenguaje C
 Reseña histórica del creador del lenguaje C
 Ventajas y desventajas
 Lenguajes derivados del C
 Sistemas Operativos y Programas de Aplicación escritos en C
 El concurso internacional de códigos C ofuscado (
 The International Obfuscated C Code Contest)
http://www.ioccc.org/
Incluir: Enlaces web donde se encontró la información, Impresión de la primera página de cada
enlace, Resumen escrito a mano de un mínimo de 6 páginas.
D. Conclusiones

Ing. Roger Guachalla Narváez 19

También podría gustarte