Sie sind auf Seite 1von 35

EXPLICACIN A CERCA DEL CONTENIDO Este manual este estructurado en tres partes: la primera parte trata sobre la programacin

en lenguaje C de una manera generalista. La segunda parte trata sobre la programacin en C en el IDE (Integrated development Enviroment) de arduino ms una parte de prcticas con un shield creado para llegar a controlar una maqueta de un cruce regualdo por semforos y un tren que simula el funcionamiento de un montacargas. La tercera parte de este manual trata sobre la programacin ms directa del microcontrolador que lleva arduino, de nuevo a travs del puerto serie, pero por medio del Visual studio 5. Ademas se aporta el guin para la realizacin de las practicas del cruce de semforos y la maqueta de trenes Por ltimo, se aporta diversas soluciones a las practicas.

PARTE 1 PARTE 1: PROGRAMACIN GENERALISTA EN C 1.1. PRIMEROS PASOS En este captulo exponemos aspectos fundamentales bsicos de la programacin en C de una manera generalista para posteriormente hacer ms fcil la comprensin de la programacin con Arduino y Avr

1.1.1 ESTRUCTURA DE UN PROGRAMA DIRECTIVA DE PREPROCESADOR Directiva de preprocesador es un comando de Preprocesador de C (la cual se invoca en el primer paso de compilacin del programa) las dos ms importantes directivas de preprocesador son la directiva #define, la cual sustituye texto por un identificador especifico y la directiva #include, la cual incluye texto de un archivo externo dentro de un programa.

DECLARACIN Una declaracin establece nombres y atributos de variables, tambin establece las funciones usadas en los programas. Las variables globales se declaran al principio del programa y las variables locales se declaran dentro de la funcin en la que se usan

DEFINICIN Una definicin establece el contenido de una variable o funcin. Una definicin asigna el espacio necesario para las variables y funciones EXPRESIN Una expresin es una combinacin de operadores y operandos a las que asigna un valor simple

SENTENCIA Las sentencias controlan el flujo u orden de ejecucin del programa FUNCION

Es una coleccin de declaraciones, definiciones, expresiones y sentencias que se lleva a cabo una tarea especfica. Las funciones vienen encerradas entre llaves. Las funciones no pueden ser anidadas. FUNCIN MAIN Todos los programas contienen la funcin main, donde se ejecuta el programa, las llaves que encierran la funcin main son las que delimitan donde empieza y termina el programa. 1.1.2 COMPONENTES DE UN PROGRAMA DE C. PRIMER PROGRAMA EN C

Todos los programas contienen componentes esenciales como funciones y sentencias. Las sentencias son partes del programa que desempean operaciones actualizadas. Todos los programas de C contienen una o ms funciones. Las funciones son subrutinas, cada una de las cuales, contienen sentencias y se pueden llamar por otras partes del programa. Cuando escribimos un programa las sangras, las lneas en blanco y los comentarios los hacen ms comprensibles. No solo para que el autor los comprenda pasado un tiempo, si no para que puedan ser entendibles por los dems. Ilustramos el programa tpico llamado hello world que se usa para comprobar que el compilador, hardware y dems, funcionan correctamente, con este programa solo obtenemos una salida por pantalla Hello world # include <studio.h> /*My 1st C programe*/ main void () { printf(Hello world); } La sentencia #include <studio.h> le dice al compilador que incluya el cdigo fuente dentro del programa desde el archivo <studio.h> El archivo studio es sinnimo de header file. Un header file contiene informacin acerca de funciones estndar que se usan dentro del programa. Al archivo header studio.h se le llama STandarD Inputs and Outputs. Contiene muchas funciones de entrada y salida. Solo es necesario en nuestro programa usar archivos include que pertenezcan a funciones de librerias estndar /*My 1st C programe*/ Es un comentario en C todos los comentarios son precedidos por /*y terminados por */ los comentarios son eliminados por el compilador y adems no afectan la velocidad o longitud del cdigo compilado Todos los programas tienen una funcin principal llamada main() este es el punto de entrada del programa. Todas las funciones tienen el mismo formato:

nombre_de_la_funcin () { cdigo } Las sentencias dentro de una funcin se ejecutan secuencialmente, empezando con la que est ms prxima a la llave abierta y terminando por la ms lejana. Los parntesis { y } muestran el empiece y final de una funcin. Finalmente la sentencia printf(Hello world); representa una sentencia tpica de programacin en C . Casi todas las sentencias en C terminan con punto y coma (;).El carcter de fin de lnea no es reconocido en lenguaje C. No hay restricciones en la posicin de las sentencias en una lnea ni en el nmero de sentencias por lnea.

Todas las lneas de cdigo tienen un punto y coma (;) al final para informar al compilador que ha alcanzado el final de la sentencia. La no inclusin de esto nos dar un error en la siguiente lnea. La excepcin de esto es el comando if donde el punto y coma deber estar incluido al final de la siguiente lnea.

MAIN() Todos los programas tienen que tener una funcin main, la cual puede aparecer solo una vez. Dentro de los parntesis al definir la funcin no se deben poner parmetros. Como main est clasificado como funcin el cdigo debe de ir dentro de llaves: main() { cdigo } #INCLUDE El archivo header (denotado por la extensin .h) contiene informacin de las libreras tales como los argumentos que las funciones aceptan o cuales argumentos devuelve la funcin Esta informacin es usada por el compilador para linkar todo el hardware especfico y fuente de programas juntos #include <thisfile.h>

De esta manera estamos indicando al preprocesador que mire en otro directorio Probablemente notes que la directiva #include no tiene punto y coma al final, la razn es porque #include no es una palabra clave de C, pero en vez de esto es una instruccin para el compilador. El todo de el archivo include es insertar el archivo fuente en la etapa de compilacin PRINTF FUNCIN Printf es una funcin de librera estndar que esta dentro de la librera stuio.h, permite al programador hacer salidas por pantalla. El formato general es: printf(cadena de control, lista de argumento); La cadena de control es una cadena con comillas en cada extremo, dentro de esta cadena podemos usar una combinacin de letras, nmeros y smbolos. A los Smbolos especiales se les llama formato especfico se denotan por % La cadena de control debe estar siempre presente en la funcin printf La lista de argumento puede no estar presente en la funcin printf si no hay formato especfico en la cadena de control. La lista de argumento puede estar compuesta de variables o constantes Los siguientes ejemplos muestran sentencias printf usando variables y constantes printf(hello world!) printf(yo soy %d!,1); El formato especifico %d depende del tipo de dato que se muestre. La siguiente tabla muestra el formato especfico en c y el tipo de dato que afecta Formato especifico %c %uc %s %d %f %e %g %u %x %p %o 1 Printf Single Carcter Unsigned carcter String Signed decimal integer Floating ( debe incluir coma decimal) Floating point (cientfico o notacin exponencial) Floating point Unsigned decimal integer Unsigned decimal integer Pointer Unsigned octal interger Prefijo usado con

NOTA: Un 0 (cero) cuando sigue a un % con un formato string fuerza a imprimir ceros a la izquierda. El nmero siguiente especifica el ancho del campo de impresin

printf(El hexadecimal de 12 es %02x\n, 12); Se imprimira El hexadecimal de 12 es 0C

VARIABLES Una variable es una localizacin especfica de memoria. En esta porcin de memoria se pueden retener varios valores dependiendo de cmo est declarada la variable, En C todas las variables tienen que ser declaradas antes de ser usadas. Una variable declarada le dice al compilador que tipo de variable est siendo usada. Todas las declaraciones de variables son sentencias y por lo tanto deben tener al final un punto y coma . Hay cinco tipos de variables en C, char , int ,float,double, void, el formato general es: Tipo nombredelavariable;

Un ejemplo de declaracin de variable es char, que el compilador entiende que es una variable sin signo entera de 8 bit CONSTANTES Una constante es un valor fijo que no puede ser cambiado por el programa, por ejemplo 25 es una constante, las constantes enteras son nmeros sin ningn componente fraccionario, tales como 100 o -40, las constantes de punto flotante requieren coma decimal seguido de la componente fraccional. 476,45 es una constante con coma flotante, Los caracteres constantes se usan entre comillas tales como A o &

Cuando el compilador encuentra una constante en tu programa. El decide qu tipo de constante es. El compilador, ajusta por defecto al tipo de dato ms pequeo, por eso 15 es un int 64000 es un unsigned y 105020 es un long. Una constante es declarada usando una sentencia #define #define< etiqueta> valor Etiqueta define el nombre que t usars en tu programa y valor, el valor que tu asignas a <etiqueta> #define TRUE 1 #define pi 3,141592 C permite definir constantes en formato hexadecimal y octal. En hexadecimal las constantes estn precedidas de 0x como por ejemplo 0XF4

COMENTARIOS Los comentarios son usados para dar significado y operacin al cdigo fuente. Todos los comentarios son ignorados por el compilador. Un comentario puede ser emplazado a cualquier parte de un programa de C excepto en mitad de una palabra clave. Los comentarios pueden usar muchas lneas y podran ser usados tambin temporalmente en vez de lneas de cdigo. Los comentarios tienen dos tipos de formatos el primero es /*comentarios*/ y el segundo es //comentarios FUNCIONES Las funciones son los bloques ms bsicos de construccin de un programa en C. Todos los programas en C contienen al menos una funcin que ser la funcin main(), muchos de los programas que tu escribirs en C contendr ms de una funcin. El formato de un programa en C con muchas funciones es:

main(){

} funcion1() { cdigo } funcion2() { cdigo } Main es la primera funcin llamada cuando el programa se est ejecutando. Las dems funciones funcion1 y funcion2 sern llamadas por alguna funcin dentro del programa Tradicionalmente main() no es llamada por otra funcin

PALABRAS CLAVE O PALABRAS RESERVADAS El cdigo ANSI C consta de 32 caracteres para usar en lenguaje C. ciertas palabras estn reservadas para el uso del compilador para definir los tipos de dato o para usar en bucles Ciertos compiladores de C tienen reservadas palabras para hacer la programacin ms fcil e intuitiva: A continuacin damos una lista de estas palabras clave

auto break case char cosnt continue default do double

else enum extern float for go to if int long

register return short signed sizeof static struct switch typedef

union unsigned void volatile while

Pasamos a entrar ms en detalle de cada uno de los apartados que se vieron anteriormente 1.3. VARIABLES

Uno de los principales aspectos de C es como se almacenan los datos. En este captulo examinaremos ms estrechamente como se almacenan los datos. 1.3.1 TIPOS DE DATOS En C existen 5 tipos de datos y cuatro modificadores.

Tipo Carcter integer Float double Void Signed Unsigned Long short

Significado caracteres Nmeros enteros con signo Nmeros en coma flotante Nmeros con doble precisin en coma flotante Vacio Positivo o negativo Solamente positivo Doble de la longitud de un nmero Mitad de la longitud de un nmero

Palabra clave char int float double Void signed unsigned long short

Cada uno de los tipos de datos representan unos particulares rangos de nmeros, los cuales pueden cambiar dependiendo de los modificadores que usemos. La siguiente tabla muestra los posibles rango de valores para todas la posibles combinaciones de tipos de datos y modificadores Tipo de variable Bit Char Unsigned char Signed char Int Unsigned int Short int Unsigned short int Long int Unsigned long int Float Nmero de bits 1 8 8 8 16 16 16 16 32 32 32 rango 0a1 -128 a 127 0 a 255 -128 a 127 -32768 a 32767 0 a 65535 -32768 a 32767 0 a 65535 -2147483648 a 2147483647 0 a4244967295 3,4 10-38 a 3,4 1038

Doubl Long doubl 1.3.2

64 80

1,7 10-308 a 1,7 10 308 3,4 10 -4932 a 3,4 10 4932

DECLARACIN DE VARIABLES

Las variables pueden ser declaradas de dos formas bsicas. En una funcin o fuera de todas las funciones. Se llaman locales o globales respectivamente. Las variables son declaradas con la siguiente nomenclatura. tipo nombre_de_la_variable; donde tipo es alguno de los tipos de datos del lenguaje C y nombre_de_la_variable es el nombre de la variable. Las variables locales solo pueden ser usadas por las sentencias de las funciones donde fueron declaradas No se puede acceder al valor de las variables locales por funciones donde no fueron declaradas. Lo ms importante que debes de saber sobre las variables locales es que son declaradas a la entrada de la funcin y destruidas cuando se sale de ella Se acepta que las variables locales puedan ser usadas en diferentes funciones con el mismo nombre. Ejemplo de programa

#include <stuido.h> void f2 (void){ int contador; for(contador=0; contador<10;contador++){ printf(%d \n, count); }

f1() int count for(contador=0; contador<10;contador++) f2() main(){ int count f1();

return 0; }

Este programa saca por pantalla los nmeros del 0 al 9 en diez veces. El modo de operacin del programa no es afectado por la variable contador que opera en dos funciones a la vez.

Por otro lado las variables globales pueden ser usadas en varias funciones. Las variables globales deben ser declaradas antes de las funciones que las usan. Las variables globales no se destruyen hasta que no ha terminado la ejecucin del programa

1.3.3

ASIGNACIN DE VARIABLES

Hasta ahora solo hemos discutido de cmo declarar una variable en un programa, no de cmo asignarle un valor. Asignarle un valor a una variable es simple: tipo nombre_de_la_variable=valor; Una asignacin de variable es una sentencia debemos incluir el punto y coma al final. Un ejemplo de asignacin de valor a una variable entera es. count= 100; el valor 100 es llamado constante. En C existen muchos tipos de constantes. Un carcter constante siempre esta entre comillas como podra ser M Los nmeros enteros se utilizan cuando asignamos valores a variables int. Los nmeros en coma flotantes se usan para almacenar valores de nmeros con coma decimal. Por ejemplo decimos si queremos almacenar 100 en como flotante, tenemos que escribir 100.00 En una variable se puede almacenar el valor de otra variable, el siguiente programa muestra un ejemplo de este asignacin. main() { int i=0; int j=1; j=i; }

1.3.4

TIPOS DE CONVERSIONES

El lenguaje C te permite mezclar diferentes tipos de datos en una expresin, como por ejemplo el siguiente fragmento de cdigo: char ch= 0; int i=15; float f=25.6; resultado doble=ch*i/f

La mezcla de tipos de datos es gobernada por una estricta configuracin de reglas de conversin que le dicen al compilador como resolver las diferencias. La primera parte de las reglas de configuracin es el tipo de presentacin En vez de permitir al compilador que haga estos tipos de conversin, t puedes especificar el tipo de conversin usando el siguiente formato (tipo)valor; Esto causa un cambio temporal en las variables. tipo es un tipo de variable valido para C como char, int, etc y valor es la variable o constante que quiere ser modificada. Ejemplo

main() { float f printf(%d,int(f)) }

1.4.

FUNCIONES

Las funciones son los bloques ms bsicos de la programacin en C. Todas las sentencias deben ir dentro de una funcin. En este capitulo discutiremos como pasar argumentos a una funcin y como recibir argumentos de una funcin.

1.4.1

PASAR ARGUMENTOS A UNA FUNCIN Vamos a ver como declarar e invocar a funciones en un programa por ejemplo:

main(){

f1() } f1(){ return1 } En realidad este programa produce un error o como poco un warning. En realidad la funcin f1 debe ser declarada antes de ser usada, al igual que las variables. Si tu quieres usar una funcin estandart de C, debes incluir un archivo header al principio del programa. Si estas usando una de tus funciones, tendrs dos maneras de corregir el error; una es usar funciones prototipo como veremos despus y otra es reorganizar tu programa as: f1(){ return1 }

main(){ f1() } No se generar error porque la funcin est definida antes que el main 1.4.2 FUNCIONES PROTOTIPO

Hay dos mtodos para informar al compilador del el tipo de dato que quieres que devuelva la funcin, uno es: tipo nombre_funcion; Por ejemplo la funcin int suma le dice al compilador que el tipo de dato que devuelve es un entero. Otra manera de indicar al compilador que tipo de dato quiero que devuelva, es la funcin prototipo. Una funcin prototipo no solo nos da el dato, sino tambin los nmeros y tipos de argumentos que la funcin acepta. El prototipo debe coincidir con la declaracin de la funcin. El formato general de la funcin prototipo es el siguiente: tipo nombre_funcion(tipo variable1, tipo variable2, tipo variable3) En el ejemplo anterior cada variable puede ser de un tipo. En el siguiente ejemplo el programa calcula ancho largo y alto

#include <studio.h> int volumen(int s1, int s2, int s3) void main() { int vol vol=volumen(7, 5, 12) printf(volumen: %d\n,vol); } int volumen(intS1, int S2, intS3) { return s1*s2*s3 } Nota que return usa una expresin en vez de una variable o una constante Hasta ahora, con programas pequeos, las funciones prototipo no son muy importantes, si embargo a medida que los programas se vayan haciendo ms grandes, las funciones prototipo sern tiles a la hora de depurar errores.

Una excepcin es cuando una funcin no tiene ningn parmetro de entrada o de salida entonces se dice que es una funcin nothing void: void, Un ejemplo de esto podra ser: #include <studio.h> double pi (void)//defines la funcin { return 3,1415926536// con pi devuelves. } main() { double pi _val; pi_val=pi printf( %d\n,pi_val);

} 1.4.3 USANDO ARGUMENTOS DE FUNCIONES

Una argumento de function es un valor que pasa a la funcin cuando la funcin lo llama.C permite argumentos desde 0 a cualquier valor. El nmero de argumentos que puedan pasar a una funcin depende del compilador. pero el ANSCIC standart especifica que una funcin puede aceptar hasta 31. Cuando definimos una funcin declaramos variables especiales que podran recibir un valor, estas variables son declaradas como parmetros formales, los parmetros son declarados entre parntesis seguido del nombre de la funcin. Por ejemplo la siguiente funcin calcula e imprime la suma de dos nmeros enteros que son enviados a la funcin cuando esta es llamadas. sum (int a, int b) printf(%d\n, a+b); Un ejemplo de como la funcin podra ser llamada en este programa es #include<studio.h> void sum(int, int) main { sum(1,10) sum(15,6) sum(100, 25) } void sum (int a, int b) printf(%d\n, a+b); } Cuando sum es llamado, el compilador copiar dentro de cada argumento el valor de a y b.Es importante recordar que los valores pasados a la funcin se les llaman argumentos y las variables a y b son los llamados parmetros formales 1.4.4 USANDO FUNCIONES PARA DEVOLVER VALORES

Algunas funciones en C pueden devolver valores en las rutinas de llamada a esa funcin. Las funciones que devuelven valores se suelen escribir de la siguiente manera tipo nombre_funcion(parmetros formales)

{ //sentencias return valor } Tipo es el tipo de de dato del valor que devuelve la funcin return valor. Una funcin puede devolver cualquier tipo de dato excepto un array. Si no se especifica ningn tipo de dato la funcin devuelve un entero int.Ejemplo de funcin que devuelve un valor. #include <studio.h> #include<math.h main() double resultado; resultado=sqrt(16.0); printf(%f\n,resultado); } Este programa llama a la funcin sqrt que devuelve un resultado en coma flotante. Este nmero es asignado a la variable resultado. Incluimos el header math.h que tiene la informacin para el compilador de la funcin squrt(). Es importante que pongas el mismo tipo de dato para la variable a la cual la funcin asigna un dato y el valor que se devuelve. Lo mismo ocurre para los argumentos que envas a una funcin. El formato general para devolver valores desde una funcin es return nombre_variable; donde nombre_variable es una constante, variable o alguna expresin que tenga los mismos tipos de datos que el valor devuelto. El siguiente ejemplo muestra ambos tipos de funciones main() { int num; num= func(); printf(%d\n,num); }

func() { return6 } sum(int a, int b) { int result; result=a+b; return result; } Cuando el compilador se encuentra una sentencia return el valor es enviado inmediatamente a la rutina de llamada, las sentencias despus del return no sern ejecutadas. la sentencia return no se utiliza para asignar datos a variables o para ser usada en una expresin.

1.5

OPERADORES DE C

En el lenguaje C las expresiones juegan un papel importante. La primera razn es que C define muchos ms operadores que otros leguajes. Una expresin es una combinacin de operadores y operando. En muchos casos los operadores de C siguen las reglas del algebray pueden parecernos familiares. 1.5.1 OPERADORES ARITMETICOS

En el lenguaje C se distinguen 5 tipos de operadores aritmticos operaciones de adiccin substraccin, multiplicacin divisin y mdulo.

Signo = + * / %

Nombre Asignacin Suma resta Multiplicacin Divisin Mdulo

Ejemplo Y=X X+Y X-Y X*Y X/Y X%Y

Definicin Pone en Y el valor de X Suma el valor de X mas Y Resta el valor de X aY Multiplica X por Y Divide X entre Y Nos da el resto de la divisin de X entre Y

Los operadores +,-,*y /se pueden usar con cualquier tipo de dato, el mdulo solo se puede usar con enteros. El operador modulo % nos da el resto de una divisin entera El operador puede usarse de dos maneras la primera como operacin de sustraccin y la segunda como el opuesto de un nmero. Por ejemplo a=a-b //operacin de sustraccin a=-a //opuesto de un a Los operadores aritmticos pueden ser utilizados con una combinacin de variables constantes. Por ejemplo result=count-163; En el lenguaje C tambin pueden usarse algunos tipos de formas abreviadas, por ejemplo a=ab es lo mismo que a-=b, este mismo mtodo puede usarse con +,*,y / a=a+b a=a-b a=a/b a=a*b a=a%b a=a<<b a=a>>b a=a&b a=a|b a=a^b 1.5.2. OPERADORES RELACIONALES Los operadores relacionales en C comparan dos operadores y devuelven un valor falso o verdadero basado en la comparacin. Los operadores relacionales son: Operador == = < > <= >= Nombre asigncin No es igual a Menor que Mayor que Menor o igual que Mayor o igual que Ejemplo X==Y X=Y X<Y X>Y X<=Y X>=Y Definicin Verdadero si X es igual a Y Verdadero si X es distinto que Y Verdadero si X es menor que Y Verdadero si X es mayor que Y Verdadero si X es menor o igual q Y Verdadero si X mayor o igual que Y a+=b a-=b a/=b a*=b a%=b a<<=b a>>=b a&=b a|=b a^=b

Los resultados de cualquier operacin de relacin siempre ser 0 1.C define como verdadero cualquier valor que no sea 0 y como falso al 0. Ejemplos: var>15 //si var es menor o igual que 15 el resultado es 0 (falso) var!=15// si var es menor o mayor que 15 el resultado es 1 (verdadero)

1.5.3. OPERADORES LGICOS Los operadores lgicos son los operadores lgicos bsico AND, OR y NOT, de nuevo estos operadores devuelven un 0 para los casos falsos y un 1 para los verdaderos, la tabla de verdad para este tipo de operadores es: AND P&&Q 0 0 0 1 OR P||Q 0 1 1 1 NOT !P 1 1 0 0

P 0 0 1 1

Q 0 1 0 1

Los operadores lgicos y relacionales estn fuertemente relacionados entre s cuando evaluamos una expresin

count>max ||!(max==57)&& var>=0 Este tipo de relaciones las estudiaremos junto con las sentencias de control de flujo. 1.5.4. OPERADORES A NIVEL DE BITS C contiene seis operaciones que realizan operaciones bit a bit en nmeros. Estos operadores a nivel de bit solo se pueden usar con los tipos de datos enteros y caracteres. Los operadores a nivel de bits son: & | ^ ~ >> << AND a nivel de bit OR a nivel de bit XOR a nivel de bit opuesto Desplazamiento de bit a la derecha Desplazamiento de bit a la izquierda

El formato general para utilizar desplazamientos de bit es:

variable>>expresin variable<<expresin El valor de expresin indica cuantos lugares a la derecha o a la izquierda se desplaza la variable Cada desplazamiento a la izquierda provoca que todos los bits se desplacen un lugar hacia la izquierda y se inserte un cero en el lado derecho. El bit que es desplazado a la izquierda, se pierde. Hay que sealar que el uso de operadores de desplazamiento hacia la izquierda que un desplazamiento a la izquierda equivale a multiplicar el nmero por dos y un desplazamiento a la derecha equivale a dividir el nmero por dos Un ejemplo de operadores a nivel de bit son:

1.5.5. MEZCLANDO TODO

sum=a+b++ sum=a+b-sum=a+ ++b sum = a+ --b

sum=a+b b=b+1 sum=a+b b=b-1 b=b+1 sum=a+b b=b-1 sum=a+b

1.5.6

OPERADORES DE INCREMENTO O DECREMENTO

Como puedes incrementar o decrementar una vez una variable? Probablemente una de estas sentencias te venga a la cabeza, a=a+1 b=b+1 Los que inventaron C hicieron una notacin reducida para hacer esto a++ o ++a para incrementos b-- o --b para decrementos

1.5.7. ORDEN DE PREFERENCIA DE LOS OPERADORES Cuando hablamos de precedencia nos referimos al orden en el que los operadores son procesados por el compilador. Por ejemplo si nos encontramos la operacin a+b*c que operacin ocurrir primero. Suma o multiplicacin? El lenguaje C respeta la precedencia de cada operador. la siguiente tabla muestra el oren de precedencia desde el ms alto al ms bajo

Algunos de estos programas no se han comentado an. Algunos de ellos lo sern ms adelante. 1.6. SENTENCIAS DE CONTROL DE FLUJO

En este captulo vamos a ver las sentencias de flujo para el control de un programa. Mostraremos tambin cmo se usan los aperadores relacionales y lgicos en estas sentencias de control de flujo.

1.6.1

IF

la sentencia if es una sentencia condicional. el bloque de cdigo asociado a la sentencia if es ejecutado basndose en el resultado de una condicin.de nuevo cualquier valor que no sea cero es verdad y cualquier valor que sea cero es falso. El formato ms simple es if(expresin) sentencia; La expresin puede ser cualquier expresin valida de C. La sentencia if evalua el resultado de la expresin segn sea verdadero o falso. Si el valor es verdadero la sentencia es ejecuatada, mientras que si es falso, el programa contina sin ejecutar la sentencia. Un ejemplo simple de esto es. if(num>0) printf(el nmero es positivo\n); Este ejemplo muestra como se usan operadores relacionales en sentencias de control de flujo. La sentencia if tambin puede usarse con un bloque de sentencias. como el siguiente ejemplo: if(expresin) { sentencia } los corchetes {}se utilizan para englobar todo un bloque de cdigo. Si la expresin es verdadera se ejecuta todo el cdigo entre corchetes Los operadores de comparacin que se usan en sentencias if son:

1.6.2. SENTENCIAS IF-ELSE Se utilizar una estructura IF ELSE Cuando tienes dos bloques de cdigo que se basan en una salida de una expresin. Si la expresin es verdad se ejecutar la primera parte de, pero si es falsa se ejecutar la segunda .El formato principal de una sentencia IF ELSE es: if(expresin)

sentencia1; else sentencia2; El formato general de IF ELSE que usa ms de una lnea de cdigo es: if(expresin) { sentencia } else { sentencia } Nota: Las sentencia if o else pueden tener todas las sentencias que necesites Los corchetes se pueden omitir cuando solo tenemos una sentencia para if o para else El lenguaje C tiene un mtodo para combinar varias estructuras if else para tomar varias decisiones. el formato general es if(expresin) { sentencia } elseif(expresin) { sentencia } elseif(expresin) { sentencia } else

{ sentencia }if(num==1) { printf(tienes un 1\n) } elseif(num==2) { printf(tienes un 2\n) } elseif(num==3) { printf(tienes un 3\n) } else { printf(no tienes nada\n) }1.6.3. BUCLE FOR El bucle for es una de las tres sentencias que se utilizan en C si tu tienes una sentencia o una configuracin de sentencias que quieres repetir, con un bucle for se puede implementar este tipo de estructuras. El formato del bucle for es: for(inicializacin :condicin:incremento) En la seccin de inicializacin se utiliza para darle un valor inicial al contador del bucle. La variable del contador tiene que ser declarada antes de que el bucle for la use. . En esta seccin el bucle for es solo ejecutado una vez. La condicin es evaluada antes de cada ejecucin del bucle. Normalmente en esta seccin se evala, la variable del bucle contador para ver si es falso o verdadera. Si la condicin es verdad el bucle es ejecutado. Si la condicin es falsa se sale del bucle y el programa continua su ejecucin. En la seccin de incremento del bucle for normalmente se incrementa la variable del bucle contador. Este es un ejemplo de un bucle for #include<studio.h>

void main (void) { int i: for(i=0; i<10; i++) printf(%d,i); printf(hecho); Este programa imprime nmeros del 0 al 9 en la pantalla. El programa trabaja as. Primero inicializamos a cero la variable el contador, i, a continuacin se evala la expresin i<10 si la sentencia es verdadera se ejecuta la sentencia printf(%d,i); despus de haber ejecutado cada vez la sentencia printf(%d ,i); se incrementa la variable del bucle contador. Este proceso completo continua hasta que la expresin i<10 llega a ser falsa. En este punto se sale del bucle for y la sentencia printf(hecho); se ejecuta. Como ya se ha indicado al principio de cada iteracin se comprueba la condicin, por lo tanto si la condicin es falsa al empezar el bucle for no se ejecutar nunca.

1.6.4. WHILE LOOP Otros de los bucles de C es el bucle While. Mientras una expresin es verdadera, el bucle while repite una sentencia o bloque de cdigo. de ah viene el nombre while. Este es el formato general. while(expresin) sentencias;

OR while(expresin) { sentencias; } Expresin es cualquier expresin valida en c. El valor expresin es comprobado en cada iteracin de la sentencia o del bloque de control. Esto significa que si la expresin es falsa las sentencias o bloque de cdigo no se ejecutan. Aqu tenemos un ejemplo de bucle while #include<studio.h> #include<conio.h>

void main (void) { char ch printf(dame una q\n); ch=getche(); while(ch!=q) ch=getche(); printf(consigue una q!\n); } Te dars cuenta que la primera sentencia te pide un carcter por el teclado. Entonces se evala la expresin. Siempre que el valor de la variable ch no se a una q. El programa continuar hasta que obtenga otro carcter por el teclado. Una vez que se introduce una q a travs del teclado , se ejecutara la sentencia printf() y el programa terminar 1.6.5. DO-WHILE LOOP El ultimo bucle en es el bucle do. Aqu tenemos una combinacin de do y while. El formato general es: do { sentencias } while(expresin) En este caso las sentencias son siempre ejecutadas antes que la expresin sea evaluada. Expresin puede ser cualquier expresin valida en C Mostramos un ejemplo de un bucle do-while #include<studio.h> #include<conio.h> void main(void) { char ch;

do { ch=getche(); while(ch !=q); printf(dame una q\n); 1.6.6. PROGRAMAS DE CONTROL DE SENTENCIAS ANIDADOS Cuando dentro del cuerpo de un bucle tenemos otro bucle. Se dice que el segundo bucle esta anidado dentro del primer bucle. El estndar ANSI de C especifica que los compiladores pueden tener hasta 15 niveles de anidamiento. Adems muchos compiladores tienen virtualmente niveles ilimitados de anidamiento.Un ejemplo de anidamiento de un bucle for podra ser este: i=0; while(i<10) { for(j=0;j<10;j++) printf(%d,i*10+j); i++; } Este cdigo imprime por pantalla los nmeros del 00 99 en pantalla. 1.6.7. SENTENCIA BREAK La sentencia break permite salir de cualquier bucle desde un punto determinado del programa. La sentencia break hace un bypass en la ejecucin normal del programa. Cuando el programa encuentra la sentencia break hace un salto a la siguiente sentencia despus del loop. Por ejemplo: #include <studio.h> void main(void) { for(i=0;i<50;i++) { printf(%d,i); if(i==15)

break; } } Este programa imprimir por pantalla los nmeros del 0 al 15 en la pantalla. La sentencia C trabaja con todos los bucles de C. 1.6.7. SENTENCIA CONTINUE Se asume que cuando se cumple una cierta condicin el un bucle. Tu puedes saltar al final del bucle sin salir de l. Para ello, C esta provisto de una sentencia continue. Cuando el programa encuentra esta sentencia saltar todas las sentencias entre continue y el la condicin del bucle.Por ejemplo: #include<studio.h> void main(void) { int i; for(i=0;i<100;i++) { continue; printf(%d,i); } Este bucle jams ejecuta el printf().Cada vez que el continue es activado, el programa salta el printf() y evala la expresin i<100. Un continue causar que el programa vaya directamente a la condicin en los bucles for, while y do while. En un bucle for, un continue provocar que se produzca el incremento y que la condicin del test sea evaluada 1.6.8. SENTENCIA SWITCH. La sentencia if es buena para usar un par de alternativas, pero puede llegar a ser engorroso cuando existen varias alternativas . Para ello el lenguaje C pone a disposicin una sentencia switch. Una sentencia switch es equivalente a multiples if else.La forma general de un switch case es: switch(variable) { case costante1:

sentencias; break; case constante2: sentencias: break; case constantan: sentencias; break; default: sentencias; } La variable es comprobada sucesivamente en una lista de constantes enteras o caracteres. cuando se encuentra, se ejecuta el cuerpo de sentencias asociadas con la constante hasta que el programa se encuentra el break, si no se encuentra la constante en la lista. se ejecuta las sentencias asociadas a default. El default es opcional. Un ejemplo de switch es #include<studio.h> #include<conio.h> main() { char ch for(;;) { ch=getch(); if(ch==x) return0; switch(ch) { casse0: printf(Lunes/n); break;

case1: printf(Martes\n) break; case2: printf(Miercoles\n) break; case3: printf(Jueves\n) break; case4: printf(Viernes\n) break; case5: printf(Sabado\n) break; case6: printf(Domingo\n) break; default printf(Entrada no valida\n); } } } Este ejemplo lee nmeros entre el 1 y el 7. Si el nmero esta fuera de este rango se imprimir el el mensaje entrada no valida. Los valores dentro de este rango se convertirn en das de la semana El estndar ANSI afirma que un compilador de C puede soportar hasta 257 sentencias case. No puede haber dos sentencias case con el mismo valor en el mismo switch. Tambin los switches se pueden anidar siempre y cuando los swichtes interiores y exteriores no tengan conflictos con los valores de las variables. Por ejemplo

switch(a) { case1: switch(b) { case0: printf(b is falso) break; case1: printf(b es verdad) break; } break: case2: . . . 1.6.8. ENTENCIA NULL La sentencia null es una sentencia que solo contiene un punto y coma (;). null puede aparecer cuando se espera un una sentencia. No ocurre nada cuando se ejecuta una sentencia null

Las sentencias tales como do, for, if y while exigen que aparezca una sentencia en el cuerpo de sentencias. La sentencia null es muy til para estos casos. Por ejemplo: for(i=0; i<10:line[+++]=0) ; En este ejemplo la expresin de incremento para el bucle line[+++]=0 inicializa los 10 primeros elementos de la lnea a 0 . El cuerpo de sentencias es un null ya que no se requiere ningn comando ms 1.6.9. SENTENCIA RETURN

La sentencia return termina la ejecucin de una funcin y devuelve el control del programa a la rutina de llamada. Un valor puede ser devuelto a la rutina de llamamiento si se requiere pero si uno es omitido el valor devuelto es indefinido. si no se incluye la sentencia return en la funcin de llamada el control del programa es devuelto a la rutina de llamada cuando se termina la ejecucin de la ltima lnea de cdigo Si no se requiere un valor de devolucin, declaramos la funcin para que nos devuelva un valor tipo void GetValue(c) int c; { c++; return c; } void GetNothing(c) int c; { c++; return c; } void GetNothing(c) int c; { c++; return; } main() { int x; x=GetValue(); GetNothing(); }

1.7. EN C

PAUTAS Y RECOMENDACIONES PARA CUALQUIER TIPO DE LENGUAJE BASADO

Vamos a comenzar dando una serie de pautas y recomendaciones para programar cualquier tipo de lenguaje basado en c En primer lugar vamos a exponer algunos formalismos interesantes y bsicos para la programacin de cualquier lenguaje basado en C NOMBRES que encajen con su funcin Es recomendable usar nombres apropiados que representen lo que va hacer dentro del programa. Se suele usar nombres compuestos para hacer el cdigo ms legible Por ejemplo: DetectorInteriores es ms fcil que DETECTORINTERIORES

LLAVES Las llaves se usan para delimitar las sentencias dentro de un sentencias de control de flujo, como el que sigue. if (condicin){ //sentencias } O tambin se puede usar if (condicin) { //sentencias } TABULACIONES Y SANGA Usa las sangras para mostrar una estructura lgica del programa. LONGITUD DE LINEA

Mantn la configuracin de lnea en 78 caracteres para que sean compatibles con monitores e impresoras FORMATO ELSE IF Usa el formato else if para cubrir mas condiciones if(condicin1) //sentencias } elseif(condicin2){ //sentencias2, si no se da condicin1 y si se da condicin2 } else //sentencias3 si no se dan condicin1 ni condicion2

FORMATO DE CONDICIONES Cuando el compilador lo permita pon el valor de la constante a la izquierda de la comparacin de igualdad/ desigualdad. Por ejemplo If(6== ErrorNum)

INICIALIZA TODAS LAS VARIABLES Inicializa todas las variables a un valor conocido. Para evitar que se hagan flotantes o aleatorias

COMENTARIOS Los comentarios son la otra parte de la historia que estas escribiendo. Sirven para recordar dentro de un tiempo como funciona el programa que has escrito. Usa comentarios para marcar reas de cdigo que se terminarn despus, errores depurados o futuras mejoras

Das könnte Ihnen auch gefallen