Ministerio del Poder Popular para la Educacin Universitaria.
Instituto Universitario de Tecnologa Jos Antonio Anzotegui. Pariagun- Estado Anzotegui.
PE2
Pariaguan, 18/02/2014 PROFESOR: Integrantes: LUIS MEJIAS
PEDRIQUE OSCAR C.I.:20.000.740 INTRODUCCIN
Creado entre 1970 y 1972 por Brian Kernighan y Dennis Ritchie para escribir el cdigo del sistema operativo UNIX.
Desde su nacimiento se fue implantando como el lenguaje de programacin de sistemas favorito para muchos programadores, sobre todo por ser un lenguaje que conjugaba la abstraccin de los lenguajes de alto nivel con la eficiencia del lenguaje mquina. Los programadores de sistemas que trabajaban sobre MS-DOS y Macintosh tambin utilizaban C, con lo cual la prctica totalidad de aplicaciones de sistema para microordenadores y para sistemas UNIX est escrita en este lenguaje.
A mediados de los ochenta el C se convierte en un estndar internacional ISO. Este estndar incluye tanto la definicin del lenguaje como una enorme biblioteca de funciones para entrada/salida, tratamiento de textos, matemticas, etc.
A mediados de los ochenta se crea el C++, extensin de C orientada a objetos. El C++ se convierte en estndar ISO en 1998. En el momento actual, el lenguaje C no va a modificarse ms. Ser el C++ el que incorporar nuevos cambios.
El Lenguaje C
Es un lenguaje de programacin de propsito general que ofrece economa sintctica, Control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y ms bien un lenguaje pequeo, sencillo y no est especializado en ningn tipo de aplicacin. Esto lo hace un lenguaje potente, con un campo de aplicacin ilimitado y sobre todo, se aprende rpidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje. C trabaja con tipos de datos que son directamente tratables por el hardware de la mayora de computadoras actuales, como son los caracteres, nmeros y direcciones. Estos tipos de datos pueden ser manipulados por las operaciones aritmticas que proporcionan las computadoras. No proporciona mecanismos para tratar tipos de datos que no sean los bsicos, debiendo ser el programador el que los desarrolle. Esto permite que el cdigo generado sea muy eficiente y de ah el xito que ha tenido como lenguaje de desarrollo de sistemas. Sistema Operativo Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no est ligado a ningn sistema operativo ni a ninguna mquina concreta. Se le suele llamar lenguaje de programacin de sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se puede desarrollar cualquier tipo de aplicacin.
La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP- 7. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, nmeros enteros y en coma flotante, de varios tamaos. Adems se pueden crear tipos derivados mediante la utilizacin de punteros,vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-11 y escribi el propio sistema operativo en C.Introduccin al lenguaje C (2).
La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP- 7. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, nmeros enteros y en coma flotante, de varios tamaos. Adems se pueden crear tipos derivados mediante la utilizacin de punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-11 y escribi el propio sistema operativo en C.
Estructura de Lenguaje en C
Las estructuras son colecciones de variables relacionadas bajo un nombre.
Las estructuras pueden contener variables de muchos tipos diferentes de datos; a diferencia de los arreglos que contienen nicamente elementos de un mismotipo de datos.
Las estructuras son tipos de datos derivados - estan construidas utilizando objetos de otros tipos. Considere la siguiente definicion de estructura:
struct ejemplo f char c; int i;g;
La palabra reservada struct indica se esta definiendo una estructura. El identificador ejemplo es el nombre de la estructura. L Los miembros de la misma estructura deben tener nombres nicos mientras que dos estructuras diferentes pueden tener miembros con el mismo nombre. Cada definicin de estructura debe terminar con un punto y coma. Estructura de Programacin en C Estructura
Todo programa en 'C' consta de una o ms funciones, una de las cuales se llama main. El programa comienza en la funcin main, desde la cual es posible llamar a otras funciones. Cada funcin estar formada por la cabecera de la funcin, compuesta por el nombre de la misma y la lista de argumentos (si los hubiese), la declaracin de las variables a utilizar y la secuencia de sentencias a ejecutar. ejemplo: declaraciones globales main( ) { variables locales bloque } funcion1( ) { variables locales bloque }
Comentarios A la hora de programar es conveniente aadir comentarios (cuantos ms mejor) para poder saber que funcin tiene cada parte del cdigo, en caso de que no lo utilicemos durante algn tiempo. Adems facilitaremos el trabajo a otros programadores que puedan utilizar nuestro archivo fuente.
Para poner comentarios en un programa escrito en 'C' usamos los smbolos /* y */: /* Este es un ejemplo de comentario */ /* Un comentario tambin puede estar escrito en varias lneas */ El smbolo /* se coloca al principio del comentario y el smbolo */ al final. El comentario, contenido entre estos dos smbolos, no ser tenido en cuenta por el compilador. Construcciones algortmicas construcciones condicionales (if,switch) construcciones iterativas(while,for,do...while) subrutinas (funciones)
Adems de lo anterior, el C tiene otros elementos: comentarios inclusin de ficheros macros compilacin condicional El preprocesador es quien normalmente se encarga de interpretar estas construcciones.
Estructura de un fichero fuente Un fichero fuente en lenguaje C tendr esta estructura tpica:
#include <biblioteca1.h> #include <biblioteca2.h>
... declaraciones de funciones ...
... definiciones (cuerpos de funciones) ... ... declaraciones de variables globales ...
main() { ... cuerpo del main ... }
... otras definiciones de funciones ...
Las declaraciones y definiciones se pueden hacer en cualquier orden, aunque es preferible declarar las funciones al principio del programa (por legibilidad). main es simplemente una funcin ms del programa, con la particularidad de que es el punto de entrada al programa. Expresiones y operadores
Los distintos operadores permiten formar expresiones tanto aritmticas como lgicas. Los operadores aritmticos y lgicos son:
+, - suma, resta ++, -- incremento, decremento *, /, % multiplicacin, divisin, mdulo >>, << rotacin de bits a la derecha, izquierda. & AND booleano | OR booleano ^ EXOR booleano ~ complemento a 1 ! complemento a 2, NOT lgico ==, != igualdad, desigualdad &&, || AND, OR lgico <, <= menor, menor o igual >, >= mayor, mayor o igual
En estos operadores deben tenerse en cuenta la precedencia de operadores y las reglas de asociatividad, que son las normales en la mayora de lenguajes. Se debe consultar el manual de referencia para obtener una explicacin detallada. Adems hay toda una serie de operadores aritmticos con asignacin, como pueden ser += y ^=.
En la evaluacin de expresiones lgicas, los compiladores normalmente utilizan tcnicas de evaluacin rpida. Para decidir si una expresin lgica es cierta o falsa muchas veces no es necesario evaluarla completamente. Por ejemplo una expresin formada <exp1> || <exp2>, el compilador evala primero <exp1> y si es cierta, no evala <exp2>. Por ello se deben evitar construcciones en las que se modifiquenvalores de datos en la propia expresin, pues su comportamiento puede depender de la implementacin del compilador o de la optimizacin utilizada en una compilacin o en otra.
Estos son errores que se pueden cometer fcilmente en C ya que una asignacin es tambin una expresin. Debemos evitar: if (( x++ > 3 ) || ( x < y )) y escribir en su lugar: x++; if (( x > 3 ) || ( x < y )) Hay un tipo especial de expresin en C que se denomina expresin condicional y est representada por los operadores ? : . Su utilizacin es como sigue: <e> ? <x> : <y>. Se evala si e entonces x; si no, y. int mayor ( int a, int b ) { return ( a > b ) ? TRUE : FALSE; } waste_time () { float a, b = 0.0; ( b > 0.0 ) ? sin(M_PI / 8) : cos(M_PI / 4); }
Funciones del Lenguaje en C
Las funciones son porciones de cdigo que devuelven un valor. Permiten descomponer el programa en mdulos que se llaman entre ellos. En C no existe diferencia entre funciones y procedimientos: a todas las subrutinas se las llama funciones. La definicin de una funcin especfica lo siguiente: nombre de la funcin nmero de argumentos que lleva y tipo de cada uno de ellos tipo de datos que devuelve Cuerpo de la funcin (el cdigo que ejecuta) Sintaxis: tipo nombre ( arg1, arg2, ... ) { ... cuerpo ... } Cada argumento se especifica como en una declaracin de variable. El cuerpo de la funcin debera contener una sentencia donde se devuelve el resultado de la funcin, que se hace de esta forma: return expresin; La funcin devolver el resultado de la expresin.
Ciclos Es muy comn encontrar en los programas operaciones que se deben ejecutar un nmero repetido de veces en perodos ms o menos espaciados. Si bien las instrucciones son las mismas, los datos sobre los que operan varan. Un ciclo, funciona de la siguiente manera: Evala una condicin de resultar cierta, realiza una accin o bloque de acciones, luego vuelve a evaluar la condicin y si nuevamente resulta cierta, realiza la (s) accin (es). Cuando la condicin de cmo resultado falso, se sale del ciclo y contina con la ejecucin normal del programa. Estructuras de datos literales tipos bsicos (todos numricos) tipos enumerados tipos estructurados (struct, union) punteros y vectores Reglas Bsicas de la Programacin en C Comentar, comentar, comentar. Documentar convenientemente los programas es imprescindible en cualquier lenguaje. Utilizar siempre la regla KISS: Keep It Simple, Stupid. Claro y sencillo es siempre preferible a complejo y maravilloso. Evitar efectos laterales. Utilizar los operadores ++ y -- siempre en una nica lnea por s mismos (no imbudos en otras sentencias complejas). Nunca colocar asignaciones dentro de los condicionales. Nunca colocar una asignacin dentro de otra sentencia. Considere la diferencia entre = y ==. Utilizar = en lugar de == es un error muy comn y difcil de encontrar, especialmente entre programadores procedentes de otros lenguajes. Nunca haga "nada" de forma "silenciosa". /* Nunca programe de este modo */ for (index = 0; data[index] < key; index++); /*Ha notado el punto y coma al final de la lnea anterior?*/ /* Forma correcta para hacer lo mismo: */ for (index = 0; data[index] < key; index++) ; /* No hacer nada */
CARACTERISTICAS DEL LENGUAJ E 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan del cdigo fuente para funcionar (P.ej: Basic).Los compilados convierten el cdigo fuente en un fichero objeto y este en un fichero ejecutable. Este es el caso del lenguaje 'C'. Podemos decir que el lenguaje 'C' es un lenguaje de nivel medio, ya que combina elementos de lenguaje de alto nivel con la funcionalidad del lenguaje ensamblador. Es un lenguaje estructurado, ya que permite crear procedimientos en bloques dentro de otros procedimientos. Hay que destacar que el 'C' es un lenguaje portable, ya que permite utilizar el mismo cdigo en diferentes equipos y sistemas informticos: el lenguaje es independiente de la arquitectura de cualquier m quina en particular.
Punteros
Cada variable de un programa tiene una direccin en la memoria del ordenador. Esta direccin indica la posicin del primer byte que la variable ocupa. En el caso de una estructura es la direccin del primer campo. En los ordenadores actuales la direccin de inicio se considera la direccin baja de memoria. Como en cualquier caso las variables son almacenadas ordenadamente y de una forma predecible, es posible acceder a estas y manipularlas mediante otra variables que contenga su direccin. A este tipo de variables se les denomina punteros.
Los punteros C son el tipo ms potente y seguramente la otra clave del xito del lenguaje. La primera ventaja que obtenemos de los punteros es la posibilidad que nos dan de poder tratar con datos de un tamao arbitrario sin tener que moverlos por la memoria. Esto puede ahorrar un tiempo de computacin muy importante en algunos tipos de aplicaciones. Tambin permiten que una funcin reciba y cambie el valor de una variable. Recordemos que todas las funciones C nicamente aceptan parmetros por valor. Mediante un puntero a una variable podemos modificarla indirectamente desde una funcin cualquiera.
Los datos en C han de tener un tipo. Las variables contienen datos, y se han de declarar del tipo adecuado a los valores que van a contener.
El C dispone de estos tipos bsicos:
int enteros (nmeros enteros positivos y negativos) char caracteres (letras) float nmeros en coma flotante (nmeros reales) double nmeros en coma flotante de doble precisin void no-tipo (se emplea con punteros)