Vous êtes sur la page 1sur 35

Ing.

Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

El lenguaje c es un lenguaje basado en funciones

Parametro

Funcion

La funcion principal en C se llama main. Todo programa en C debe tener una funcion Llamada main.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

OPERACIONES ARITMETICAS CON ENTEROS

a=10; b=5; c=2;

d=a*b*c;
printf("a*b*c=%d\n",d); d=a*b+c;

printf("a*b+c=%d\n",d);
d=a+b*c; printf("a+b*c=%d\n",d);

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

TIPOS DE VARIABLES

char int float double

8bits. usualmente 16 bits. Punto flotante de precicion sencilla. Punto flotante de precicion doble.

MODIFICADORES DE LOS TIPOS BASICOS.

Short.-Modifica un entero, en un compilador con un entero de 32 bits, short int seria de 16. Long.-Modifica un entero, en un compilador con un entero de 16 bits, Long int seria de 32. Signed .- modifica los numeros enteros, produciendo un rango de num. Pos y neg.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

Const.- declara una constante, debe ser Inicializada al momento de la declaracion. Volatil.-le indica al compilador no optimizar Ningun codigo que involucre una determinada Variable.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

Variables locales.-Estan definidas dentro de una funcion. su clase de almacenamiento es automa tica. -solo existen mientras mientras la funcion se ejecuta. -no son inicializadas al crearce. -usualmente creadas en el stack.

int funcion(void)

{
int var1=9; }

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

VARIABLES ESTATICAS Son variables que mantendran su valor durate Sucesivas llamadas de funciones. Local Static Global o externas
int funcion(void) { Static int keep=1; Keep=keep+1; }
La primera vez que se ejecuta la funcion keep se coloca 1 En las sucesivas ejecuciones, keep mantendra el valor de La ultima vez que fue ejecutada la funcion.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

Variable externa
Static int keep=1; int funcion(void) { Keep=keep+1; }

Puede ser accesada en cualquier parte del archivo Donde fue definida.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

Variables estaticas globales

file1 Int able; Int main(void) { able=17 }

file2 Long quickstart(void) { extern int able; }

Indica que able esta fuera Si en lugar de int able Del archivo file2. Se le hubiera puesto Static int able Solo podria ser llamada en file1.
Ing.Martin Raya IPN ESIME
http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya 9

Operadores aritmeticos Tambien se llaman operadores binarios porque son Usados entre dos expresiones. + * / % Suma Resta Multiplicacion Divicion Modulo Operador unario Se encuentra a la izquierda de un termino si es cambia el signo del termino si es + no afecta al termino.

+-

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

10

OPERADORES BITWISE & | ^ >> << ~ AND OR INCLUSIVA OR EXLUSIVA CORRIMIENTO A LA DERECHA CORRIMIENTO A LA IZQUIERDA COMPLEMENTO A UNO

OPERAN EN LOS TIPOS ENTEROS(CHAR,INT,LONG ETC)

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

11

char r=b10101010; r=r&~7; 0000 0111 7 1111 1 000 ~7 1010 1010 & ______________ 10101000 Los tres bits menos significativos Son forzados a cero.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

12

char r=b10101010; r=r|0x0c; 00001100=0c 10101010=r _________ 10101110

Los bits 2,3 son puestos A 1, dejando igual el Valor de r.

porta=porta^1 xxxx xxx0 0000 0001 ________ xxxx xxx1

Or exclusiva invertira cada vez que Se ejecute el bit 0.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

13

Operadores de incremento y decremento

i=i+1 equivale a ++i


Se incremeta antes de su uso. Suponga i=5 j=2*++i; al terminar esta expresion j=12 y i=6 Suponga i=5 j=2*i--; ;al terminar j= 10 y i=4

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

14

Operadores de asignacion

Si usted tiene dos expresiones e1 y e2 ,$ representa un Operador binario

e1$=e2
i+=2 x<<=1 n/=10

e1=(e1)$e2
i=i+2 x=x<<1 n=n/10

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

15

LA EXPRESION CONDICIONAL
If (exp1) exp2; else exp3; (((t)>=0) ? (t): -(t))

exp1 ? exp2 :exp3;

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

16

Funciones Las funciones son el corazon de lenguaje C, una funcion puede tener varios argumentos O ninguno.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

17

Una funcion no puede ser definida dentro de Otra funcion. Una funcion solo tiene un punto de entrada, y Regresan una sola variable. El uso de una funcion requiere el uso de una Declaracion llamada funcion prototipo. Funcion prototipo Regreso de la funcion nombre (argumentos);

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

18

Cuando se pasan argumentos, en realiadad se pasan copias de estos argumentos.usando el Stack. El dato regresado por una funcion siempre sera Convertido al tipo correcto antes de ser Regresado. Si usted quiere cambiar el tipo de regreso se Utiliza el operador cast. Si no se escribe la palabra return en la funcion La funcion prototipo correspondiente debe de Identificarla como tipo void.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

19

/*funcion prototipo*/ Void SendCmd(char x) Void LcdInit(void); {++x; Void SendCmd(char); } void main(void) {LcdInit(); } void Lcd_Init() {char datlcd SendCmd(datlcd); }
Ing.Martin Raya IPN ESIME
http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya 20

Definicion de macro.

#define Ejemplo #define

nombre

codigo
(t)*(t)

cuadrado(t)

Printf(\t%d\t%f\t%f\n,I,c,square(c));
En este caso square(c)=c*c

Una macro es una expansion de caracteres;

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

21

#define abs(t)
ejemplo

(((t)>=0) ? (t): -(t))

Do { } While(abs(c) >=.00000001);
En caulquier momento que la funcion abs es encontrada en el codigo la cadena de caracteres (((x)>=0) ? (x) : -(x)) es colocada en su lugar el argumento en este caso x puede ser cualquier Expresion valida de C.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

22

Cuando se se escriba una definicion de macro, rodee todos los argumento y funciones con Parentesis, de lo contrario pasara lo que acontinuacion se muestra.

#define cuadrado(t) t*t suponga que la macros se usa de la siguiente manera x=cuadrado(y+3) La expansion de caracteres resultaria en x=y+3*y+3 /*que por logica no es lo deseado*/

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

23

Flujo y control de programa La manera en que se controlan los ciclos para Que una determinada secuencia de codigo se ejecute Bajo ciertas condiciones, n veces. While For Do/while If/else If/else/if Breake/continue and goto switch

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

24

while
Al comienzo de un nuevo ciclo el argumento de while es Verificado y si es verdadero se ejecuta el siguiente enun ciado que sigue a while, si el argumento es falso el sigui_ nte enunciado es saltado, el siguiente enunciado puede Ser un enunciado compuesto { } Int main(void) { int i; while(i!=5) { ++i }

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

25

CICLO FOR enunciado1; while(enunciado2) { enunciado3; }

for(enunciado1;enunciado2;enunciado3)

El enunciado1 es ejecutado seguido de un standard while, con el enunci Ado2 como su argumento El enunciado 3 es ejecutado al final Del ciclo.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

26

For(i=1,guess=5;i!=guess;)

Primer argumento

Segundo argumento

No es necesario el tercer argumento.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

27

Do/while En el while standar el argumento es probado antes de la ejecucion del ciclo. Si el argumento es falso El ciclo nunca se ejecuta. Algunas veces es necesario que el ciclo se ejecute por lo menos una vez independientemente del valor del argumento, en este caso el argumento es probado Al final del ciclo, y esta construccion se llama Do/while Se ejecuta el ciclo que esta Dentro del do y despues se Do evalua la expresion y si es { Verdadera el control se regresa }while(expresion); Al enunciado que sigue a do
Ing.Martin Raya IPN ESIME
http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya 28

If / else If (expresion) statement1; else statement2;

Si el argumento de if es verdadero El statement1 es ejecutado y despues el Control del programa es pasado al enunciado que sigue a statement2 y el Statement2 no sera ejecutado. Si la evaluacion del argumento de if es falsa statement2 sera ejecutado y el Enunciado1 no sera ejecutado.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

29

Int main(void) {int c,nn,no; no=0; nn=0; while((c=getchar())!=EOF) if(c>=0&&c<=9) Ciclo de while nn++; else no++; printf(Digitos=%d y otros caracteres=%d\n,nn,no); return 0; }

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

30

Operadores relacionales o logicos. Son operadores binarios,se evaluan de izquierda a derecha, los operados de estos operadores son evalua dos y si el resulatado de la comparacion es correcta Regresan un 1, caso contrario regresan un cero. Falso es siempre cero, verdadero es cualquier otra cosa.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

31

If /else if
int main(void) { int na=0,ne=0,ni=0,no=0,nu=0; int nother=0,c; while((c=getchar())!=EOF) if(c==A|| c==a) na=na+1; else if (c==E|| c==e) ne=ne+1; else if (c==I|| c==i) ni=ni+1; else if (c==O|| c==o) no=no+1; else if (c==U|| c==u) no=no+1; else nother=nother+1; Printf(A=%d, E=%d, I=%d,O=%d,U=%d y otros otros=%d\n, na,ne,ni,no,nu,nother); Return 0; }

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

32

break Cuando un enunciado break es encontrado el programa Sale del ciclo en el cual se estaba ejecutando. Break puede ser usado para salir de enunciados de for, while, do-while y switch continue Causa la siguiente iteracion del ciclo for,while o do while, Para while y do while el argumento de while es probado Inmediatamente, y el programa procede de acuerdo al resultado de la prueba.

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

33

goto Se puede crear una etiqueta en cualquier lugar, Escribiendo un nombre de etiqueta seguida de un colon Si es necesario el goto<label> puede ser usado

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

34

switch
While((c=getchar())!=EOF) Switch(c) { case A: casea: na=na+1; break; case E: casee: ne=ne+1; break; case I: casea: ni=ni+1; break; case O: caseo: no=no+1; break; case U: caseu: nu=nu+1; No es necesaria siempre, cuando no se encuentra break; Ningun match se ejecuta la que sigue a default: default: nother=nother+1 }

Ing.Martin Raya IPN ESIME

http://www.prodigyweb.net.mx/microelec tel 5 352-04-71 ing. Martn Raya

35

Vous aimerez peut-être aussi