martes, 24 de mayo de 2016

Elementos Del Lenguaje "C"

Comentarios :
Los comentarios son textos que no son procesados por el compilador. Sirven como información al programador.

Para que un texto sea comentario debe estar entre los símbolos /* (marca el comienzo) y */ (marca el final de comentario).

Identificadores :
Se usan para referenciar las variables, las funciones, las etiquetas y otros objetos definidos por el usuario. La longitud del identificador puede variar entre uno o varios caracteres (se recomienda no más de 31 y si el identificador está envuelto en el proceso de enlazado al menos los seis primeros deben ser significativos).

El primer carácter debe ser una letra o un símbolo subrayado y los caracteres siguientes pueden ser letras, números o símbolos de subrayado. Las minúsculas y las mayúsculas se tratan como distintas.

Un identificador no puede ser igual a una palabra clave de C y no debe tener el mismo nombre que una función ya escrita o que se encuentre en la biblioteca de C.
Las Constantes :
Las constantes son expresiones con un significado invariable. La representación más simple de un concepto de este lenguaje son las constantes.

Al contrario que las variables, las constantes mantienen su valor a lo largo de todo el programa.
Para indicar al compilador que se trata de una constante, usaremos la directiva #define
#define

Observa que no se indica el punto y coma de final de sentencia ni tampoco el tipo de dato.
La directiva #define no sólo nos permite sustituir un nombre por un valor numérico, sino también por una cadena de caracteres.
El valor de una constante no puede ser modificado de ninguna manera.

/* Uso de las constantes */
#include
#define pi 3.1416
#define escribe printf
main() /* Calcula el perimetro */
{
int r;
escribe("Introduce el radio: ");
scanf("%d",&r);
escribe("El perimetro es: %f",2*pi*r);
}

Variables:
Una variable es una posición de memoria con nombre que se usa para mantener un valor que puede ser modificado en el programa. Todas las variables deben ser declaradas antes de poder usarlas.


Operadores:
Los operadores son palabras o símbolos que hacen que un programa actúe sobre las variables.
En C existen diversos tipos de operadores. Aritméticos, relacionales, de asignación, lógico.

Sentencias
Una sentencia es una expresión en C donde se esperan unas consecuencias, normalmente son las instrucciones, cada sentencia finaliza con un punto y coma.

Sentencias de Control del Lenguaje C

Hay tres sentencias condicionales en C: if, else y switch.

La sentencia if nos permite elegir si se ejecuta o no un bloque de instrucciones. La "expresión" del if es una expresión que debe ser evaluada: falsa si es cero y verdadera si vale distinto de cero.

Ejemplo:
#include
int main ()
{
int x;
printf(“Dame un numero”);
scanf(“%d”,&x);
if (x>0) {
printf(“El numero %d es positivo”,x);
}
return 0;
}

Una sentencia IF cuando incluye un ELSE, permite ejecutar un bloque de código si se cumple la condición y otro bloque diferente de código si la condición no se cumple.

Ejemplo:
#include
void main ()
{
int x;
printf(“Dame un numero: ”);
scanf(“%d”,&x);
if (x>=0) {
printf(“El numero %d es positivo”, x);
} else {
printf(“El numero %d es negativo”, x);
}
}

Permite seleccionar entre multiples alternativas posibles. La expresión del switch es una variable int o char, que puede tomar los valores, entre otros, dados por "opción 1", "opcion 2", etc.

Ejemplo:
#include
void main()
{
int nota;
printf(“Calificación: ”);
scanf(“%d”, ¬a);
switch (nota) {
case 0:
case 1:
case 2:
case 3:
case 4:
printf(“Suspenso”);
break;
case 5:
case 6:
printf(“Aprobado”);
break;
case 7:
case 8:
printf(“Notable”);
break;
case 9:
printf(“Sobresaliente”);
break;
case 10:
printf(“Matrícula”);
break;
default:
printf(“Error”);
}
}

Ciclos O Blucles

Bucles for:

Tienen una gran potencia y flexibilidad, y tienen un esquema muy sencillo y definido. Este esquema es así:
for(inicialización del bucle; condición; incremento).
Ahora vamos a proceder a definir cada una de las partes del esquema básico, inicialización (exp1): es una asignación que se utiliza para comenzar la variable del bucle, esto es de la variable de la que parte el bucle. Condición (exp2): es una expresión relacional que hace que el bucle concluya cuando no se cumpla. Por último el incremento (exp3): es la parte que determina como cambia la variable hasta que el bucle concluye. Es importante señalar que cada parte ha de ser separado por ; .Para que deje de ejecutarse el bucle como antes hemos mencionado depende de la condición, que deberá de ser falsa para que el bucle se detenga.
Debemos tener en cuenta que a diferencia de otros bucles este no llegará a ejecutarse si la condición es falsa, ya que la condición se comprueba antes de entrar en el bucle.



Bucles while:

Tiene cierta semejanza con el bucle for, así es en el uso de una inicialización, una condición y un incremento. Otra de sus similitudes es el momento en el que analizan la condición que en ambos es antes de ejecutar el bucle. Sin embargo, en su esquema básico aunque parezcan diferentes, son el mismo:




Bucles do-while:


Este es el único bucle que al menos se va a ejecutar una vez puesto que este bucle examina la condición una vez se ha ejecutado el bucle, esto es, al final del mismo. El esquema básico de este bucle sería algo así:
do
{
cuerpo;
}
while (condición);

Este bucle es muy útil por ejemplo en menús dado que el menú debe de ejecutarse al menos una vez.



Sentencias

Sentencias de salto

Hay cuatro sentencias de salto en C: break, return, goto y continue.
Suelen estar condicionadas (que solo las ejecute el programa en un determinado caso).
Se desaconseja la utilización de este tipo de sentencia de control, sobre todo el goto, ya que su uso implica un aumento de la probabilidad de cometer errores, dificulta la legibilidad del código y es mucho mas difícil corregir errores y cambiar secuencias de código.


Sentencia break

La instrucción de salto break se usa para interrumpir (romper) la ejecución normal de un bucle, es decir, la instrucción break finaliza la ejecución de un bucle y, por tanto, el control del programa se transfiere (salta) a la primera instrucción después del bucle.


Ejemplo:
#include
int main()
{
int n, a;
a = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &n );
if ( n == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
break;
/* En el caso de que n sea un cero,
el bucle se interrumpe. */
}
printf( "El opuesto es: %d\n", -n );
a += n;
} while ( n >= -10 && n <= 10 ); printf( "Suma: %d", a ); return 0; }


Sentencia return

La instrucción de salto return es utilizada en lenguaje C para devolver el control de ejecución desde la función que contiene el return a la rutina que la invocó y para indicar el valor de retorno de una función.


Ejemplo:
#include
int z;
void funcion();
int main()
{
for(z=0;z<=5;z++) { printf("%i\n",z); funcion(); system("pause"); } return 0; Indica al ordenador que el programa ha fnalizado sin errores. } void funcion() { printf("Hola\n"); if(z==3){printf("Z vale 3\n"); return;} El return termina la función y entonces printf("Z no vale 3\n"); no se ejecutará printf("Z no vale 3\n"); }


Sentencia continue

La instrucción de salto continue siempre se usa para interrumpir (romper) la ejecución normal de un bucle. Sin embargo, el control del programa no se transfiere a la primera instrucción después del bucle, como sí hace la instrucción break, es decir, el bucle no finaliza, sino que, finaliza la iteración en curso, transfiriéndose el control del programa a la condición de incremento de contadores y después a la condición de salida del bucle, para decidir si se debe realizar una nueva iteración o no.

Ejemplo:
#include
int main()
{
int n, a;
a = 0;
do
{
printf( "Introduzca un numero entero: " );
scanf( "%d", &n );
if ( n == 0 )
{
printf( "ERROR: El cero no tiene opuesto.\n" );
continue;
/* En el caso de que n sea un cero,
la iteración en curso del bucle
se interrumpe aquí. */
}
printf( "El opuesto es: %d\n", -n );
a += n;
} while ( n >= -10 && n <= 10 ); printf( "Suma: %d", a ); return 0; }


Introducción

¿ que es el lenguaje "C" se preguntaran muchos y los que no lo saben porque no lo conocen o simplemente no les importa les concedo la razón les dire de que consta el lenguaje "C":
dicho lenguaje es un lenguaje de programación originalmente desarrollado por Dennis M. Ritchie entre 1969 y 1972 en los Laboratorios Bell, como evolución del anterior lenguaje B, a su vez basado en BCPL.
Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix. C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.


Se trata de un lenguaje de tipos de datos estáticos, débilmente tipificado, de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos
La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO (ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo que, si los programas creados lo siguen, el código es portable entre plataformas y/o arquitecturas.

Evolución del Lenguaje "C"

El lenguaje C inicialmente fué creado para la programación de

-Sistemas operativos
-Intérpretes
-Editores
-Ensambladores
-Compiladores
-Administradores de bases de datos.

Actualmente, debido a sus características, puede ser utilizado para todo tipo de programas.

Algunas de las versiones existentes son:

- Quick C
- C++
- Turbo C
- Turbo C ++
- Borland C
- Borland C++
- Microsoft C
- Turbo C 2.0
- Turbo C++ 1.0
- Borland C++ 2.0


Este Lenguaje a evolucionado paralelamente con el UNIX, que a su vez ha pasado por diversas versiones entre las que destaca Microsoft con su XENIX para micros de 16 bits.

A mediados de los años 60s, Martin Richards diseñó el lenguaje BCPL con la finalidad de usarlo para escribir software de sistemas operativos y compiladores.
En 1969, Ken Thompson escribió el Lenguaje B, en Bell Laboratories, con el objetivo de recodificar UNIX (escrito hasta ese momento en lenguaje ensamblador) usando un lenguaje de alto nivel más portable y flexible.
Durante los siguientes años, Dennis Ritchie modificó el lenguaje B, llegando a crear el lenguaje C y reescribiendo el sistema UNIX en dicho lenguaje; añadió características nuevas, como son el diseño de tipos y las estructuras de datos.
En 1978, Dennis Ritchie y Brian Kernighan publicaron la primera edición del libro El lenguaje de programación C. Este libro fue durante años la especificación informal del lenguaje. El lenguaje descrito en la primera edición de este libro, fue conocido como "el C de Kernighan y Ritchie" o simplemente "K&R C". En este libro se introdujeron nuevas características al lenguaje: los tipo de datos struct, long int y unsigned int; los operadores =+ y =- fueron sustituidos por += y -=.
A mediados de los años 80, Bjarne Stroustrup (también de los laboratorios Bell), crea el lenguaje C++, un lenguaje basado en C, con numerosas características adicionales, siendo la principal que está orientado a objetos. Si bien se han creado muchos lenguajes basados en C, C++ es el que ha permanecido más asociado a C.
En los años siguientes a la publicación del C de Kernighan y Ritchie, se añadieron al lenguaje muchas características no oficiales, que estaban presentes en algunos compiladores y no en otros. Fue por ello que en 1989 ANSI (American National Standards Institute) publicó el primer estándar oficial de C, que es conocido como ANSI C.
En este estándar se tomaron muchas de las funcionalidades no oficiales y se agregaron funcionalidades nuevas como los prototipos de función, y un preprocesador mejorado. También se cambió la sintaxis de la declaración de parámetros de funciones, para que incluyeran el tipo junto con el nombre.
Al año siguiente, en 1990 se publicó la estandarización ISO del lenguaje. Este estándar es básicamente el estándar ANSI, con unas pocas modificaciones de formato. A este estándar se lo conoce, entonces, como C89, o C90, y se trata del mismo lenguaje.
Basándose en el estándar ANSI que estaba en preparación, en 1988 Kernighan y Ritchie publicaron la segunda edición de su libro, que es aún hoy utilizada como una de las referencias principales del lenguaje.
Durante los siguientes años, el lenguaje C permaneció sin demasiados cambios. Sin embargo, como había sucedido antes, los distintos compiladores fueron incorporando características adicionales, que otros compiladores no tenían, siendo C++ la principal influencia.
Fue por ello que a finales de los noventa se decidió revisar el estándar de C, lo que llevó a la publicación del estándar C99. Este estándar incluye varias nuevas características como son: las funciones inline; la posibilidad de declarar variables en cualquier parte del código; los comentarios de una sola línea utilizando //; los tipos de datos long long int, bool y complex, entre otras.
Aún hoy el proceso de evolución del lenguaje sigue avanzando, y desde 2007 se está trabajando en el armado de un nuevo estándar.



Ejemplo del "viejo estilo":
int power(); /* Podria haberse omitido (*) */

power()
int a, b;
{
int n;
for (n = 1; b > 0; --b)
n *= a;
return n;
}


Ejemplo de la nueva definición:
int power(int a, int b)
{
int n;
for (n = 1; b > 0; --b)
n *= a;
return n;
}

Inconvenientes o desventajas del Lenguaje C.

Las desventajas que se pueden encontrar al Lenguaje C son las siguientes: Carece de instrucciones de entrada/salida, de instrucciones para el manejo de cadenas de caracteres, con lo que este trabajo queda para la librería de rutinas, con la consiguiente pérdida de transportabilidad. La excesiva libertad en la escritura de los programas puede llevar a errores en la programación que, por ser correctos sintácticamente no se detectan a simple vista. Por otra parte las precedencias de los operadores convierten a veces las expresiones en pequeños rompecabezas.





Historia del Lenguaje "C"

Antes de empezar con la historia del lenguaje C definiré ¿Que es el lenguaje C? El C es un lenguaje de programación de nivel medio ya que combina los elementos del lenguaje de alto nivel con la funcionalidad del ensamblador. Una vez aclarado este punto pasaremos a conocer su historia.



En 1967 Martin Richard creo el lenguaje BCPL que fue la base para la creacion del lenguaje B escrito por Ken Thompson en 1970 con la intención de recodificar el UNIX, que en su face de arranque estaba codificado en lenguaje ensamblador.

El lenguaje c fue creado por Dennis Ritchie en los laboratorios Bell Telephone en 1972, el c fue creado con un fin específico: el diseño del sistema operativo UNIX. Este lenguaje solo es una modificación del lenguaje B. El lenguaje C se llama de esta forma debido a que su predecesor fue llamado B.

(y no darth vader )
La novedad que proporcionó el lenguaje C sobre el B fué el diseño de tipos y estructuras de datos. Los tipos estructurados básicos de C son las estructuras, las uniónes, y los arrays. Estos permiten la definición y declaración de tipos de mayor complejidad.Los tipos básicos de datos en el lenguaje C eran "CHAR" (carácter), "INT" (enteros), "FLOAT" (Reales en simple presición), y "DOUBLE" (Reales en doble Presición). Posteriormente se añadieron los tipos "SHORT" (Enteros de longitud<=longitud de un int), "LONG" (Enteros de longitud >= longitud de un entero), "UNSIGNED" (Enteros sin signo), y "ENUMERACIONES".


C es un lenguaje muy poderoso y flexible su uso se difundió muy rápidamente mas allá de los laboratorios Bell. Los programadores de todo el mundo comenzaron a usarlo para escribir todo tipo de programas. Sin embargo, diferentes organizaciones comenzaron a utilizar muy pronto sus propias versiones del C, las pequeñas diferencias entre las implementaciones comenzaron a dar problemas a los programadores. Para resolver este problema, el American National Stándards (ANSI) formo un comité en 1983 para establecer una definición estándar del C, que llego a ser conocida como C estándar ANSI. Con unas cuantas excepciones, todos los compiladores del C modernos de adhieren a este estándar.