El lenguaje C fue creado entre los años 1970 y 1972 por Brian Kernighan y Dennos Ritchie para escribir el código del sistema operativo UNIX. Fue uno de los lenguajes de programación mas aceptados por los programadores, por que hace una conjugación en lenguaje de alto nivel y lenguaje máquina. El lenguaje C es el resultado de un proceso de desarrollo que inició con un lenguaje denominado BCPL. Este influenció a otro llamado B (inventado por Ken Thompson). En los años 70; éste lenguaje llevó a la aparición del C; 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.
Estructura De Datos
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 mismo
tipo de datos.
Definición de estructuras: Las estructuras son tipos de datos derivados - están construidas utilizando
objetos de otros tipos. Considere la siguiente definición de estructura:
struct ejemplo {
char c;
int i;};
La palabra reservada struct indica se está definiendo una estructura. El
identificador ejemplo es el nombre de la estructura. Las variables declaradas
dentro de las llaves de la definición de estructura son los miembros de la estructura. Los miembros de la misma estructura deben tener nombres ´únicos
mientras que dos estructuras diferentes pueden tener miembros con el mismo
nombre. Cada definición de estructura debe terminar con un punto y coma.
La definición de struct ejemplo contiene un miembro de tipo char y otro
de tipo int. Los miembros de una estructura pueden ser variables de los tipos
de datos básicos (int, char, float,etc) o agregados como ser arreglos y otras
estructuras. Una estructura no puede contener una instancia de si misma.
Declaramos variables del tipo estructura del siguiente modo:
struct ejemplo e1, a[10];
o alternativamente sin usar la palabra struct:
ejemplo e1, a[10];
Las declaraciones anteriores declaran variables e1 de tipo ejemplo y a de tipo
arreglo de ejemplo de dimensión 10.
Se pueden declarar variables de tipo estructura ejemplo colocando sus nombres a continuación de la llave de cierre de la definición de estructura y el punto
y coma, en el caso anterior:
struct ejemplo {
char c;
int i;} e1, a[10];
Una operación valida entre estructuras es asignar variables de estructura a
variables de estructura del mismo tipo. Las estructuras no pueden compararse
entre si.
Ejemplo
Consideremos la información de una fecha. Una fecha consiste de: el día, el
mes, el año y posiblemente el día en el año y el nombre del mes. Declaramos
toda esa información en una estructura del siguiente modo:
struct fecha {
int dia;
int mes;
int año;
int dia del año;
char nombre mes[9];
};
Tipos De Datos
En C existen 5 tipos de datos según puede verse en la tabla siguiente:
Declaración De Variables
En C, las variables pueden ser declaradas en cuatro lugares del módulo del
programa:
• Fuera de todas las funciones del programa, son las llamadas variables globales,
accesibles desde cualquier parte del programa.
• Dentro de una función, son las llamadas variables locales, accesibles tan solo
por la función en las que se declaran.
• Como parámetros a la función, accesibles de igual forma que si se declararan
dentro de la función.
• Dentro de un bloque de código del programa, accesible tan solo dentro del
bloque donde se declara. Esta forma de declaración puede interpretarse como
una variable local del bloque donde se declara.
Para un mejor comprensión, veamos un pequeño programa de C con variables
declaradas de las cuatro formas posibles:
#include <stdio.h>
int sum; /* Variable global, accesible desde cualquier parte */
/* del programa*/
void suma(int x) /* Variable local declarada como parámetro, */
/* accesible solo por la función suma*/
{
sum=sum+x;
return;
}
void intercambio(int *a,int *b)
{
if (*a>*b)
{
int inter; /* Variable local, accesible solo dentro del */
/* bloque donde se declara*/
inter=*a;
*a=*b;
*b=inter;
}
return;
}
int main(void) /*Función principal del programa*/
{
int contador,a=9,b=0; /*Variables locales, accesibles solo */
/* por main*/
sum=0;
intercambio(&a,&b);
for(contador=a;contador<=b;contador++) suma(contador);
printf(“%d\n”,suma);
return(0);
}
Operadores
Operadores de asignación
La operación más importante en cualquier lenguaje de programación es la asignación:
En C hay muchos operadores de asignación que serán en realidad simplificaciones de expresiones más complejas, como las auto-operaciones (+=
, -=
, *=
, /=
, &=
, ...) y los pre/post incrementos/decrementos (++
, --
).
En general estas expresiones no podrán ser utilizadas en los diagramas de flujo.
Operadores aritméticos
Cabe destacar que se diferencian la división entera y la división real, según los operandos.
Operadores relacionales
Operadores lógicos
Los operandos son considerados falsos (valor 0) ó ciertos (valor distinto de 0). El resultado siempre es 0 ó 1.
Para estudiar el resultado se utilizan las tablas de verdad.Operadores bit a bit
Afectan a los operandos bit a bit, por lo que se aplica la operación lógica a cada uno de ellos. El resultado bit a bit es 0 ó 1 pero la composición de estos resultados no tiene porqué ser 0 ó 1, como era el caso en los operadores lógicos.
Las tablas de verdad, aplicadas bit a bit a los operandos son:
Operador condicional
Es un operador ternario, es decir, tiene tres operandos.
Su funcionamiento es el siguiente: para una ejecución c ?
e1 :
e2 siendo c, e1 y e2 tres expresiones,
- Se evalúa c
- Si el resultado es cierto (es decir, distinto de cero)
- se evalúa e1 y éste sera el resultado.
- Si no (el resultado es falso o cero)
- se evalúa e2 y éste sera el resultado.
Ejemplos. Para x = 4
, y = 2
, z = 7
:
- La expresión
x >= 5? 1:0
se evalúa a 1
- La expresión
x >= 5? y:z
se evalúa a 7
- La expresión
x <= 5? y:z
se evalúa a 2
- La expresión
x ? z+y:z-y
se evalúa a 9
- La expresión
x >= 0 ? sqrt(x):0
se evalúa a 2.0
(sqrt
: raíz cuadrada, prototipo en math.h
)Precedencia y asociatividad
Entrada y Salida
Los programas interactúan con el exterior, a través de datos de entrada o datos de salida. La biblioteca
C proporciona facilidades para entrada y salida, para lo que todo programa deberá tener el archivo de
cabecera stdio . h . En C la entrada y salida se lee y escribe de los dispositivos estándar de entrada y
salida, se denominan stdin y stdout respectivamente. La salida, normalmente, es a pantalla del
ordenador, la entrada se capta del teclado.
En el archivo stdio . h están definidas macros, constantes, variables y funciones que permiten
intercambiar datos con el exterior. A continuación se muestran las más habituales y fáciles de utilizar.
Entrada: La entrada de datos a un programa puede tener diversas fuentes, teclado, archivos en disco. La entrada
que consideramos ahora es a través del teclado, asociado al archivo estándar de entrada stdin. La función
mas utilizada, por su versatilidad, para entrada formateada es scanf ( ) . El archivo de cabecera stdio . h de la biblioteca C proporciona la definición (el prototipo) de
scanf ( ) , así como de otras funciones de entrada o de salida. La forma general que tiene la función
scanf ( )
scanf(cadena-de-control, varl, var2, var3, ... )
cadena-de-control contiene los tipos de los datos y si se desea su anchura.
varl, var2 . . . variables del tipo de los códigos de control.
Los códigos de formato más comunes son los ya indicados en la salida. Se pueden añadir, como
sufijo del código, ciertos modificadores como I o L. El significado es «largo», aplicado a float
(%If) indica tipo double, aplicado a int (%Id) indicaentero largo.
int n; double x;
scanf ("%d %lf",&n,&x);
La entrada tiene que ser de la forma
134 -1.4E-4
Salida: La salida de datos de un programa se puede dirigir a diversos dispositivos, pantalla, impresora, archivos.
La salida que se trata a continuación va a ser a pantalla, además será formateada. La función
print f ( ) visualiza en la pantalla datos del programa, transforma los datos, que están en representación
binaria, a ASCII según los códigos transmitidos. Así, por ejemplo,
suma = O;
suma = suma+lO;
printf ("%s $d" , "Suma = 'I, suma) ;
visualiza
Suma = 10
El número de argumentos de print f ( ) es indefinido, por lo que se pueden trasmitir cuantos datos se desee. Así, suponiendo que
1=5 j = 12 c = 'A' n = 40.791512
la sentencia
printf ("%d %d %c %f", I, J ,c,n) ;
visualizará en pantalla
5 12 A 40.791512.
Ejemplo
/* ejemplo 1.- Escribe un mensaje en pantalla */
# include /* incluye biblioteca donde se define E/S */
int main( )
{
/*Este comentario es ignorado por el compilador y*/
/*no genera código */
printf("\nIntroducción a la programación en lenguaje C");
return 0;
}
Comentarios
Publicar un comentario