programacionenturboc

Upload: diego-teran

Post on 05-Nov-2015

225 views

Category:

Documents


0 download

DESCRIPTION

para devc**

TRANSCRIPT

Manual de C.

Curso de Programacin en Turbo C

CURSO DE PROGRAMACIN EN TURBO C

INDICE

Breve historia de C

Fases de un programa en Turbo C4

El entorno de Turbo C4

El editor5

El debugger de Turbo C5

Tipos de datos simples

El tipo char6

El tipo int, short int y long int6

El tipo float y double6

El tipo void6

Operadores

Operadores lgicos6

Operadores aritmticos6

Operadores relacionales6

Los componentes de un programa en Turbo C

La directiva #include8

La directiva #define8

Prototipos de funciones8

Declaracin de variables8

La funcin main()8

Funciones de E/S bsicas

La funcin printf()9

La funcin scanf()9

Delimitacin de bloques de cdigo ({})10

Estructuras de seleccin

La sentencia if 10

La sentencia if-else10

La sentencia switch-case11

Ciclos

El ciclo for12

El ciclo while13

El ciclo do-while13

Tipos de datos estructurados

Arreglos unidimensionales14

Arreglos multidimensionales16

Estructuras17

Funciones de tipo char

Funciones de captura

La funcin getch()19

La funcin getche()20

La funcin gets()20

La funcin puts()20

Funciones de copia de cadenas20

La funcin strcpy()20

La funcin strncpy()21

Funciones de concatenacin de cadenas21

La funcin strcat()21

La funcin strncat()22

Funciones de comparacin de cadenas21

La funcin strcmp()21

Funciones de bsqueda en cadenas22

La funcin strchr()22

La funcin strrchr()22

La funcin strcspn()22

La funcin strstr()23

Funciones de conversin de cadenas24

La funcin strlwr()24

La funcin strupr()24

La funcin strrev()24

Conversin a nmeros 24

La funcin atoi()24

La funcin atof()24

Funciones y Procedimientos

Funciones tipo void o procedimientos25

Funciones simples26

Funciones con parmetros27

Paso de parmetros por valor27

Paso de parmetros por referencia28

Funciones Recursivas29

Validacin de datos e integridad

Validacin con funciones 30

Validacin con ciclos31

Introduccin a las estructuras de datos

Memoria Dinmica33

Estructuras con apuntadores (nodos)34

Aplicacin de las estructuras con apuntadores34

Archivos39

INTRODUCCIN

Breve historia de Turbo C

El lenguaje C fu diseado en 1972, por el cientfico Dennis Ritchie, en los laboratorios de Bell Telephone Inc. Con un fin especfico, la creacin del sistema operativo Unix, por lo que este sistema operativo tiene un entorno programable en C, el lenguaje C tuvo como predecesor al lenguaje B, desarrollado por Ken Thompson tambin en los laboratorios Bell, hay varias versiones de C, pero actualmente, todas ellas se apegan a la versin de C establecida por el ANSI, que se encarg de regular (como lo hace con todo lo dems) las versiones de C. De aqu naci el Estndar ANSI C (que es el que se utiliza en el entorno de Unix), un poco despus, nace C++, que no es otra cosa que una mejora de C, as que todo lo que incluye C, funciona en C++, slo que el C++ incorpora adems, herramientas que permiten la P.O.O., pero para este curso, utilizaremos una versin de C hecha por Borland, es decir, Turbo C.

Fases de un programa en Turbo CLas fases de un programa en Turbo C se pueden resumir en:

1. Edicin

2. Compilacin

3. Enlazado

4. Ejecucin

La Edicin de un programa consiste, simplemente, en editar el cdigo fuente del programa, Turbo C incluye un editor para este efecto.

La Compilacin del programa consiste en convertir el cdigo fuente en cdigo objeto.

El Enlazado consiste en enlazar el cdigo objeto para obtener el cdigo ejecutable.

Finalmente, la Ejecucin consiste precisamente en ejecutar el programa.

El entorno de Turbo CEl entorno de Turbo C facilita la edicin, compilacin y el enlazado de los programas, ya que incluye un editor y herramientas para compilar y enlazar los programas, para configurar el entorno de Turbo C, primero hay que conocerlo, a continuacin se explican las caractersticas ms importantes del entorno...

El editor de Turbo C

El editor de Turbo C es una poderosa herramienta que nos facilita enormemente la edicin de un programa, es como un editor de texto cualquiera, pero, para los que estn acostumbrados a los editores que funcionan bajo Windows, tal vez se encuentren con una forma diferente de editar texto, por ejemplo, para seleccionar un bloque de texto, en el editor de Turbo C, se presiona la combinacin de teclas CTRL+K+B al inicio del bloque que se desea seleccionar, y la combinacin CTRL+K+K al final del mismo. Despus, con ese bloque seleccionado, se pueden hacer diversas cosas, como:

CTRL+K+Y: Elimina el bloque.

CTRL+K+V: Mueve el bloque.

CTRL+K+C: Copia el bloque.

De cualquier forma, es conveniente que se familiaricen con el editor de Turbo C a medida que aprenden a programar, es decir, no es necesario aprender a usar el editor al 100%.

El debugger de Turbo C

En ocasiones, un programa que est lxica y sintcticamente bien escrito, puede no dar los resultados correctos, estos resultados pueden deberse a errores comunes de programacin, tales como errores lgicos, comnmente llamados bugs, aunque existen otros tipos de errores, tales como errores en tiempo de ejecucin (tema del que nos ocuparemos ms adelante), el debugger de Turbo C nos ayudar a detectar y corregir dichos errores lgicos. Por ejemplo, si deseamos monitorear en todo momento el valor de una variable (watch) presionaremos la combinacin CTRL+F7, y posteriormente, podremos ejecutar el programa lnea por lnea (F7) o funcin por funcin (F8).

Tipos de datos simplesLos tipos de datos simples en C son:

void: Tipo de dato que no tiene valor.

int: Para todo el rango de valores enteros*.

float: Para todo el rango de valores reales*.

char: Datos de tipo caracter.

OperadoresLos operadores son aquellos smbolos que nos ayudarn a relacionar y manipular los operandos, existen los operadores lgicos, relacionales y aritmticos o matemticos.

Lgicos

AND&&

OR||

NOT!

Aritmticos

Asignacin=

Suma+

Resta-

Multiplicacin*

Divisin/

Divisin modular%

Incremento++

Decremento--

Relacionales

Igual que==

Menor que

Menor o igual que=

Diferente que!=

Componentes de un programa en CLa estructura bsica de un programa en C es la siguiente:

#include

#include

#define pi 3.1416

int suma(int x, int y);

char nombre[30];

/* Inicia programa principal */

main()

{

int a,b;

printf(Introduzca su nombre...);

scanf(%s,&nombre);

printf(\nTeclee un entero...);

scanf(%d,&a);

printf(\nTeclee otro entero...);

scanf(%d,&b);

printf(El resultado es%d,suma(a,b));

getch();

}

int suma(int x, int y)

{

return x+y;

}

La directiva #includePor medio de esta directiva se indica al compilador cules son los archivos de cabecera que deber incluir en la compilacin del programa, con la finalidad de indicarle donde estn los prototipos e implementacin de las funciones que se utilizarn en dicho programa.

La directiva #defineA travs de ella se definen las constantes y macro definiciones que se utilizarn en el programa.

Prototipos de funcionesLos prototipos de funciones no son otra cosa que una especie de declaracin de funciones, donde se debe especificar el tipo de dato que devolvern dichas funciones, el nombre de la funcin y sus parmetros, en caso de que los tenga, aunque en Turbo C no es obligatorio el uso de prototipos de funciones, para efectos de claridad y como una prctica sana de programacin, se recomienda usarlos.

Declaracin de variables

Es necesario declarar las variables que se utilizarn en el programa, de modo que el compilador reserve un espacio en memoria para esas variables, la sintaxis es:

[tipo] [nombre_de_la_variable] [[dimension]] ; (la dimensin slo se usa para arreglos).

Ejemplo:

int x;

int arreglo [100];

Y ya que hablamos de variables, cabe mencionar que las variables pueden ser declaradas globales o locales, solamente como referencia, las variables globales son aquellas variables que conservan su valor durante la ejecucin de todo el programa y se declaran antes del main(), mientras que las variables locales solamente tienen valor durante la ejecucin de la funcin o procedimiento en que fueron declaradas y se declaran despus de la llave que indica el principio de una funcin o procedimiento. De cualquier manera, las diferencias entre las variables locales y globales sern objeto de estudio ms adelante.

La funcin main()

La funcin main() en un programa en C significa el cuerpo del programa o el programa principal, ya que es la primer funcin que el enlazador busca para ejecutar; si la funcin main() no tiene parmetros, significa que solamente la utilizaremos para decirle al programa cundo y cmo debe hacer las cosas, pero, si tiene parmetros, es decir, si desde la lnea de comando se llama con valores de entrada, la cosa cambia, y nos ocuparemos de la funcin main() con parmetros ms adelante.

Funciones de E/S bsicas

Las funciones de E/S son las que se utilizan para capturar datos desde el teclado e imprimirlos por medio de la salida estndar (monitor). Estas instrucciones soportan ciertos formatos:

La funcin scanf

La funcin scanf captura cualquier tipo de dato introducido por el teclado, y para esto, es necesario incluir en su llamada a funcin el formato o tipo de dato que se pretende leer por teclado, ejemplo:

scanf(%d,&x);

En este caso, se especifica una entrada de tipo decimal o entero (%d), mientras que el operador de indireccin (&) indica que se debe guardar el valor en la localidad de memoria x, en otras palabras, indica que se recibir un valor entero y se debe almacenar en la variable x. Ahora bien, los tipos de formato ms usados para la instruccin scanf son:

%d, %iEntero decimal con signo

%fNmero real o flotante

%cDato tipo caracter

%sDato tipo cadena

%uSin signo

La funcin printf

La funcin printf es la contraparte de la funcin scanf, ya que mientras scanf lee datos desde el teclado, la funcin printf los escribe, es decir, provee la salida en pantalla, esta funcin tambin utiliza los formatos de scanf, con la particularidad de que printf puede modificar la salida de los datos, por ejemplo, si se declara una variable entera, y se le asigna el valor 65, y al momento de imprimir el valor de la variable se especifica una salida de tipo caracter, la salida ser el caracter A (el 65 equivale a la letra A en el cdigo ASCII).

scanf(%d,&x); /* Se lee la variable como entera */

printf(%c,x); /* Se escribe como caracter */

Delimitacin de bloques de cdigo (uso correcto de las llaves)

En la programacin estructurada, a menudo se tienen que delimitar bloques de cdigo para indicar al programa el conjunto de instrucciones que se deben ejecutar en determinado momento, para esto, se utilizan las llaves, la manera correcta de usar las llaves es la siguiente, si un bloque de cdigo consiste en slo una lnea, las llaves no son necesarias, pero si dicho bloque de cdigo consta de ms de una lnea, el uso de las llaves es imprescindible.

Estructuras de seleccinLas estructuras de seleccin son usadas para bifurcar el control en un programa, es decir, se utilizan para evaluar expresiones que pueden tomar valores de verdadero y falso, o 1 y 0, respectivamente, ya que en C no existe el tipo de dato booleano, por lo que se usan sus equivalentes.

La sentencia ifLa sentencia if es usada para evaluar una expresin lgica que puede tomar valores de 1 y 0, es decir, verdadero o falso, la sentencia if se conoce como estructura de seleccin simple, ya que si se cumple la condicin especificada entre los parntesis, se ejecuta un bloque de cdigo, y si no se cumple, no se ejecuta nada, su sintaxis es la siguiente:

if (condicin)

{

Bloque de instrucciones

}

Ejemplo:

if (x==0)

{

printf(El nmero es 0);

printf(\a);

}

En este ejemplo, si la condicin (x==0) se cumple, se imprime el mensaje El nmero es 0 y se emite un pitido por el speaker de la computadora, y si no se cumple, pues no pasa nada.

La sentencia if - elseEsta sentencia es ms o menos como la anterior, con la diferencia que en este ejemplo, si la condicin se evala como verdadera, se ejecuta una secuencia de instrucciones, mientras que si la condicin se evala como falsa se ejecuta otra secuencia de instrucciones; su sintaxis es la siguiente:

if (condicin)

{

Bloque de instrucciones 1

}

else

{

Bloque de instrucciones 2

}

Ejemplo:

if (x==0)

{

printf(El nmero es 0);

printf(\a);

}

else

printf(Es un nmero diferente de 0);

Es posible anidar sentencias if para hacer una seleccin todava ms compleja, es de ir, dentri de un if puede ir otro, y dentro de ste, otro ms, etc...

Ejemplo:

if (x==0)

{

printf(El nmero es 0);

printf(\a);

}

else

if(xant=q;

h=q;

return 0;

}

if(!enc(h,num))

{

q=crea();

q->info=num;

if(h->sig==NULL)

{

h->sig=q;

q->ant=h;

return 0;

}

p=h;

while((p->infosig->infosig!=NULL))

p=p->sig;

r=p->sig;

p->sig=q;

q->ant=p;

q->sig=r;

r->ant=q;

return 0;

}

}

bajas(NODO *h, int n)

{

NODO *p,*q,*r;

if(!enc(h,n))

{

printf("\n\aNo se encuentra!");

getch();

}

else

{

q=h;

while(q->info!=n) q=q->sig;

p=q->ant;

r=q->sig;

p->sig=r;

r->ant=p;

free(q);

printf("El numero %d ha sido eliminado.",n);

getch();

}

}

consultas(NODO *h)

{

NODO *aux;

aux=h;

if(!h)

{

printf("La lista esta vacia.\a");

getch();

return 0;

}

printf("\nLista completa...\n");

while (aux)

{

printf("%d ",aux->info);

aux=aux->sig;

}

getch();

}

NODO *crea()

{

NODO *n;

n=malloc(sizeof(NODO));

n->sig=NULL;

n->ant=NULL;

n->info=0;

return n;

}

inserta(NODO *h, NODO *p)

{

h->sig=p;

}

enc(NODO *h,int n)

{

NODO *aux,*p,*r;

aux=h;

while(aux)

{

if(aux->info==n)

{

return 1;

}

aux=aux->sig;

}

return 0;

}

Este es un programa simple para la utilizacin de una lista* doblemente ligada

ArchivosLos archivos son estructuras de datos permanentes, los hay de dos tipos, bsicamente, binarios y de texto. Los archivos de texto son una secuencia de lneas, donde cada linea tiene cero o ms caracteres y termina con uno o ms caracteres que indican el fin de lnea, en cambio, un archivo binario es todo lo dems, los datos son escritos y ledos, sin embargo, los caracteres nulo y fin de lnea no tienen significado especial.

Apertura de un archivo

Para poder usar un archivo, es necesario abrirlo, la funcin fopen() sirve para eso, su sintaxis es:

ptr =fopen(Nombre_de_archivo,modo); Donde ptr es un apuntador a archivo.

Cuando se abre un archivo, queda disponible para leer de l, o escribir en l, segn sea el caso. Veamos las diferentes formas en que se abre un archivo:

ModoSignificado

rAbre el archivo para lectura.

wAbre el archivo para escritura. Si el archivo no existe, es creado. Si existe, es borrado y creado de nuevo.

aAbre el archivo para adicin. Si el archivo no existe, es creado. Si ya existe, los datos son agregados al final.

r+Abre el archivo para lectura y escritura. Si no existe, es creado. Si existe, se aaden nuevos datos al inicio del archivo, sobreescribiendo los existentes.

w+Abre el archivo para lectura y escritura. Si el archivo no existe, es creado. Si existe, el archivo es sobreescrito.

a+Abre el archivo para lectura y adicin. Si el archivo no existe, es creado. Si existe, los nuevos datos son aadidos al final del archivo.

Posteriormente podremos continuar aprendiendo sobre estructuras de datos como

Listas

Pilas

Colas

rboles

Archivos

En el prximo curso.

Definiciones

Archivos de cabecera

Declaracin de variables globales

Comentarios

Prototipo de funciones

Cuerpo del programa

Implementacin de funciones

ndices

Valor

* Rango de valores permitidos en computacin.

* La sentencia break no siempre es necesaria.

* Estructura de datos con memoria dinmica

PAGE Pgina 30