Lenguaje C

C es un lenguaje de programación de proposito general que ha sido estrechamente asociado con el sistema UNIX en donde fue desarrollado puesto que tanto el sistema como los programas que corren en él estan escritos en lenguaje C.

C es un lenguaje de relativo bajo nivel. Esta carcterización no es peyorativa, simplemente significa que C trata con el mismo tipo tipo de objetos que la mayoria de las computadoras, ya sean caracteres, números y direcciones. Estos pueden ser combinados y cambiados de sitio con los operadores aritméticos y lógicos implantados por maquinas reales.

En 1983, el American National Standards Institute (ANSI) estableció un comite, para proporcionar una moderna y comprensible definicion de C, asi como la forma de estandarizar la forma de programar en C. El lenguaje ha cambiado poco, uno de los propositos del estándar fue asegurar que la mayoria de los programas existentes pudiesen permanecer válidoso, al menos que los compiladores pudieran producir mensajes de advertencia acerca del nuevo comportamiento.

Pues bien, a partir de las consideraciones anteriores, de acuerdo al ANSI C, los programas que se presentaran a continuacion se presentaran segun la programación estructurada que invita a usar ANSI C.

ESTRUCTURA DE UN PROGRAMA EN C

Antes de empezar a mostrar los programas, me parece importante recordar un poco la forma de estructura de un programa en C, ya que aunque todos los programas son distintos, de acuerdo a la gran variedad de programadores, sin embargo todos llevan algo en comun como a continuación se describe.

main(). Indica el cominzo de la función principal del programa la cual se delimita con llaves.

Variables locales.Antes de realizar alguna operación, se deben declarar las variables que se utilizaran en el programa.

Flujo de sentencias. Es la declaración de todas las instrucciones que conforman el programa.

Definición de las funciones creadas por el programador utilizadas en main(). Finalmente se procede a definir el contenido de las funciones utilizadas dentro de main().

En C, los comandos deben ser escritos con letras minusculas.En el caso de las variables o las funciones definidas por el usuario la declaración es semejante.

TIPOS Y OPERADORES

TIPO

TAMAÑO EN BITS

RANGO

char

8

-127 a 127

unsigned char

8

0 a 255

signed char

8

-127 a 127

int

16

-32767 a 32767

unsigned int

16

0 a 65537

signed int

16

-32767 a 32767

long int

32

-2147483647 a 2147483647

float

32

Seis dígitos de precisión

double

64

Diez digitos de precisisón



Operador

Acción

-

Resta

+

Suma

*

Multiplicación

%

Módulo

--

Decremento

++

Incremento

OPERADORES RELACIONALES Y LÓGICOS

Operador

Acción

>

Mayor que

>=

Mayor o igual que

<

Menor que

<=

Menor o igual que

= =

Igual

!=

Distinto

OPERADORES A NIVEL DE BITS

El lenguaje C soporta un completo juego de operadores a nivel de bits.Las operaciones a nivel de bits se refieren a la comprobación, asignación o desplazamiento de los bits reales que componen un byte o una palabra , que corresponden a los tipos estándar de C, char e int con sus variantes.

Operador

Acción

&

Y

|

O

^

O exclusiva

~

Complemento a uno

>>

Desplazamiento a la derecha

<<

desplazamiento a la izquierda

Funciones

En C, una función es un bloque de instrucciones que realizan una tarea especifica la cual se maneja como una unidad lógica.

La forma general para definir una función es:

nombre_de_la_función (declaración de parametros)
{
cuerpo de la función
}



Esto fue un breve resumende del manejo de parametros, operadores y la creación de funciones, todo esto fue necesario para poder entender la tematica de los programas que se mostraran a continuación.

 

Ejemplos de Programas

Como nos habremos dado cuenta, los dos progrmas anteriores usan sentencias de control simples, y que no requieren de una explicación minusiosa, sin embargo se habra observado que cuando se termina de usar una sentencia de control se pone entre comentarios Enf if, End while, el uso de estos comentarios nos permite observar con mayor detenimiento en donde van termiando cada uno de los modulos y nos permiten detectar con mayor facilidad los errores cometidos, sin embargo, paro no estar usando los comentarios y mejorar el aspecto estetico de la edición, lo que podemos hacer es crear nuestro propio archivo de encabezados, para aplicarlos en futuros programas.


Archivo de Encabezado

A este archivo le podemos poner por nombre ENDS.H , y lo llamaremos con la siguiente intruccion antes del main :#include "a:ENDS.H"

#define endif
#define enwhile
#define endcase


Este archivo lo debemos de guardar con extención h, es decir <ends.h>, la forma en que lo llamaremos desde nuestro programa se vara mas adelante.


Programa que imprime un número decimal a binario

#include<stdio.h>
#include "a:ends.h" /*Aqui llamamos a nuestro archivo */
main()
{
unsigned int num,masc;
char resp;
clrscr();
do{
masc=(1<<(sizeof(int))*8-1);
printf("DAME UN NUMERO: ");
scanf("%ud",&num);
while(masc){ /*Se define una variable bandera, se enciende cuando es diferente de cero */
if((num&masc)!=0)
printf("1");
else
printf("0");
Endif
masc=masc>>1;
}Endwhile
printf("\nOTRA VEZ? (S/N)");
while((resp=getchar())=='\n')
;
}while(resp=='s'|| resp=='S');


Programa que obtiene el factorial de un número

Para la realizacion de este programa cabe aclarar que, entre otras cosas se tiene que declarar a la variable fact como unsignet int, ya que no existe el factorial de un numero negativo y que no sea entero, existen tres posibles caosos en los que podria caer el numero que introduscamos, el primero que fuera < 0, por lo que el facrorial no existe, el segundo cuando = 0, por lo que el factorial seria 1, y por ultimo el caso en que >1, en este se puede observar que se hace uso de un ciclo while, en donde se ira decrementado el valor de la variable que se introdujo y a su ves se ira multiplicando elvalor decrementado, hasta que n sea cero
.


#include<stdio.h>

void main()
{
int n,cont;
unsigned int fact;
printf("\n\n\tDame el valor de n");
scanf("%d",&n);

cont=n;

if (cont<0)
printf("El factorial no existe");
else if (cont==0)
printf("EL factorial es 1");
else
{ fact=1;

while(cont>0)
{
fact=fact*cont;
cont=cont-1;
}/*End while*/
printf("El factorial de %d es %d",n,fact);>br> }
}/*End if*/
}

 

Función del Método de la Burbuja

Es este tipo de programa selo presento la función, esta debe de ser llamada como en el anterior ejemplo, declarando los prototipos en ENDS.H o antes del MAIN.

#include "a:ends.h"

/*int cadcmp(char *, char *); */ /*Se deben declarar en el modulo principal*/
/*void cpycad(char *, char *); */

char burbuja_cad(char nom[][40], int n)
{
int i, j;
char aux[40], cambio = 1;
for(i = 1; i < n && cambio; i++)
{
if(i==1)
cambio = 0;
endif
for(j = n-1; j >= i; j--)
if(cadcmp(nom[j-1], nom[j]) > 0)
{
cpycad(aux, nom[j-1]);
cpycad(nom[j-1],nom[j]);
cpycad(nom[j], aux);
cambio = 1;
}Endif
Endfor
}Endfor
return(cambio);
}

Comparación de Cadenas

En este programa se husan los famosos arreglos, ya que una palabra es una cadena de caracteres, es un programa sencillo que ayudara al entendimiento de arreglos.

include "a:ends.h"
int compcad(char *cadena1,char *cadena2); /*Se declara el prototipo de la función*/
main()
{
char cad1[32],cad2[32];
int valor;
clrscr();
puts("\nDAME LA CADENA 1:"); /*O tambien printf("%s","DAME CAD1");*/
gets(cad1);
puts("\nDAME CADENA 2:");
gets(cad2); /*inserta el caracter nulo la funcion gets*/
valor=compcad(cad1,cad2); /*Se llama a la función*/
if(valor>0)
printf("\nCADENA 1 ES MAYOR A CADENA 2");
else if(valor == 0)
printf("\nLAS CADENAS SON IGUALES");
else
printf("\nCADENA 2 ES MAYOR A CADENA 1");
Endif
}
int compcad(char *cadena1,char *cadena2){
int i=0,dif;
while(!(dif=cadena1[i]-cadena2[i]) && cadena1[i] && cadena2[i])
i++;
if(dif>0)
return(1);
else if(dif==0)
return(0);
else
return(-1);
Endif
}

 

1