APUNTES / Pagina #1Ing. Balebona APUNTES DE ~ LENGUAJE C ~ 1. ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C #include < > #include < > #define constante 20 fun1( ); /*cabecera de la función 1*/ { . /*cuerpo de la función 1*/ . } fun2( ); /*cabecera de la función 2*/ { . /*cuerpo de la función 2*/ . } main( ) /*programa principal*/ { . /*cuerpo del programa principal*/ . a:=fun1(); b:=fun2(); . . } APUNTES / Pagina #2 Ing. Balebona 2. REGLAS DE INTERÉS (a) Punto y coma " ; " para separar instrucciones. (b) Es costumbre que las instrucciones se escriban en letra minúscula. (c) Utilizar variables que se puedan reconocer. (d) Los comentarios deben ir entre /*.......*/ o {.........} (e) La regla de oro dice que un programa debe utilizar el mayor tiempo posible fuera del main principal. (f ) Un buen programador nunca utiliza GO TO para para brincar de un sitio a otro del programa. Se suele utilizar para chequear de errores. (g) No deben utilizarse las palabras reservadas por el Lenguaje C como variables en el programa. 3. OPERADORES ARITMÉTICOS - resta + suma * multiplicación / división % módulo o resto de una división - - auto decremento ++ auto incremento NOTA: n = n + 1 es equivalente a: + + n ó n + + n = n - 1 es equivalente a: - - n ó n - - con la salvedad de que: Si m = 4 y n = + + m entoces tanto el valor de m como de n es 5, puesto que m se incrementa antes del calculo. Por su parte si el caso fuese de que m = 4 y n = m + + entoces el valor de m sería 5 y el valor de n sería 4. APUNTES / Pagina #3 Ing. Balebona 4. OPERADORES RELACIÓNALES > mayor que >= mayor o igual que < menor que < = menor o igual que = = igual (condicional) ! = diferentes (condicional) 5. OPERADORES LÓGICOS && AND Lógico OR Lógico ! NOT Lógico 6. OPERADORES DE TRATAMIENTO DE BIT. & operador AND operador OR ^ operador OR EXCLUSIVA ~ operador complemento a uno NOT >> desplazamiento a la derecha << desplazamiento a la izquierda 7. ALGUNAS FUNCIONES MATEMÁTICAS. pow(X,Y) X Y exp(X) e Y log(X) Ln(X) log10(X) Log(X) abs(X) valor absoluto de X , |X| sin(X) seno de X (argumento en radianes) cos(X) coseno de X (argumento en radianes) tag(X) tangente de X (argumento en radianes) asin(X) arco seno de X acos(X) arco coseno de X atan(X) arco tangente de X APUNTES / Pagina #4 Ing. Balebona 8. ENTRADAS Y SALIDAS. getche( ) Espera que se pulse una tecla con eco. getch( ) Espera que se pulse una tecla sin eco. getchar( ) Lee un carácter del teclado después de ENTER. putchar( ) Escribe un carácter en pantalla. printf( ) Escribe datos en pantalla. scanf( ) Lee datos de la pantalla. 9. FORMATOS. %d número entero %i número entero %n número entero sin signo %x número entero hexadecimal %f número entero real %c un caráter %s una cadena de caráteres printf("curso de Lenguaje C") escribe en pantalla curso de Lenguaje C printf("x=%i",x) si x=10 entonces escribe en pantalla x=10 printf("C=%c",C) si C="A" entonces escribe en pantalla C=A printf("C=%d",C) si C="A" entonces escribe en pantalla C=65 printf("C=%x",C) si C="A" entonces escribe en pantalla C=41 printf("x=%i y=%c z=%d", x,y,z) 10. CARÁCTERES NO REPRESENTABLES. \b retroceso \f avance de página \n nueva línea \r retorno de carro \t tabulador horizontar \" comillas dobles \' comilla simple \0 nulo \\ barra invertida \v tabulador vertical \a alerta (bell) printf("ESTA ES: \n UNA \n SITUACION") APUNTES / Pagina #5 Ing. Balebona comprobar la siguiente instrucción 11. TAMAÑO Y RANGO DE LOS TIPOS DE DATOS BÁSICOS. TIPO NUMERO DE BIT RANGO char 8 -128 a 127 int 16 -32768 32767 float 32 -3.4E-38 a 3.4E +38 double 64 1.7E-308 a 1.7E+308 long double 80 3.4E-4932 a 1.1E4932 long char 8 0 A 250 void 0 no tiene valor 12. DECLARACIÓN DE VARIABLES. char car1,car2,car3; int m,n; float x,y; double z; short corto long largo signed con signo unsigned sin signo APUNTES / Pagina #6 Ing. Balebona 13. ESTRUCTURA DE CONTROL. A.- if (expresión condiconal) sentencia V else sentencia F B.- (expresión condiconal)? sentencia V : sentencia F C.- shitch(orden) { case 0 : Listar(); break; case 1 : Modificar(); break; case 2 : Insertar(); break; default : errore(); } D.- for(m=1;m<100;a+=2) { ------------- ------------- } E.- while(expresión condicional) { ----------- ----------- } F.- do { ----------- ----------- } while(expresión condicional) G.- break H.- goto brinco; brinco: (brinco sirbe de rotulo) I.- exit() esta instrucción nos permite salir de cualquier parte del programa al sistema operativo. APUNTES / Pagina #7 Ing. Balebona 14. FUNCIONES. Cuando una función devuelve un entero, no es necesario declararla de tipo int, pues para el lenguaje todas las funciones, en principio, devuelven un entero. #include "stdio.h" char Factor(integer g, integer f) { : : return(); } main() { char Factor();b; integer y,x; if x<0 y:=3; y:=4; b:=Factor(y,x) : : } 15. RECURSIVIDAD. int Factorial (int n) { if (n<0) return(-1); if ( !n ) return (1); return (n*Factorial(n-1)); } APUNTES / Pagina #8 Ing. Balebona ASIGNACIONES PARA FIN DE SEMANA 1.- Estudiar el concepto de recursividad y explicar la función Factorial 2.- El valor de e x se puede aproximar por la siguiente serie: x n e x x x x x x n = + + + + + + + 1 2 3 4 5 2 3 4 5 ! ! ! ! ....... ! realize un programa que tome el valor de x y n como entrada y visualize la suma para cada uno de los valores (máximo n=100) 3.-investigue las siguientes instrucciones: delay() gotoxy() clrscr() sound() nosound() textcolor textbackground windows bioscom 4.-investigue la forma de expresar vectores o arrays (matrices) APUNTES / Pagina #9 Ing. Balebona int bioscom(int cmdo,char byte,int puerto) #include<bios.h> Esta función se utiliza para manipular un puerto asíncronico de comunicación serie RS232. CMDO SIGNIFICADO 0 Inicializa el puerto 1 Envia un carácter 2 Recibe un carácter 3 Devuelve un estado del puerto PUERTO SIGNIFICADO 0 puerto com1 1 puerto com2 byte 7 6 5 4 3 2 1 0 Significad o datos datos parada paridad paridad baudios baudios baudios BAUDIO BITS 9600 111 4800 110 2400 101 1200 100 600 011 300 010 150 001 110 000 PARIDAD SIGNIFICADO 00 SIN PARIDAD 10 SIN PARIDAD 01 PARIDAD IMPAR 11 PARIDAD PAR APUNTES / Pagina #10 Ing. Balebona BIT DE PARADA SIGNIFICADO 0 1 BIT DE PARADA 1 2 BIT DE PARADA No. BIT DATOS significado 10 7 BIT DE DATOS 11 8 BIT DE DATOS Por ejemplo, el valor de 0xDF (11011111) para el parámetro char byte, programa el puerto con 4800 baudios, paridad par, 2 bit de parada y 8 bit de datos. La función bioscom() devuelve un valor de 16 bits. El byte alto (high) contiene los bit de estado. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 High Low bits devolución de bioscom( ) 7 Carácter disponible. El programa puede realizar una lectura del puerto (cmdo=2) 6 Tampón lleno (overrun). Se ha recibido un carácter cuando el programa aún no había vaciado el anterior 5 Error de paridad. 4 Error de trama (flaming error). El reconocimiento del carácter es incorrecto. 3 Error de transmisión (break detect). Error en la línea.. 2 Registro de transmisión vacío. el programa puede enviar un carácter (cmdo=1). 1 El registro de desplazamiento de la información está vacío. 0 Finalizado el tiempo concedido (time out). 7 Delta clear to send. El CTS ha cambiado de estado desde la última lectura. 6 Delta set ready. El DSR ha cambiado de estado desde la última vez. 5 Trailing edge ring indicator. RI ha cambiado de estado. 4 Delta receive line signal detect.El LSD ha cambiado de estado. 3 Clear to send. Preparado par enviar. 2 Data set ready. Señal de llamada. 1 Ring indicator. Señal de llamada. APUNTES / Pagina #11 Ing. Balebona 0 Receive line signal detected. El byte bajo se codifica con los valores de la tabla anteriores solo cuando cmdo = 0,1 ó 3. Cuando cmdo es 2, bioscom( ) realiza una lectura de puerto y devuelve el byte leído.