You are on page 1of 45

Sesin 02: Repaso del lenguaje C

Agenda para la clase


Generalidades del lenguaje de programacin ms popular del mundo.

Directivas del preprocesador Usadas en el lenguaje C.

Operadores, variables estructuras de control Tratamiento , uso, definicin y mbito

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Bibliografa
Bibliografa para la clase Jonathan Valvano, Developing Embedded Software in C Using ICC11/ICC12/Hiware. C for Embedded Systems.
Academia Freescale Semiconductor para Profesores 2004.

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

A continuacin

Generalidades del lenguaje C

Directivas del preprocesador

Operadores, variables y Control

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Generalidades del Lenguaje C


Algunas preguntas sobre C
Qu es el lenguaje C?
Lenguaje de Programacin desarrollado por Dennis Ritchie en 1971 inicialmente para la implementacin de Sistemas Operativos UNIX, Compiladores, Ensambladores, Kernels.

Una de sus mejores caractersticas?


Portabilidad del cdigo en diferentes sistemas Hardware.

Clasificacin del lenguaje C?


Lenguaje de medio nivel: Combina elementos de lenguajes de alto nivel con elementos de lenguajes de bajo nivel. Predomina el Alto Nivel.

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Orgenes del lenguaje C


Dennis Ritchie (Laboratorios Bell) en 1972, cuando trabajaba en el diseo del sistema operativo UNIX, como evolucin del anterior lenguaje B. El C se cre como herramienta para programadores, en consecuencia su principal objetivo es ser un lenguaje til.
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

Orgenes del lenguaje C


El desarrollo de C fue el resultado del deseo de los programadores de jugar
Space Travel en el procesador GE635.

Thompson y Ritchie no tenan suficiente control sobre la nave.


Para evitar colisiones con los asteroides y lo intentaron portar para PDP-7 que era un procesador de prestaciones ms altas. Oh sorpresa, la migracin era un verdadero dolor de cabeza.

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Orgenes del lenguaje C


El PDP-7 no tena SO entonces se vieron forzados a escribir uno. El PDP-11 si contaba con uno. Luego quisieron portar el SO del PDP-11 al PDP7 pero era muy costoso porque estaba en ensamblador. Decidieron usar un lenguaje de alto nivel que permitiera portar el SO consideraron usar B, pero careca de funcionalidades para aprovechar las caracteristicas del PDP-11. As que decidieron crear nuevo lenguaje. (C).

2
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Evolucin del lenguaje C


En 1973, el lenguaje C se haba vuelto tan potente que la mayor parte el Kernel Unix, originalmente escrito en el lenguaje ensamblador PDP11/20, fue reescrita en C. ste fue uno de los primeros ncleos de sistema operativo implementados en un lenguaje distinto al ensamblador.

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Evolucin del lenguaje C

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Generalidades del Lenguaje C


Lenguaje Ensamblador
Una misma aplicacin deber ser diseada para cada procesador si ellos tienen diferentes filosofas de diseo
Algoritmo

Cdigo

Cdigo

Cdigo

Cdigo

ASM x86

ASM ARMv9

ASM m68k

ASM PPC

Cdigo de mquina
INTEL x86
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

ARMv9

m68k

Power PC
2010/1 Universidad de Antioquia 2009/1 2010/1

Juan Franco / Johnny Aguirre

Generalidades del Lenguaje C


Lenguaje C
Una misma aplicacin puede ejecutarse en diferentes procesadores, solo es necesario volverla a compilar
Algoritmo

Cdigo

Comp x86

Comp

Comp

Comp

ARMv9

m68k

PPC

Cdigo de mquina
INTEL x86
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

ARMv9

m68k

Power PC
2010/1 Universidad de Antioquia 2009/1 2010/1

Juan Franco / Johnny Aguirre

Generalidades del Lenguaje C


Algunas preguntas sobre C

Contra : C manipula la Contra: El cdigo generado Por qu se utiliza C? memoria sin laque intervencin puede ser ms grande directa del usuario. si se hace en ASM. Debido a la flexibilidad, se puede ser ms productivo. Pro : Mediante punteros y Pro: Una aplicacin muy Lenguaje pequeo, estructurado, mediano nivel. es haciendo uso del Linker, compleja en ASM es muy Contra: Una mala posible decir a C como difcil de depurar. en C puede Por qu no usar C? implementacin Contra : Las optimizaciones no utilizar la memoria ms acabar con el Contra : Explcitamente, tienen enStack. cuenta el C no Cdigo generado. eficientemente. Contra : C directamente no Pro : Mediante el linker, es permite manipular el mapa de funcionamiento del Hardware. maneja interrupciones. posible modificar enpalabras cierto Asignacin dinmica de memoria. memoria. Pro : Existen Pro: Con algunas directivas se nivel el manejo del Stack. Pro : Existen algunas directivas reservadas para indicarle aC y Uso de la pila. pueden emplear laslinker que parmetros que no lleve adel cabo ciertas interrupciones. Optimizaciones. permiten hacer esto. optimizaciones.

Acceso al mapa de memoria. Interrupciones.


Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

Generalidades del Lenguaje C


Diferencias principales entre Sistema Embebido y computador tradicional.
Memoria RAM limitada. Problema: Sistemas Memoria ROM limitada. embebidos con poca cantidad Espacio para el Stack limitado. de memoria. Pro: Codificacin eficiente Programacin orientada al hardware. usando tipos de datos Problema : Normalmente Manejo de eventos: Interrupciones. pequeos y modos de cuando se programa en C, el Otras. direccionamiento uso del hardware es cortos. problema
del S.O. Pro: Existen alternativas con C para manejar directamente el hardware.
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

Generalidades del Lenguaje C


Ventajas Desventajas
Los compiladores pueden generar programas que demande muchos recursos (Flash y RAM). En algunos casos, las herramientas de compilacin y depuracin son costosas. Errores por parte del compilador. Prdida de control, sobre algunos aspectos de bajo nivel del procesador.
2010/1 Universidad de Antioquia 2009/1 2010/1

Lenguaje estndar. Se puede realizar cdigo estructurado. Ms productivo (se hace ms en menos tiempo). Fcil de comprender. Cdigo reutilizable. Bibliotecas estndar. Portabilidad entre diferentes plataformas. No se requiere un conocimiento profundo de la arquitectura de los procesadores.
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

Mdulo de Programa

Directivas Preprocesador
Declaracin de Variables, prototipos

5 Variables, 4 uso de funciones 3 Funcin main() Obligatoria!!!2 1 Ciclo infinito 0


Atencin a interrupciones
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

Palabras Reservadas

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Operadores

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

A continuacin

Generalidades del lenguaje C

Directivas del preprocesador

Operadores, variables y funciones

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Directivas del preprocesador


#ifndef _MC9S08SE08_H Transforma el cdigo #define _MC9S08SE08_H

a ser compilado de acuerdo a ciertas directivas establecidas. #ifndef __RESET_WATCHDOG #define Todas las directivas empiezan por #. __RESET_WATCHDOG() asm { LDA #$55; STA SRS; Ayudan a tener un cdigo fcil de manejar. COMA; Por conveniencia se escribenSTA en SRS;} maysculas. #endif Eventualmente, pueden ayudar en el uso del #define REG_BASE 0x0000 Mapa de Memoria del MCU.
#pragma MESSAGE DISABLE C1106 #define VectorNumber_IRQ #define VectorNumber_TPM1Ov
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

0xFFFA 0xFFE8
2010/1 Universidad de Antioquia 2009/1 2010/1

Juan Franco / Johnny Aguirre

Directivas del preprocesador


#include <MC9S.h> #include "myfile.h" Hace que en el lugar de la directiva se incluya una copia #define WAIT asm WAIT exacta void main( void) del archivo especificado (cabeceras o headers) #define CLI asm CLI { Uso de headers del CodeWarrior #define NOP asm NOP unsigned char Key; 0x01; #include <MC9S08SE08.h> SOPT1 = #define HIGH_BITS 0xF0 #include <string.h> PORT_Init(); TPM_Init(); void main(void) Uso de headers propios KBI_Init(); #include <MC9S.h> { #include my_file.h unsigned char Key; CLI; #define WAIT asm WAIT Cmo crear un archivo header? SOPT1 = 0x01; for(;;) #define CLI asm CLI PORT_Init(); { #define NOP asm NOP TPM_Init(); WAIT; KBI_Init(); ... #define HIGH_BITS 0xF0 ...
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

Directiva #include

Directivas del preprocesador


Para qu se utilizan los Headers (*.h)
Declaracin de Macros (#define).
#define TRUE 1, #define DespLeft (X,Y) (X) << (Y)

Incluir otros Headers (#include).


#include <MC9S08JM60.h>, #include My_File.h

Definir nuevos tipos de datos (typedef).


typedef unsigned char byte;

Definir prototipos de funciones.


unsigned char Get_Serial_Char (void);

Declarar variables globales en el programa o para un mdulo.


extern unsigned char Flag_ISR;

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Directivas del preprocesador


Directiva #define, #undef
Define macros para usar en el cdigo.
No son constantes ni funciones.

til si hay cdigo repetitivo en el programa. Ejemplos:


#define TIMER_MODULE 768 #define TRUE 1 #define NOP() __asm NOP #define __RESET_WATCHDOG() { asm { LDA #$55; STA SRS; COMA; STA SRS; }} #define DESPLEFT(X,Y) { (X) << (Y) }

Se introducen en los archivos cabecera para usarlas desde diversos mdulo .c


Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

Directivas del preprocesador


Directiva #define, #undef
El preprocesador hace una traduccin literal antes de la compilacin. No se permite tener redefiniciones en el cdigo.
Antes del Preprocesador #define CR 13 WRITE_PORT(CR); X = READ_PORT(); if (X == CR) Despus del Preprocesador
WRITE_PORT(13); X = READ_PORT(); if (X == 13)

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Directivas del preprocesador


Antes del Preprocesador Directiva #ifdef #ifndef, #elif, #else, #endif

#define RUN_MODE DEBUG Compilacin condicional, es decir, de todo el cdigo, solo algunas partes se compilarn si cumplen #if RUN_MODE == DEBUG determinada condicin. Despus del Preprocesador SERIAL_PUTS(Depuracin); Cmo == seSIM utilizan? #elif RUN_MODE SERIAL_PUTS (Sim); til para crear archivos .h. SERIAL_PUTS(Depuracin); #else
SERIAL_PUTS(Versin 1.0, Ok); #endif

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Directivas del preprocesador


Directiva #ifdef #ifndef, #elif, #else, #endif
Antes del Preprocesador // file.h #ifndef MY_FILE_H #define MY_FILE_H 1.0 // Tipos de Datos. // Prototipos. // Macros. // Declaraciones vbles. #endif // file2.h #include file.h
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

#include file.h #include file2.h void main(void) { }

File.h se inserta en el archivo main.c solo una vez, es decir, si no ha sido insertado previamente por el Preprocesador.
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

A continuacin

Generalidades del lenguaje C

Directivas del preprocesador

Operadores, variables y control funciones

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Operadores
Aritmticos
Suma: + Resta: Multiplicacin: * Divisin: / Mdulo: %
Variables a = 10, b = 0x23, h

Suma: h = a + b + 100
Multiplicacin: h=b*a

Resta: h=b-a Divisin: h=b/a

Mdulo: h=b%a
Pos/Pre incremento/decremento: a = b++; h++; ++a; b = ++h h--; b = --a; b = a-Operacin y asignacin: h += a; b /= h; a %= b h *= ++b; h %= (--b)*(a++)

Aritmticos especiales
++, --, +=, -=, *=, /=, %=.

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Operadores
Relacionales: se caracterizan porque evalan una condicin que puede ser verdadera o falsa
Igualdad: == Diferente: != Mayor que: > Menor que: < Mayor o igual que: >= Menor o igual que: <=
Variables x = 5, y = 12, z = 0x00 Igualdad: z = (x==y) Desigualdad: si(z!=x%y)

Mayor/Menor, Mayor/Menor o igual que: z = (x>y); si(z>=++x); x = ((y%10)>x) z = (x<=y); si(z<(x++%y)); si(!(x<=y))

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Operadores
A nivel de bits

Variables a = 0xC0, b = 23, h And: h=b&a Xor: h = (b++)^(a++)

Negada: Complemento a uno: ~ h = ~(a+10) AND: & Or: OR: | h = b | (a + 0x30) XOR: ^ Desplazamiento a la izquierda: << Desplazamiento a la derecha: >>

Desplazamientos izquierda/derecha: a = a<<4; h += ~(a>>2)%b h = (a <= (b>>(h>>2)))

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Operadores
Lgicos
AND: && OR: || NOT: !
Variables a = 0x8E, b = 0x5A, h

And: h = a && b
Not: si(!(b || ~a))

Or: si(a || b)

Otros Operadores:
Tamao de una variable: sizeof Ver o cambiar contenido de memoria: * Direccin de memoria de una variable: & Prueba incondicional: ?:
Otros: h = sizeof(a*b)

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Zona de preguntas
Determine los valores finales de i, j, Z.
#define SUMA(X,Y) ((X)*(Y) + (X) (Y)) unsigned int i = 4, j = 3, Z; Z = SUMA(--i, j++);

NOTAS
Predecremento y postincremento se hacen en cada operacin. Traduccin literal.

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Variables en C
Todos los programas en C
Estn construidos bajo la misma filosofa. Divide y vencers.

Bsicamente
Existen unos datos de entrada o salida. Existen unas funciones que realizan operaciones sobre esos datos.

Los datos en C
Se manejan en su mayora a travs de variables.

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Variables en C
Las variables tienen un tipo de dato asociado.
El tipo de dato habla acerca de la naturaleza de la variable. Almacena un bit, un dato decimal, un nombre de usuario

Las variables tambin ocupan un espacio en la memoria.


Dependiendo de su naturaleza, unas variables necesitarn ms espacio que otras. Los tipos de datos tambin determinan este espacio.
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1 34

Definiciones previas
Las instrucciones requieren de datos y esos datos normalmente estn en memoria. En ensamblador, se accede directamente a memoria con los M.D. 0x10 $00B0
LDA $B0 STA 10,X MOV #$00,$B4
$00B1 $00B2 $00B3 $00B4 $00B5 $00B6 0x12 0x00 0x87 0x95 0xEF 0x11

En alto nivel se emplean:

Memoria 8-Bits

Variables Objetos (Lectura/Escritura) Se declaran con un tipo de dato y modificadores unsigned char X, const long Y;
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

Definiciones previas
Consideraciones en unidades de procesamiento con recursos limitados. Tipo de dato Variable de
Cantidad de Memoria. Rango de valores. Manipulacin del lenguaje.
LDA $40, LDHX $41 STHX $43, STXH $45
$00B0 Variable de $00B1 $00B2 16 bits $00B3 Variable de $00B4 32 bits $00B5 $00B6

8 bits

0xA0 0x20 0x1F 0xE2 0x33 0x48 0x1D

Modificadores
Le indican al lenguaje como manipular las variables Optimizacin, modificacin, etc.
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

Definiciones previas
Tipos de Datos.
Tipo de dato de cada variable: Define el rango de valores que puede tomar. Memoria!!! Estrechamente relacionado con el manejo de la memoria. Todo lo que se maneja en C es Memoria. Recuerde que, un CFv1 maneja de manera eficiente operaciones de 8, 16 y 32 bits, no las de 64 o ms. No olvide: los valores de las variables son finitos.

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Definiciones previas
Recomendaciones
Tipo de dato lo ms pequeo posible. Operaciones sin signo. Realizar casting: Cambiar tipo de dato en ejecucin.
Destino = (tipo de dato)Fuente

memoria 0x87 $0043 unsigned long B = 0x8795EF11; unsigned char X, Y; 0x95 innecesariamente,$0044 0xEF unsigned int int Z X; = 200, Y = 1000 ; se expande $0045 unsigned solo 0x11 $0046 Tipo de Dato Variable y Valor Ini. es necesario unsigned X // =; 200 , Y =cuando 1000; puede long Z Z = X * Y; int Un MCU HC08 hacer esta operacin Memoria 8-Bits unsigned Z; Z = X * Y; long // // Ya que el MCUMul HC08 lo= hace, sin problemas. 8b no * 8b 16b el comp. falla Z = (unsigned long) X * Y; // El comp. V6.0 los ms pequeos (unsigned long ) Y;extiende // Se promocionan ambas
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

unsigned En lo posible, no tipos de datos$0040 flotantes (float) ni 0x10 char X usar = 0x10; 0x12 $0041 dobles (double). Evita gastar unsigned int A = 0x1200; 0x00
$0042

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Tipos de datos
El tipo determina el espacio en memoria
TIPO DATO char (unsigned) signed char FORMATO 8 Bits 8 Bits MIN 0 -128 MAX 255 127

unsigned char signed short


unsigned short signed int unsigned int signed long unsigned long

8 Bits 16 Bits
16 Bits 16 Bits 16 Bits 32 Bits 32 Bits

0 -32768
0 -32768 0 -2147483648 0

255 32767
65535 32767 65535 2147483647 4294967295

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Tipos de datos
La instruccin typedef permite crear nuevos tipos de datos typedef tipos_datos_existentes nuevo;
Crear un tipo de dato para manejar valores de 8 bits sin signo llamado byte Crear un tipo de dato para manejar valores de 16 bits sin signo llamado word Crear un tipo de dato para manejar valores de 32 bits sin signo llamado dword

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Estructuras de Control
if, else if, else
if (condicion_evaluar) instruccin; else if (condicion_evaluar2) instruccin; else instruccin;
if (condicion_evaluar) { varias_instrucciones; } NOTAS Si condicion_evaluar es diferente de cero, condicin verdadera. Si no se usan { } entonces solo se permite una instruccin. Tanto el else if como el else pueden omitirse.

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Estructuras de Control
switch
switch (expresin) { NOTAS case Val1: Fin del case Val1 No se colocan { } en Instrucciones; cada case. break; Cada case debe case Val2: con break. Fin del case finalizar Val2 case Val3: y Val3 El caso por defecto se Instrucciones; emplea con default break; El break puede omitirse Fin del case default: en el bloque default. default Instrucciones; break; }
Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III
Juan Franco / Johnny Aguirre 2010/1 Universidad de Antioquia 2009/1 2010/1

Est. Control de Flujo


Mientras, haga mientras NOTAS Si condicion es while (condicion) diferente de cero, Instruccin; do ... while while do (condicion) {{ Declaraciones; Declaraciones; Instrucciones; Instrucciones; }} while (condicion);

condicin verdadera. Si no se usan { } entonces solo se permite una instruccin. Si al comienzo, la condicin es 0, el while no se ejecuta. Ciclo dowhile, se ejecuta mnimo una vez.
2010/1 Universidad de Antioquia 2009/1 2010/1

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

Est. Control de Flujo


Ejemplo for unsigned char x; for (x=100; x>0; x--) { Instrucciones; }

x=100
x>0 Instrucciones x=x-1
Sgte. Sentencia al for

x
x == 0

Circuitos Digitales Sistemas Embebidos Circuitos Digitales III III

Juan Franco / Johnny Aguirre

2010/1 Universidad de Antioquia 2009/1 2010/1

Fin de la sesin

You might also like