Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introduccin a la Informtica
Las declaraciones muestran las variables que se van a utilizar y establecen el tipo que tienen y algunas veces cules son sus valores inciales.
Nombres de Variables:
Los nombres de variables se componen de letras y dgitos; el primer carcter debe ser una letra. Las letras maysculas y minsculas son distintas. En Gral. Se utiliza letras minsculas para nombres de variables y maysculas para constantes simblicas. Las palabras claves como if, else, etc deben escribirse con minscula.
Tipos de datos:
Nombre Significado en C Int Entero Float Punto flotante; Real Char Carcter Short Entero Corto Long Entero Largo Double Punto flotante de doble precisin; Real Largo Los calificadores short y long se aplican a enteros: Short int largo; Long int largo; El calificador signed o unsigned puede aplicarse para aumentar la cantidad de valores que puede alojar una variable en cuanto al si es positivo o negativo el valor a almacenar.
Constantes:
Una constante entera como 1234 es un int. Una constante long se escribe con una L, como 1234L. Las constantes sin signo se escriben 1234U. Las constantes de punto flotante se escriben 1234.1 Para las cadenas seria 1234. Estas cadenas poseen una constante al final aunque no se haya escrito, la constante /0 representa el carcter valor CERO. La funcin strlen() regresa la longitud de una cadena sin contar el carcter CERO. Los constantes carcter se diferencian de las cadenas en que llevan apostrofes en vez de comillas.
\a carcter de alarma \b retroceso \f avance de hoja \n nueva lnea \r regreso de carro \t tabulador horizontal
\\ diagonal invertida \? Interrogacin \ apostrofo \ comillas \000 numero octal \xhh numero hexadecimal 1
Introduccin a la Informtica
\tabulador vertical
Declaraciones:
Una declaracin especifica un tipo y contiene una lista de una o mas variables de ese tipo. Int largo; Una variable tambin puede ser inicializada en su declaracin: Int largo=0; Las variables estticas y externas son inicializadas en cero por omisin. El calificador const puede aplicarse a la declaracin de cualquier variable para especificar que su valor no ser cambiado. Const int largo=24;
Operadores aritmticos:
Los operadores binarios aritmticos son +,-,/,* y el operador modulo %. La divisin entera trunca cualquier parte fraccionaria. EL operador % no puede aplicarse a operandos float o double.
Todos ellos poseen la misma precedencia. De menor precedencia estn los operadores de igualdad. == != Los operadores lgicos || (o) y && (y) se evalan de izquierda a derecha y la evaluacin se termina tan pronto como se conoce el resultado verdadero o falso. La precedencia de && es mas alta que ||, y ambas son menores que los operadores de relacin. EL valor numrico de una expresin de relacin o lgica es 1 si la relacin es verdadera y 0 si la relacin es falsa. El operador unario de negacin ! convierte a un operando que no es cero en 0 y a un operando cero en uno.
Conversiones de Tipo:
Las nicas conversiones automticas son aquellas que convierten un operando angosto en uno amplio sin prdida de informacin. Un ejemplo de funcin es la funcin lower que convierte variables de tipo char a int. La conversin explicita puede ser forzada en cualquier expresin, con un operador unario llamado cast. En la construccin (nombre de tipo )expresin La expresin es convertida al tipo nombrado.
Introduccin a la Informtica
Expresiones condicionales:
La expresin condicional, escrita con el operador ternario ?:, significa: Expresion? A:B Donde A se ejecuta si la expresin es verdadera y B si es falsa.
Control de Flujo
Proposiciones y bloques:
Una expresin como x=0 se convierte en una proposicin cuando va seguida de un punto y coma. X=0; En C el ; es un terminador de proposicin. Las llaves {} se emplean para agrupar declaraciones y proposiciones dentro de una proposicin compuesta o bloque, de modo que son sintcticamente equivalentes a una proposicin sencilla. No hay ; despus de la llave derecha que termina un bloque.
If-else:
La proposicin if-else se utiliza para expresar decisiones. Sintaxis: If(expresin) Proposicion1; Else Proposicion2; En acaso de poseer mas de una proposicin If(expresin) { Proposicion1; 3
Introduccin a la Informtica
Switch:
La proposicin switch es una decisin mltiple que prueba si una expresin coincide con uno de un nmero de valores constantes enteros y translada el control adecuadamente. Swicth (Expresion){ Case exp-const: proposiciones; break; Case exp-const: proposiciones; break; Default: proposiciones; break; } Cada case se etiqueta con uno o mas valores constantes enteros o expresiones constantes enteras. Si un case coincide con el valor de la expresin , la ejecucin comienza all. Todas las expresiones case deben ser diferentes. El etiquetado default es optativo. La proposicin Break provoca una salida inmediata del switch.
Esta proposicin se ejecutara mientras que la condicin entre parntesis sea verdadera. La expresin for posee una sintaxis como la siguiente: For(largo=0;largo<=300;largo=largo+20) Printf(%d,largo); Es un ciclo. Dentro de los parntesis existen tres secciones, separadas por punto y coma. La primera la inicializacin se ejecuta una vez, antes de entrar propiamente al ciclo. La segunda seccin es la condicin o prueba que controla el ciclo: Largo<=300 Esta condicin se evalua; si es verdadera, el cuerpo del ciclo se ejecuta. Despues el incremento de avance Largo=largo+20 Se ejecuta y la condicin se vuelve a evaluar. El ciclo termina si la condicin se hace falsa. Las tres componentes de un ciclo for son expresiones, cualquiera de las tres se puede omitir, pero se debe escribir un ;. El for de sintaxis F(;;) es un for infinito.
Introduccin a la Informtica
Ciclos do while:
El do while prueba al final despus de realizar cada paso a travs del cuerpo del ciclo, el cual se ejecuta por lo menos siempre una vez. La sintaxis es: Do Proposicin While expresin;
Break y Continue:
La proposicin break proporciona una salida anticipada de un for,while y do, tal como lo hace en el switch. La proposicin continue provoca que se inicie la siguiente iteracin del ciclo for, while, do que la contiene.
Goto y etiquetas:
C proporciona la infinitamente abusable proposicin goto, y etiquetas para saltar hacia ellas. Ejemplo: For() ,.. If() Goto error; }
Error: proposicin:
Una etiqueta tiene la misma forma que un nombre de variable y es seguida por dos puntos. El alcance de una etiqueta es toda la funcin.
Introduccin a la Informtica
Variables externas:
Si un gran nmero de variables se deben compartir entre funciones entonces se recomienda utilizar variables externas. Las variables externas son permanentes. Estas se definen en el cuerpo del main() antes de referenciar a las funciones. Si se va a hacer referencia a una variable externa antes de su definicin, o si est definida en un archivo fuente diferente al que se est utilizando, entonces es obligatoria la declaracin extern. La declaracin static limita el alcance de ese objeto al resto del archivo fuente que se est compilando.
Introduccin a la Informtica
{ register int i; .. }
Inicializacin:
En ausencia de una inicializacin explicita, se garantiza que las variables externas y estticas se inicializaran en cero; las variables automticas y tipo registro tienen valores inciales indefinidos (basura). Un arreglo puede ser inicializado al seguir su declaracin con una lista de inicializadores encerrados entre llaves{} y separados por comas. Ejemplo int das[]={1,2,3} Cuando se omite el tamao de un arreglo, el compilador calculara la longitud contando los inicializadores, 3 en este caso.
Introduccin a la Informtica
Apuntadores y arreglos
Un apuntador es una variable que contiene la direccin de una variable.
Apuntadores y direcciones:
Una maquina tpica tiene un arreglo de celdas de memoria numeradas o direccionadas consecutivamente, que pueden manipularse individualmente o en grupos contiguos. Una situacin comn es que en cualquier byte puede ser un char, un par de celdas de un byte pueden tratarse como un entero short, y cuatro bytes adyacentes forman un long. UN apuntador es un grupo de celdas que pueden mantener una direccin. El operador unario & da la direccin de un objeto, de modo que la proposicin. P=&c; Asigna la direccin de c a la variable p, y se dice que p apunta a c. El operador & solo se aplica a objetos que estn en memoria: variables y elementos de arreglos. No puede aplicarse a expresiones, constantes o variables de tipo registro. EL operador unario * es el operador de indireccion o desferencia; cuando se aplica a un apuntador, da acceso al objeto al que seala el apuntador. La declaracin del apuntador ip, Int *ip; Funciona como mnemnico; dice que la expresin *ip es un int. La sintaxis de la declaracin para una variable imita la sintaxis de expresiones en las que la variable puede aparecer. Tambien se debe notar la implicacin que tiene el hecho de que un apuntador esta restringido a sealar a una clase particular de objeto: cada apuntador seala a un tipo especifico de datos. Ejemplo: (*ip)++ Los parntesis son necesarios en este ultimo ejemplo; sin ellos, la expresin encrementaria ip en lugar de a lo que apunta, debido a que los operadores unarios como * y ++ se asocian de derecha a izquierda. Ejemplo: Iq=ip SI iq es otro apuntador a int, copia el contenido de ip en iq; asi, hace que iq apunte a lo que ip esta apuntando.
Introduccin a la Informtica
Void largo (int *px, int * pi) { int temp; Temp= *px; *px=*py; *py=temp; } Los argumentos tipo apuntador permitena una function tener acceso y cambiar objetos que estan en la function que la llamo.
Apuntadores y arreglos:
Cualquier operacin que pueda lograrse por indexacin de un arreglo tambin puede realizarse con apuntadores. La declaracin Int a[10]; Define a un arreglo de tamao 10, esto es un bloque de 10 objetos consecutivos llamados a*0+,a*1+,,a*9+. Ejemplo: pa=&a[1]; Hace que pa apunte al elemento 1 de a ; esto es pa contiene la direccin de a[1]. Ahora la asignacin X=pa*; Copiara el contenido de a[1] en x. Si pa apunta a un elemento en particular de un arreglo, entonces por definicin pa + 1 apunta al siguiente elemento , pa +i apunta i elementos despus de pa, y pa-i apunta i elementos antes. Por definicion, el valor de una variable o expresin de tipo arreglo es la direccin del elemnto cero del arreglo. Puesto que el nombre de un arreglo es un sinnimo para la localidad del elemento inicial, la asignacin pa=&a[0] puede escribirse tambin como Pa=a Una referencia a a[i]tambin puede escribirse como *(a+i), esto deriva de que &a[i] y a+i tambin son idnticas. Tambien si pa es un apuntador, las expresiones pueden usarlo con un subndice; pa[i] es idntico a *(pa+i). Existe una diferencia entre un nombre de arreglo y un apuntador, que debe tenerse en mente. UN apuntador es una variable, por esto pa=a y pa++ son legales. Pero un nombre de arreglo no es una variable; construccines como a=pa y a++ son ilegales. Cuando un nombre de arreglo se pasa a una funcin, lo que se pasa es la localidad del elemento inicial. Un parmetro de nombre de arreglo es un apuntador. Por esto char s[]; y char *s ; son equivalentes. Es posible pasar parte de un arreglo a una funcin, pasando un apuntador al inicio del subarreglo. Por ejemplo, si a es un arreglo. F(&a[2]) y f(a+2) ambas pasan a la funcin f la direccin del subarreglo que inicia en a[2]. Si esta seguro de que los elementos existen, tambin es posible indexar hacia atrs en un arreglo; p[-1], p[-2], etc., son legtimos desde el punto de vista sintctico.
Introduccin a la Informtica
Aritmtica de direcciones:
Si p es un apuntador a algn elemento de un arreglo, entonces p++ incrementa p para apuntar al siguiente elemento y p+=i la incrementa para apuntar i elementos delante de donde actualmente lo hace.
Arreglos multidimensionales:
EN C, un arreglo de dos dimensiones es en realidad un arreglo unidimensional, cada uno de cuyos elementos es un arreglo. Por ello, los subndices se escriben como Largo[i][j] --[Renglon][Columna]. Un arreglo se inicializa con ua lista de inicializadores entre llaves; cada rengln de un arreglo de dos dimensiones se inicializa con una sublista. Si un arreglo de dos dimensiones se pasa a una funcin, la declaracin de parmetros en la funcin debe incluir el numero de columnas; el numero de renglones es irrelevante. 10
Introduccin a la Informtica
Estructuras
Una estructura es una coleccin de una o ms variables, de tipos posiblemente diferentes, agrupadas bajo un solo nombre para manejo conveniente. Las estructuras se denominan Records. Las estructuras se pueden copiar y asignar, pasar a funciones y ser regresadas por funciones. Las estructuras tambin se pueden inicializar.
Introduccin a la Informtica
Estructuras y funciones:
Las nicas operaciones legales sobre una estructura son copiarlas y asignarlas como unidad, tomar su direccin con &, y tener acceso a sus miembros. La copia y la asignacin incluyen pasarlas como argumentos a funciones y tambin regresar valores de funciones. Se pueden pasar separadamente los componentes, pasar una estructura completa o pasar un apuntador a ella. Si una estructura grande va a ser pasada a una funcin, generalmente es mas eficiente pasar un apuntador que copiar la estructura completa. La declaracin Struct punto *pp; Dice que pp es un apuntador a una estructura de tipo struct Punto y que (*pp).x y (*pp).y son los miembros.
Arreglos de estructuras:
La declaracin de estructura Struct llave{ Char *Word; Int cont; }; Struct llave arreglollave[10]; Declara un tipo de estructura llave, define un arreglo arreglollave de estructuras de este tipo, y reserve un espacio de alamcenamiento para ellas.
Sizeof:
El operador unario llamdo sizeof se puede emplear para calcular el tamao de cualquier objeto. Las expresiones sizeof objeto y sizeof(nombre de tipo) dan un entero igual al tamaa en bytes del tipo u objeto especificado.
Existen otro conceptos de inters como entrada y salida de archivos, Typedef , Uniones, etc los cuales quedan para ser investigados por el alumnos.
12
Introduccin a la Informtica
13
Introduccin a la Informtica
14
Introduccin a la Informtica
Diagnostics: <assert.h>
void assert(int expression)
Signals: <signal.h>
void (*signal(int sig, void (*handler)(int)))(int)
15