Sie sind auf Seite 1von 135

Rodolfo Gallardo-Rosales

Programacin en Lenguaje C
Universidad de Colima

Colima, Col.

Copyright 2001 por Rodolfo Gallardo-Rosales


rodolfo@gallardo.cc
http://www.gallardo.cc
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Programacin en Lenguaje C avanzado


Estado del presente documento
Este documento es un manual rpido para aprender a programar en Lenguaje C,
dedicado en especial a los estudiantes de programacin en Lenguaje C, que es editado
con el propsito de complementar la informacin que pueda ser encontrada en el mercado,
uniendo el anlisis de varios textos en un solo documento.

Introduccin
El lenguaje C fu implementado e inventado por Dennis Ritchie en un DEC PDP-11 bajo
UNIX; basado en dos lenguajes anteriores: BCPL de Martn Richards y B de Ken
Thompson.
C es un lenguaje de nivel medio, porque combina elementos de lenguajes de alto nivel con
la funcionalidad del ensamblador; es portable, porque si se escribe para un tipo de
computadora, se puede adaptar a otra.
Aunque es un lenguaje estructurado, no permite la creacin de funciones dentro de
funciones.
El componente estructural principal de C es la funcin.

Tabla de contenidos
1. El entorno de Turbo C
1.1. Sumario de las rdenes del men principal
1.2. Abreviaturas del teclado de Turbo C
1.3. Uso del editor de Turbo C
2. Lenguaje C
2.1. Introduccin
2.2. Variables, constantes, operadores y expresiones
2.3. Sentencias de control de programa
2.4. Funciones
2.5. Arrays
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

2.6. Punteros
2.7. Estructuras, uniones y variables definidas por el usuario
2.8. Entrada, salida y archivos de disco
2.9. El preprocesador de Turbo C
2.10. Funciones grficas y de pantalla
3. La biblioteca de Turbo C
3.1. Funciones de E/S
3.2. Funciones de cadenas, memoria y caracteres
3.3. Funciones matemticas
3.4. Funciones de hora, fecha y otras del sistema
3.5. Funciones de aignacin dinmica de memoria
3.6. Funciones de directorio
3.7. Funciones de control de procesos
3.8. Funciones de grficos y de la pantalla de texto
3.9. Funciones variadas
4. Librera de programas
5. Bibliografa

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

1. El entorno de Turbo C
1.1. Sumario de las rdenes del men principal
Elemento

Opciones

File
Edit
Run
Compile
Project
Options
Debug
Break/Watch

Carga y graba archivos, maneja directorios, invoca a DOS y termina


Invoca al editor de Turbo C
Compila, enlaza y ejecuta el programa cargado
Compila el programa cargado
Gestiona proyectos de varios archivos
Diversas opciones de compilacin y enlazado
Diversas opciones de depuracin
Inspecciona expresiones y puntos de ruptura

Men File
Sub-elemento

Accin

Load
Pick
New
Save
Write to
Directory
Change dir
OS shell
Quit

Cargar programa
Escoger programa
Nuevo programa
Guardar programa
Escribir en...
Directorio
Cambiar directorio
Sale temporalmente a MS_DOS
Terminar

Men Edit
Se activa el editor de Turbo C
Men Run
Sub-elemento

Accin

Run
Program reset
Goto cursor
Trace into
Step over
User screen

Ejecutar programa
Reinicializacin de programa
Ejecutar programa hasta donde est el cursor
Trazar dentro
Saltarse
Pantalla del usuario

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Men Compile
Sub-elemento

Accin

Compile to OBJ
Make EXE file
Link EXE file
Build all
Primary C file
Get info

Compilar a archivo .OBJ


Crear archivo .EXE
Enlazar archivo .EXE
Construr todo
Archivo primario de C
Obtener informacin

Men Project
Sub-elemento

Accin

Project name
Break make on
Auto dependencies
Clear project
Remove messages

Nombre del proyecto


Detener la creacin por...
Auto dependencias
Termina con proyecto
Eliminar mensajes

Men Options
Sub-elemento

Accin

Compiler
Linker
Environment
Directories
Arguments
Save options
Retrieve options

Compilador
Enlazador
Entorno
Directorios
Argumentos
Guardar opciones
Recuperar opciones

Men Debug
Sub-elemento

Accin

Evaluate
Call stack
Find function
Refresh display
Display swapping
Source debugging

Evaluar
Pila de llamada
Encontrar funcin
Refrescar pantalla
Cambio de pantalla
Depuracin de fuente

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Men Break/Watch
Sub-elemento

Accin

Add watch
Delete watch
Edit Watch
Remove all
Toggle breakpoint
Clear all
View next

Aadir inspector
Borrar inspector
Editar inspector
Elimina todos los inspectores watches
Poner o quitar puntos de ruptura
Quitar todos los puntos de ruptura breakpoints
Ver siguiente punto de ruptura breakpoint

1.2. Abreviaturas del teclado de Turbo C


Abreviatura
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10

Accin
Ayuda
Grabar archivo
Carga archivo
Ejecuta hasta cursor
Ampla ventana
Cambio entre ventanas
Traza dentro de llamadas a funcin
Traza sin entrar a funcin
Compila y enlaza
Cambia entre editor y men

Alt-F1
Alt-F3
Alt-F5
Alt-F6
Alt-F7
Alt-F8
Alt-F9
Alt-C
Alt-D
Alt-E
Alt-F
Alt-O
Alt-P
Alt-R
Alt-X

Ultima pantalla de ayuda


Escoge archivo a cargar
Cambia entre pantalla de usuario y editor
Cambia entre ventanas de inspeccin y mensajes
Error anterior
Error siguiente
Compila a .OBJ
Men Compile (Compila)
Men Debug (Depurador)
Men Edit (Editar)
Men File (Archivo)
Men Options (Opciones)
Men Project (Proyecto)
Men Run (Ejecutar)
Sale de Turbo C

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Ctrl-F1
Ctrl-F2
Ctrl-F3
Ctrl-F4
Ctrl-F7
Ctrl-F8
Ctrl-F9

Ayuda donde est el cursor


Devuelve programa a estado inicial
Muestra Call stack
Evala expresiones
Inspecciona expresin
Activa/Desactiva breakpoint
Ejecuta programa actual

1.3. Uso del editor de Turbo C


Ordenes de cursor
Ctrl-R
Ctrl-C
Inicio
Fin
Ctrl-RePg
Ctrl-AvPg
Ctrl-Inicio
Ctrl-Fin

Accin
Mover una pantalla hacia arriba (RePg)
Mover una pantalla hacia abajo (AvPg)
Va a inicio de lnea
Va a fin de lnea
Principio de archivo
Fin de archivo
Principio de pantalla
Fin de pantalla

Ordenes de borrado Accin


Ctrl-Y
Borra lnea completa
Ctrl-QY
Borra hasta fin de lnea
Ctrl-T
Borra palabra a la derecha del cursor
Ordenes de bloque
Ctrl-KB
Ctrl-KK
Ctrl-KT
Ctrl-KC
Ctrl-KY
Ctrl-KH
Ctrl-KV
Ctrl-KW
Ctrl-KR
Ctrl-KP

Accin
Marca comienzo de bloque
Marca fin de bloque
Marca palabra
Copia bloque marcado
Borra bloque marcado
Oculta o muestra bloque
Mueve bloque marcado
Escribe bloque marcado a disco
Lee bloque marcado de disco
Imprime bloque marcado

Ordenes de bsqueda Accin


Ctrl-QF
Buscar
Ctrl-QA
Buscar y reemplazar
Ctrl-L
Repite bsqueda

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

2. Lenguaje C
2.1. Introduccin
Una forma tpica de estructuracin en C es mediante el uso de bloques de cdigo, que es un
grupo de sentencias conectadas en forma lgica que es tratado como una unidad. En C se
colocan entre llaves.
Ejemplo:
if (x<10){
printf("demasiado pequeo, pruebe de nuevo...");
reini_contador(-1);
}
El bloque se ejecuta slo si x es menor que 10.
C tiene slo 43 palabras clave:
32 definidas por el estndar ANSI
auto
break
case
char
const
continue
default
do

double
else
enum
extern
float
for
goto
if

int
long
register
return
short
signed
sizeof
static

struct
switch
typedef
union
unsigned
void
volatile
while

_ds
far
pascal

_es
huge

11 aadidas por Turbo C


asm
_ss
interrupt

_cs
cdecl
near

Todos los programas en C consisten de una o ms funciones. La nica que debe estar
absolutamente presente es la demnominada main()

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

La forma general de un programa en C es:


declaraciones globales
main()
{
variables locales
secuencia de sentencias
}
f1()
{
variables locales
secuencia de sentencias
}
f2()
{
variables locales
secuencia de sentencias
}
.
.
.
fn()
{
variables locales
secuencia de sentencias
}
Trminos ms frecuentes usados en la programacin en Turbo C:
Cdigo fuente:

Texto de un programa, es la entrada al


compilador, su extensin es .C

Cdigo objeto:

Traduccin del cdigo fuente a cdigo mquina,


es la entrada al enlazador, su extensin es .OBJ

Enlazador:

Programa que enlaza funciones para prodiucir un


solo programa, su salida es el cdigo ejecutable,
cuya extensin es .EXE

Biblioteca:

Archivos que contienen las funciones estndar de


C

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Tiempo de compilacin:

Lo que sucede mientras un programa es


compilado

Tiempo de ejecucin:

Lo que sucede mientras un programa es ejecutado

2.2. Variables, constantes, operadores y expresiones


Existen 5 tipos de datos atmicos: carcter, entero, punto flotante, punto flotante de doble
precisin, y sin valor.
Tamao y rango:
Tipo

Tamao en bits

Rango

char
int
float
double
void

8
16
32
64
0

0..255
-32768..32767
3-4E-38..3-4E+38
1.7E-308..1.7E+308
sin valor

char:
int:
float y double:
void:

valores definidos en caracteres ASCII


variables enteras
variables reales
sirve para
a. declarar una funcin que no devuelva un valor
b. declarar una funcin sin parmetros
c. crear punteros genricos

Modificadores:
signed, unsigned, short, long: para variables int y char
long: para variables double
const: variables que no pueden ser cambiadas durante la ejecucin del programa
ejemplo:
const int a;
/*no est inicializada*/
const int cuenta=100; /*ya inicializada*/
volatile: indica que puede cambiar por medios no especificados
explcitamente.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Declaracin de variables
La forma general es:
tipo lista_de_variables;
ejemplos:
int i, j, l;
short int si;
unsigned int u;
double balance, beneficio, perdida;
Variables locales: son las que se declaran dentro de una funcin, son conocidas slo
dentro del bloque de cdigo.
ejemplo:
void func1(void)
{
int x;
x=10;
}
otro ejemplo:
void f(void)
{
int t;
scanf ("%d",&t);
if (t==1){
char s[80]; /*se crea al entrar al bloque*/
printf("introduzca el nombre");
gets(s);
procesar(s);
}
/*aqu no se conoce s*/
}
Parmetros formales
Si una funcin va a usar argumentos, debe declarar las variables que van a aceptar los
valores de los argumentos. Se deben dar tras el nombre de la funcin y entre parntesis.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

ejemplo:
/*devuelve 1 si c es parte de la cadena, si no devielve un 0*/
esta_en(char s, char c)
{
while (*s)
if (*s==c) return 1;
else s++;
return 0;
}
Variables globales
Son las que se conocen a lo largo de todo el programa y se pueden usar en cualquier parte
del cdigo, adems mantiene su valor durante toda la ejecucin del programa; se crean al
declararse fuera de todas las funciones.
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 1 y 2
Especificadores de clase de almacenamiento
Son cuatro especificadores:
extern
static
register
auto
su forma general es:
especificador_de_almacenamiento tipo nombre_de_variable;
-> extern
Se usa para compilar programas por separado; en uno de ellos se declaran las variables
globales, y en los otros, como extern.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Archivo 1

Archivo 2

Archivo 3

int x,y;
char ch;
main(void)
{
------------------------}

extern int x,y;


extern char ch;
void func1(void)
{
------------------------}

extern int x,y;


extern char ch;
void func2(void)
{
------------------------}

-> Variables estticas (locales)


Son variables permanentes que mantienen su valor entre llamadas, si no se permitiera usar
static, habra que usar variables globales. Un ejemplo se ilustra con la funcin cuenta().
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 3 y 4
-> Variables estticas (globales)
Indican al compilador que cree una variable global slo en ste archivo, por lo que las
rutinas de otros archivos no la reconocern ni alterarn.
ejemplo:
/*debiera estar en un slo archivo*/
static int num;
int series(void);
void comienza_series(int semilla);
series(void)
{
num=num+23;
return (num);
}
/*inicializacin de num*/
void comienza_series(int semilla)
{
num=semilla;
}

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> Variables registro


Las operaciones sobre variables registro son mucho ms rpidas que sobre variables
guardadas en memoria. Cuando una variable est realmente guardada en la CPU no
requiere acceso a memoria para determinar o modificar su valor.
Son ideales para el control de bucles.
ejemplo:
pot_ent(int m, register int e)
{
register int temp;
temp=1;
for (;e;e--) temp *=m;
return temp;
}
Sentencias de asignacin
Su forma general es:
nombre_de_variable=expresin;
donde expresin puede ser una constante o una combinacin de variabes, operadores y
constantes.
Conversin de tipo en las asignaciones
Cuando se mezclan variables de un tipo con variables de otro, se da la conversin de tipo;
el valor del lado derecho se convierte al tipo del lado izquierdo.
ejemplo:
int x;
char ch;
float f;
void func(void)
{
ch=x; /*x ahora es caracter*/
x=f; /*f ahora es entero*/
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

f=ch; /*ch ahora es flotante*/


f=x; /*x ahora es flotante*/
}
Inicializacin de variables
Se hace colocando el signo igual y una constante despus del nombre de una variable.
Forma general:
tipo nombre_de_variable=constante;
ejemplos:
char ch='a';
int primero=0;
float balance=123.45;
Constantes
Son valores fijos que no pueden ser alterados por el programa. Una constante de cadena,
ser entre " ", como "es una prueba". La de un solo carcter, con comillas simples, como en
'a'.
ejemplos:
char
'a', '\n', '9'
int
1, 123, 21000, -234
long int
35000, -34
short int
10, -12, 90
unsigned int 10000, 987, 40000
float
123.45, 4.34e-3
double
12345.67, 112356476, -0.9876756
Constantes de carcter con barra invertida
Algunos caracteres no se pueden traducir desde el teclado, como el <cr>, por ejemplo:
c='\t';
printf("esto es una prueba\n");
Asigna tabulacin a c y escribe la cadena y <cr>

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Cdigos de barra invertida


Cdigo

Significado

\b
\f
\n
\r
\t
\"
\'
\0
\\
\v
\a
\o
\x

Espacio atrs
Salto de pgina
Salto de lnea
Retorno de carro
Tabulacin horizontal
Comillas dobles
Comilla simple
Nulo
Barra invertida
Tabulacin vertical
Alerta
Constante octal
Constante hexadecimal

Operadores
Smbolos que indican al compilador que efecte ciertas manipulaciones matemticas o
lgicas.
-> Operadores aritmticos
+
*
/
%
-++

Resta y menos monario


Suma
Multiplicacin
Divisin
Divisin en mdulo
Decremento
Incremento

ejemplo:
int x, y;
x=10;
y=3;
printf ("%d", x/y); /*muestra 3*/
printf ("%d", x%y); /*muestra 1*/

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Respecto a incremento y decremento:


x=x+1;
x=x-1;

equivale a
equivale a

++x;
--x;

Operadores relacionales y lgicos


Relacional: se refiere a la relacin entre unos valores y otros.
Lgico: se refiere a las formas en que las relaciones se pueden conectar entre s siguiendo
las reglas de la lgica formal.
-> Operadores relacionales:
>
>=
<
<=
==
!=

Mayor que
Mayor que o igual a
Menor que
Menor que o igual a
Igual a
No igual a

-> Operadores lgicos


&&
And (Y)
||
Or (O)
!
Not (NO)
Tabla de verdad de los operadores lgicos
p

p&&q

p||q

!p

0
0
1
1

0
1
0
1

0
0
0
1

0
1
1
1

1
1
0
0

Operadores a nivel de bits


Se refieren a la comprobacin, asignacin o desplazamiento de los bits reales
que componen un byte o una palabra.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> Operadores a nivel de bits


&
|
^
~
>>
<<

Y
O
= exclusiva (XOR)
Complemento a uno
Desplazamiento a la derecha
Desplazamiento a la izquierda

Tabla de verdad de XOR


p

p^q

0
0
1
1

0
1
0
1

0
1
1
0

Un ejemplo de uso:
char obtener_car_del_modem(void)
{
char c;
c=leer_modem();
return (c&127);
}
El & pone el bit de paridad a cero. Suponiendo que se ha recibido una letra
'A', entonces:
11000001
'A' con paridad 1
01111111
127
-------&
01000001
'A' sin paridad
El | pone el bit de paridad a uno, por ejemplo:
01000001
10000000
-------|
11000001

'A' sin paridad


128
'A' con paridad 1

La ^ pone a uno slo los bits que al compararse sean distintos, por ejemplo:

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

01111111
127
01111000
-------^
00000111
Los operadores >> y << mueven todos los bits a la derecha o izquierda, por
ejemplo:
x=7
x=x<<1;
x=x<<3;
x=x<<2;
x=x>>1;
x=x>>2;

00000111
00001110
01110000
11000000
01100000
00011000

7
14
112
192
96
24

El operador de complemento a uno (~) cambia el estado de cada bit en la


variable especificada, por ejemplo:
byte original
00101100
1er. complemento 11010011
2do. complemento 00101100
-> El operador ?
Operador ternario que puede usarse para sustituir ciertas sentencias de la
forma if-then-else.
Su forma general es:
expresin1? expresin2: expresin3;
Ejemplo:
Forma ?
x=10;
y=x>9? 100: 200;

Forma if-then-else
x=10;
if (x>9) y=100;
else y=200;

-> Los operadores de puntero & y *


Un puntero es la direccin de memoria de una variable
ejemplo:
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

m=&cont;
coloca en m la direccin de memoria de la variable cont, supongamos que sea
la posicin de memoria 2000, m tendr el valor de 2000.

si anotamos:

q=*m;

entonces, devuelve a q el valor ubicado en la direccin de memoria que se


especifica, devolver cont.
Las variables que vayan a mantener direcciones de memoria, se declararn
colocando un * delante del nombre.
ejemplo:
char *c;
int x, *y, cont;
cdigo ejemplo:
main(void)
{
int destino, fuente;
int *m;
fuente=10;
m=&fuente;
destino=*m;
return 0;
}
-> El operador de tiempo de compilacin sizeof
Es un operador monario que devuelve la longitud en bytes, de la variable
entre parntesis.
Es muy til para desarrollar cdigo a ejecutarse en diferentes entornos, por
ejemplo:
poner_reg(FILE *fp, int reg[6])
{
int long num;
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

longit=sizeof(reg);
num=fwrite(reg,longit,l,fp);
if (num<>1) printf ("error de escritura...");
}
-> La coma como operador
La coma encadena varias expresiones. La parte izquierda se evala como void,
y el valor de la derecha tomar el valor total de la expresin.
ejemplo:
x=(y=3, y+1); /*x vale 4*/
y=10;
x=(y=y-5, 25/y); /*x vale 5*/
-> Los operadores . y ->
hacen referencia a elementos individuales de las estructuras y las uniones,
tipos de datos compuestos denominados bajo un solo nombre.
El punto se usa cuando se trabaja realmente con la estructura o la unin. El
operador flecha, cuando se usa un puntero a una estructura.
ejemplo:
struct empleado{
char nombre[80];
int edad;
float sueldo;
}emp;
Para asignar el valor 123.45 al elemento sueldo de la estructura emp, se
realizara as:
emp.sueldo=123.45;

y usando un puntero a la estructura emp, sera de esta manera:


emp->sueldo=123.45;

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> Los operadores [] y ()


En C los parntesis son operadores que aumentan la precedencia de las
operaciones. Los corchetes llevan a cabo el indexamiento de arrays. Dado un
array, la expresin entre corchetes proporciona un ndice para el array.
Actividad
>> Desarrollar en TC los programas ejemplo Nos. 5 y 6

2.3. Sentencias de control de programa


Sentencias condicionales
C soporta dos tipos de sentencias condicionales: if y switch.
if
La forma general es:
if (expresin) sentencia;
else (sentencia);
donde sentencia puede ser simple o un bloque de sentencias. Else es opcional.
Con bloques de sentencias, la forma general ser:
if (expresin){
secuencia_de_sentencias
}
else{
secuencia_de_sentencias
}
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 7 y 8
ifs anidados
Se deben usar llaves para saltarse la asociacin normal, por ejemplo:
if (x){
if (y) printf("1");
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

}
else printf ("2");
Para ver el programa "mgico" mejorado se sugiere la siguiente
Actividad:
>> Desarrolar en TC los programas ejemplo Nos. 9 y 10
La escala if-else-if
Su forma general es:
if (expresin)
sentencia;
else if (expresin)
sentencia;
else if (expresin)
sentencia;
else
sentencia;
Utilizando lo anterior, se puede mejorar el programa mgico, para lo que se
sugiere la siguiente
Actvidad:
>> Desarrollar en TC los programas ejemplo Nos. 11 y 12
La alternativa ?
Su forma general es:
expresin1? expresin2: expresin3;
Para ver el programa mgico con esta alternativa, se sugiere la siguiente
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 13 y 14

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

switch
Sentencia de decisin de ramificacin mltiple.
Forma general:
switch (variable){
case constante1:
secuencia_de_sentencias
break;
case constante2:
secuencia_de_sentencias
break;
case constante3:
secuencia_de_sentencias
break;
.
.
.
default:
secuencia_de_sentencias
}
default se ejecuta slo si no se encuentra ninguna correspondencia.
ejemplo:
void menu(void)
{
char c;
printf("1. Comprobar ortografa\n");
printf("2. Corregir errores ortogrficos\n");
printf("3. Mostrar errores ortogrficos");
printf("Pulse cualquier otra tecla para terminar...");
printf("Introduzca su opcin...");
c=getche();
switch (c){
case '1':
comprobar_ortografia();
break;
case '2':
corregir_errores();
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

break;
case '3':
mostrar_errores();
break;
default:
printf("Ninguna opcin seleccionada...");
}
}
Sentencias switch anidadas
Cuando un switch forma parte de la secuencia de otro switch, por ejemplo:
switch(x){
case 1:
switch (y){
case 0: printf ("divisin por cero");
break;
case 1: procesar (x, y);
}
break;
case 2:
}
Bucles for, while y do
for
Su forma general es:
for (inicializacin;condicin;incremento) sentencia;
inicializacin normalmente es una sentencia de asignacin, tambin llamada
variable de control
condicin es una expresin relacional que determina cundo finaliza el bucle
incremento define cmo cambia la variable de control
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 15 y 16
Con mltiples sentencias, se maneja como un bloque.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

ejemplo:
for (x=100;x!=65;x-=5) {
z=sqrt(x);
printf ("La raz cuadrada de %d, es %f", x, z);
}
Otro ejemplo sera:
void conexin(void)
{
char cad[20];
int x;
for(x=0;x<3&&strcmp(cad,"clave");++x){
printf("Password:");
gets(cad);
}
if(x==3) cerrar();
}
El bucle infinito
Se realiza dejando la expresin condicional vaca, por ejemplo:
for(;;) printf ("Este bucle estar siempre ejecutndose\n");
La sentencia break, se usar para dar fin al bucle, por ejemplo:
c='\0';
for(;;){
c=getchar();
/*obtener un caracter*/
if (c=='A') break; /*salir del bucle*/
}
printf("Ha pulsado una A...")
este bucle se ejecutar hasta que se pulse una "A"
Los bucles for sin cuerpo
Pueden aplicarse para aumentar la eficiencia de algunos algoritmos o para
originar retardos.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

ejemplo:
for(t=0;t<ALGUN_VALOR;t++);
El bucle while
Forma general:
while (condicion) sentencia;
sentencia puede ser vaca, simple o bloque; condicin, puede ser cualquier
expresin, diferente de 0
ejemplo:
void esperar_caracter(void)
{
char c;
c='\0';
/*inicializa c*/
while (c!='A') c=getchar();
}
do/while
Analiza la condicin al final del bucle. El bucle se ejecuta al menos una
vez. Su forma general es:
do{
secuencia_de_sentencias
}while (condicin);
ejemplo:
do{
scanf("%d",&num);
}while(num>100);
Lee los nmeros del teclado hasta que encuentra uno menor o igual que 100.
Quizs el uso ms comn es en rutinas de selecin por men.
Ejemplo:
void menu(void)
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

{
char c;
printf("1. Comprobar ortografa\n");
printf("2. Corregir errores\n");
printf("3. Mostrar errores\n");
printf("Introduzca su opcin...");
do{
c=getche();
switch(c){
case '1':
comprobar_ortografia();
break;
case '2':
corregir_errores();
break;
case '3':
mostrar errores();
break;
}
}while (c!='1'&&c!='2'&&c!='3');
}
break
Tiene dos usos: para finalizar un case en switch o forzar la terminacin de
un bucle.
ejemplo:
Cuando encuentra break dentro del bucle, ste finaliza de inmediato.
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 17 y 18
ejemplo:
El siguiente cdigo, puede detener la ejecucin del bucle al presionar una
tecla. "kbhit()" devuelve 0 si no se presiona una tecla.
localiza (char *nombre)
{
char tnombre[40];
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

int pos;
pos=-1;
do {
pos=leer_sig_nombre(tnombre);
if (kbhit()) break;
}while (!strcmp(tnombre, nombre));
return pos;
}
exit()
Esta funcin permite salir anticipadamente de un programa, y forzar la vuelta
al sistema operativo.
forma general:
void exit(int estado);
Generalmente estado devuelve un cero (0 se usa como argumento para
terminacin normal)
ejemplo:
mein(void)
{
if (!tarjeta_color()) exit(1);
jugar();
return 0;
}
Como otro ejemplo, podemos considerar el uso de exit() en una versin de la
funcin menu() para abandonar el programa y volveer al sistema operativo.
void menu(void)
{
char c;
printf("1. Comprobar ortografa\n");
printf("2. Corregir errores\n");
printf("3. Mostrar errores\n");
printf("4. Salir\n");
printf("Introduzca su opcin...");
do{
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

c=getchar();
switch(c){
case '1':
comprobar();
break;
case '2':
corregir();
break;
case '3':
mostrar();
break;
case '4':
exit(0);
}
}while (c!='1'&&c!='2'&&c!='3');
}
continue
Funciona de manera similar a break, pero en vez de forzar la terminacin,
forza una nueva iteracin del bucle. Por ejemplo:
do{
scanf("%d", &num);
if(x<0) continue;
printf("%d",x);
}while(x!=100);
esta fraccin de cdigo, muestra slo nmeros positivos.

2.4. Funciones
Las funciones son los bloques constructores de C y el lugar donde se da toda
la actividad del programa.
Su forma general es:
especificador_de_tipo nombre_de_funcin(lista_de_parmetros)
{
cuerpo_de_la_funcin
}
especificador_de_tipo: es el tipo de valor que devuelve la sentencia return
de la funcin. Si no se especifica ninguno, asume que es un entero.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lista_de_parmetros: son los parmetros separados por comas, que son los
argumentos cuando se llama a la funcin. Si no tiene parmetros, contiene la
palabra "void".
return
Tiene dos usos importantes: primero, una salida inmediata de la funcin, o
que vuelva al cdigo que la llam; segundo, para devolver un valor.
Todas las funciones, excepto las de tipo void, devuelven un valor, y pueden
ser usadas como operando en una expresin.
main() devuelve un cdigo de terminacin; 0 significa que el programa ha
terminado normalmente.
Argumentos de las funciones
Si una funcin va a usar argumentos, debe declarar variables que acepten los
valores de los argumentos, stas se llaman parmetros formales.
ejemplo:
esta_en(char *cad, char c)
{
while (*cad)
if (*cad==c) return 1;
else cad++;
return 0;
}
Prototipos de funciones
Se aplica en C la declaracin anticipada tradicional de funciones.
Cualquier funcin de la biblioteca estndar que se use en un programa debe
estar prototipada. Se debe incluir el archivo de cabecera apropiado.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Archivos de cabecera de Turbo C


Archivo

Funciones

alloc.h
assert.h
bios.h
conio.h
ctype.h
dir.h
dos.h
errno.h
fcntl.h
float.h
graphics.h
io.h
limits.h
locale.h
math.h
mem.h
process.h
setjmp.h
share.h
signal.h
stdargs.h
stddef.h
stdio.h
stdlib.h
string.h
sys\stat.h
sys\timeb.h
sys\types.h
time.h
values.h

Asignacin dinmica de memoria


Define la funcin assert()
Interface con el BIOS
Entrada/salida por consola
Relacionadas con caracteres
Relacionadas con directorios
Interface con el DOS
Define varios cdigos de error
Constantes de tipo UNIX
Lmites reales de punto flotante
Relacionadas con grficos
Entrada/salida de bajo nivel
Lmites de enteros
Especficas de pases
Matemticas
Manipulacin de memoria
Control de procesos
requerido por setjmp() y logjmp()
Comparticin de archivos
Soporte para signal() y raise()
Argumentos de longitud variable
Tipos y macros estndar
Entrada/salida estndar
Variadas
Relacionadas con cadenas
Constantes relacionadas con archivos
Soporta la funcin ftime()
Define time_t para hora
Hora y fecha
Constantes varias

2.5. Arrays
Un array es una coleccin de variables del mismo tipo que se denominan por un
nombre comn y diferenciado por un ndice.
Arrays unidimensionales
La forma general es:

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

tipo nombre_de_variable[tamao];
Todos los arrays tienen 0 como ndice de su primer elemento, as:
char p[10];
tiene diez elementos, desde p[0] hasta p[9].
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 19 y 20
Cadenas
El uso ms comn de array unidimensional es como un string. Termina siempre
con un caracter nulo ('\0'), por lo que la declaracin debe ser un caracter
ms.
strcpy(), strcat(), strlen() y strcmp()
Sus formas generales son:
strcpy(cadena1, cadena2);
Copya la cadena 1 en la cadena 2.
strcat(cadena1, cadena2);
Concatena las cadenas 1 y 2.
strlen(cadena);
Devuelve el nmero de caracteres de una cadena.
strcmp(cadena1, cadena2);
Compara las cadenas 1 y 2.
Actividad:
>> Desarrolar en TC los programas ejemplo Nos. 21 y 22
Arrays bidimensionales

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Son esencialmente un array de arrays unidimensionales.


Su forma general es:
tipo nombre[tamao 2a. dimesin] [tamao 1a. dimensin];
ejemplo:
int d[10][20];
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 23, 24, 25 y 26

2.6. Punteros
La importancia de los punteros se basa en:
1. Proporcionan los medios por los cuales las funciones modifican sus
argumentos de llamada.
2. Soportan rutinas de asignacin dinmica de TC
3. Mejora la eficiencia de ciertas rutinas.
4. Se usan como soportes de ciertas estructuras de datos como las listas
enlazadas y rboles binarios.
Un puntero es una variable que contiene una direccin de memoria, que es la
posicin de otra variable. Si eso ocurre, se dice que la variable apunta a la
segunda.
Si una variable en 1004 est apuntada por otra situada en la posicin 1000,
esta ltima contiene el valor 1004
-> Variable puntero
Consiste en un tipo base, un asterisco (*) y el nombre de la variable. Su
forma general es:
tipo *nombre;
-> Los operadores de punteros
Existen dos operadores especiales de punteros: & y *. El ampersand (&) es un
operador monario que devuelve la direccin de memoria de su operando; por
ejemplo:

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

m=&cuenta;
pone en m la direccin de memoria de la variable "cuenta".
El asterisco (*) es el complemento de &. Es un operador monario que devuelve
el valor de la variable localizada en la direccin que sigue; por ejemplo:
q=*m;
pone el valor de la variable cuenta en q.
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 27, 28 y 29

2.7. Estructuras, uniones y variables definidas por el usuario


El lenguaje C proporciona cinco formas diferentes de creacin de tipos de
datos propios:
1. La estructura es una agrupacin de variables bajo un nombre.
2. El campo de bits es una variacin de la estructura.
3. La unin permite que la misma parte de memoria sea definido como dos o ms
tipos diferentes de memoria.
4. La enumeracin es una lista de smbolos.
5. typedef crea un nuevo nombre para un tipo ya existente.
-> estructuras
Es una coleccin de variables bajo un mismo nombre para mantener junta la
informacin relacionada.
struct indica al compilador que se est declarando una estructura.
La forma general es:
struct etiqueta{
tipo nombre_de_variable;
tipo nombre_de_variable;
tipo nombre_de_variable;
}variables_de_estructura;
Por ejemplo:

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

struct dir{
char nombre[30];
char calle[40];
char ciudad[20];
char estado[3];
long int codigo;
}info_dir, binfo, cinfo;
Para referir los elementos individuales de la estructura, se usar el
operador . (punto); por ejemplo:
info_dir.codigo=12345;
printf("%d", info_dir.codigo);
gets(info_dir.nombre);
El uso ms comn, ser el de array de estructuras; primero se declara la
estructura y luego el array.
Por ejemplo:
#define MAX 100
struct inv{
char item[30];
float coste;
int dispo;
}info_inv[MAX];
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 30, 31 y 32

-> Campos de bits


Mtodo incorporado por C para acceder a un bit individual dentro de un byte.
Ser til cuando:
1. El almacenamiento es limitado, se pueden almacenar varias variables
lgicas en un byte.
2. Ciertos dispositivos transmiten la informacin codificada en los bits
dentro de bytes.
3. Ciertas rutinas de cifrado necesitan acceder a los bits dentro de los
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

bytes.
La forma general es:
struct etiqueta{
tipo nombre1: longitud;
tipo nombre2: longitud;
.
.
.
.
.
.
tipo nombren: longitud;
}
Los tipos deben ser int, unsigned o signed.
Por ejemplo:
struct dispositivo{
unsigned activo: 1;
unsigned preparado: 1;
unsigned error: 1;
}codigo_disp;
-> Uniones
Una unin es una posicin de memoria que es compartida por varias variables
de diferentes tipos, su declaracin es similar a una estructura, por ejemplo:
union tipo_n{
int i;
char ch;
};
-> Enumeraciones
Conjunto de constantes enteras con nombre que especifica todos los valores
vlidos que una variable de ese tipo pueda tener.
La forma general es:
enum etiqueta{lista_de_enumeraciones} variables;
Por ejemplo:

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

enum moneda{penique, nquel, diez_centavos, cuarto, medio_dolar, dolar};


-> typedef
Permite definir un nuevo nombre de tipo.
Su forma general es:
typedef tipo nombre;
Por ejemplo:
typedef float balance;
y se puede usar para declarar otras variables, por ejemplo:
balance negativo;

2.8. Entrada salida y archivos de disco


Los conjuntos completos de funciones de E/S definidos en Turbo C son:
1. El sistema de E/S definido por el estndar ANSI, tambin denominado
sistema de archivos con buffer.
2. El sistema de E/S tipo UNIX, a veces referido como sistema de archivos sin
buffer.
3. Algunas funciones de E/S de bajo nivel que operan directamente sobre el
hardware de la computadora.
-> Flujos y archivos
Flujos: dispositivos, como terminales y controladores de disco y conta son
transformados en dispositivos lgicos llamados flujos. Los hay de texto y
binarios.
Flujos de texto: es una secuencia de caracteres.
Flujos binarios: es una secuencia de bytes con una correspondencia de 1 a 1
con los del dispositivo externo.
Archivos: es un concepto lgico aplicable a cualquier cosa, desde un archivo
de disco hasta una terminal.
Se asocia un flujo con un archivo realizando una operacin de apertura.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Se puede desasociar un flujo con un archivo por la operacin de cerrar.


Todos los archivos se cierran automticamente cuando termina main(), devuelve
el control al Sistema Operativo llamando a exit(). Cerrar el archivo, se hece
mediante fclose().
Los archivos no se cierran cuando un programa interrumpe su ejecucin por una
llamada a abort().
Al iniciar la ejecucin de un programa, se abren cinco flujos de texto
predefinidos:
stdin, stdout, stderr, stdaux, stdprin
definidos con los dispositivos estndar del sistema as:
flujo

dispositivo

stdin
stdout
stderr
stdaux
stdprn

teclado
pantalla
pantalla
primer puerto serie
impresora

-> E/S por consola


-> getche() y putchar()
getche() lee un caracter del teclado y putchar() lo pone en la pantalla.
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 33, 34 y 35
-> getch()
Trabaja igual que getche(), pero no muestra eco en la pantalla.
-> gets() y puts()
Permiten leer y escribir cadenas de caracteres.
Las funciones ms simples que realizan las operaciones de E/S por consola
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

son:
funcin

Operacin

getchar()
getche()
getch()
putchar()
gets()
puts()

Lee caracter del teclado, espera por enter


Lee caracter con eco, no espera enter
Lee sin eco, no espera enter
Escribe caracter en pantalla
Lee cadena del teclado
Escribe cadena en la pantalla

-> E/S por consola y con formato


-> printf()
Especificadores de formato para printf()
especificador
%c
%d
%i
%e
%f
%g
%o
%s
%u
%x
%%
%p
%n

aplicacin
caracter
decimal
decimal
notacin cientfica
real
%e o %f, el ms corto
octal
cadena
decimal sin signo
hexadecimal
signo %
puntero
puntero a entero

Por ejemplo:
%05d
%5.7s
%-10.2f

rellena con ceros para que sea de cinco espacios


imprime cadena de al menos 5 y no ms de 7 caracteres
ajusta a la izquierda, 10 espacios y dos decimales

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> scanf()
Especificadores de formato para scanf()
especificador
%c
%d
%i
%e
%f
%h
%o
%s
%x
%p
%n

aplicacin

caracter
decimal
decimal
real
real
corto
octal
cadena
hexadecimal
puntero
entero con nmero de caracteres ledos

Por ejemplo:
scanf("%20s", cad); lee slo 20 caracteres
Funciones ms comunes de un sistema de archivos
Funcin

Actividad

fopen()
fclose()
putc()
getc()
fseek()
fprintf()
fscanf()
feof()
ferror()
rewind()
remove()

Abre un flujo
Cierra un flujo
Escribe caracter a un flujo
Lee un caracter de un flujo
Busca un byte especfico en el flujo
Hace lo mismo que printf() en un flujo
Hace lo mismo que scanf() en un flujo
Cierto si es fin de archivo
Cierto si hay error
Resetea al principio del archivo
Elimina archivo

-> fopen()
Abre un flujo y lo asocia con un archivo, su forma general es:
FILE *fopen(*nombre_archivo, *modo);

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

modo puede tener los valores siguientes:


Modo

Significado

"r"
"w"
"a"
"rb"
"wb"
"ab"
"r+"
"w+"
"a+"
"r+b"
"w+b"
"a+b"
"rt"
"wt"
"at"
"r+t"
"w+t"
"a+t"

Abre archivo de texto, slo lectura


Abre archivo de texto, slo escritura
Abre archivo de texto slo para agregar
Abre archivo binario para lectura
Crea archivo binario para escritura
Crea archivo binario para agregar
Abre archivo de texto, lectura/escritura
Crea archivo de texto lectura/escritura
Abre o crea archivo de texto lectura/escritura
Abre binario lectura/escritura
Crea archivo binario lectura/escritura
Abre o crea archivo binario lectura/escritura
Abre archivo de texto para lectura
Crea archivo de texto para escritura
Abre archivo de texto para agregar
Abre archivo de texto para lectura/escritura
Crea archivo de texto lectura/escritura
Abre o crea archivo de texto lectura/escritura

Por ejemplo:
if((fp=fopen("prueba","w"))==NULL){
puts("no se puede abrir el archivo\n");
exit(1);
}
-> putc()
Escribe caracteres en un flujo abierto con fopen(). Si tiene xito, devuelve
el caracter escrito, si no, eof().
-> getc()
Lee caracteres de un flujo abierto con fopen().
-> fclose()
Cierra un flujo abierto con fopen().
-> ferror() y rewind()
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

ferror() determina si ha habido error en una operacin, si es as, devuelve


positivo. rewind() inicializa el indicador al principio del archivo.
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 36, 37 y 38.
-> getw() y putw()
Se usan para leer y escribir enteros de y en un archivo de disco.
-> fputs() y fgets()
Leen y escriben cadenas de caracteres sobre archivos de disco.
-> fread() y fwrite()
Sirven para leer y escribir bloques de datos
-> fseek() y E/S de acceso directo.
Son operaciones de lectura y escritura directa.
-> fprintf() y fscanf()
Se comportan como el printf() y el scanf(), pero redirigidos a un archivo.
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 39, 40 y 41.

2.9. El preprocesador de Turbo C


El preprocesador contiene las siguientes directivas:
#define
#error
#include
#if
#else
#elif
#endif
#ifdef
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

#ifndef
#undef
#line
#pragma
-> #define
Se usa para definir un identificador y una cadena que ser sustituda por el
identificador.
Su forma general es:
#define nombre_de_macro cadena
Por ejemplo:
#define MS_E "Error estndar en la entrada\n"
.
.
.
printf(MS_E)
-> #error
Forza a Turbo C a parar la compilacin, su forma general es:
#error mensaje_de_error
manda el mensaje de error cuando ste existe.
-> #include
Hace que el compilador incluya otro archivo fuente, debe estar entre comillas
(" ") o entre ngulos (< >), por ejemplo:
#include "stdio.h"
#include <stdio.h>
-> #if, #else, #elif y #endif
Si la expresin constante que sigue a #if es cierta, se compila el cdigo que
hay entre ella y #endif
Su forma general es:
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

#if expresin_constante
secuencia_dfe_sentencias
#endif
Por ejemplo:
#include <stdio.h>
#define MAX 100
main (void)
{
#if MAX>99
printf("Compilado para arrays mayores de 99\n");
#endif
return 0;
}
El #else proporciona una alternativa:
#include <stdio.h>
#define MAX 100
main(void)
{
#if MAX>99
printf("Compilado para arrays mayores de 99\n");
#else
printf("Compilado para arrays pequeos\n");
#endif
return 0;
}
#elif establece una escala if-else-if para opciones de compilacin mltiples.
Su forma general es:
#if expresin
sentencias
#elif expresin1
sentencias
#elif expresin2
sentencias
.
.
.
#elif expreinN
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

sentencias
#endif
Por ejemplo:
#define USA 0
#define GB 1
#define ESP 2
#define PAIS_ACTIVO ESP
#if PAIS_ACTIVO==USA
char moneda[]="dlar";
#elif PAIS_ACTIVO==GB
char moneda[]="libra";
#else
char moneda[]="peseta";
#endif
-> #ifdef y #ifndef
Significan "si definido" y "si no definido". Su forma general es:
#ifdef nombre_de_macro
sentencias
#endif
Por ejemplo:
#include <stdio.h>
#define TED 10
main(void)
{
#ifdef TED
printf("HOla, Ted!\n");
#else
printf("Hola, quienquiera que seas!\n");
#endif
return 0;
}
-> #line
Es el nmero de lnea que se est compilando. Su forma general es:

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

#line numero <<nombre_archivo>>


-> #pragma
Permite que se den varias instrucciones conforme al compilador; su forma
general es:
#pragma nombre
donde nombre puede ser:
inline
saveregs
warn

argused
exit
startup
option

argused, precede a una funcin y se usa para prevenir mensajes de advertencia


cuando no se usa la funcin.
exit, especifica una o ms funciones que se llamarn al terminar el programa.
startup, especifica una o ms funciones que se llamarn nada ms al comenzar
la ejecucin del programa.
Su forma general es:

#pragma exit funcin prioridad


#pragma startup funcin prioridad
prioridad es un valor entre 64 y 255, si no se especifica, es 100.
Actividad:
>> Desarrollar en TC los programas ejemplo Nos. 42, 43 y 44.

2.10. Funciones grficas y de pantalla.


Las funciones de E/S bsicas de texto para ventanas son:
cprintf()
cputs()
cputch()
getche()

escribe salida con formato


escribe cadena
escribe un caracter
lee un caracter
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

cgets()

lee una cadena

Funciones de Turbo C para manipulacin de la pantalla de texto:


clrscr()
clreol()
delline()
gettext()
gotoxy()
insline()
movetext()
puttext()
textmode()
window()

limpia ventana
borra hasta fin de lnea
borra la lnea
copia parte del texto al buffer de memoria
coloca cursos en la posicin indicada
inserta lnea vaca
copia texto de una parte a otra
copia texto de buffer a pantalla
establece modo texto en la pantalla
define y activa una ventana

Sus formas generales son:


-> clrscr();
-> clreol();
-> delline();
-> insline();
-> gotoxy(x,y);
x=1..80 y=1..25
-> gettext(izquierda, arriba, derecha, abajo, *buffer);

-> puttext(izquierda, arriba, derecha, abajo, *buffer);


buffer=filas x columnas x 2
-> movetext(arriba, izquierda, derecha, abajo, nuevoarriba, nuevoizquierda);
-> window(izquierda, arriba, derecha, abajo);
Actividad:
>> Desarrollar en TC el programa ejemplo No. 45.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Las funciones de los atributos de texto son:


highvideo()
lowvideo()
normvideo()
textattr()
textbackground()
textmode()

alta intensidad
baja intensidad
intensidad original
texto y fondo en color
color de fondo
modo de video

-> highvideo()
-> lowvideo()
-> normvideo()
-> textcolor(color)
color:
BLACK
BLUE
GREEN
CYAN
RED
MAGENTA

0
1
2
3
4
5

BROWN
LIGHTGRAY
DARKGRAY
LIGHTBLUE
LIGHTGREEN
LIGHTCYAN

6
7
8
9
10
11

-> textattr(atributo)
atributo: FONDO*16 | TEXTO
-> textmode(modo)
modo:
BW40
C40
BW80

0
1
2

C80
MONO
LASTMODE
C4350

Blanco y negro, 40 columnas


Color, 40 columnas
Blanco y negro, 80 columnas
3
7
-1
64

Color, 80 columnas
Monocromo, 80 columnas
Modo anterior
EGA 80X43, VGA 80X25

Tutorial
Turbo C

LIGHTRED
LIGHTMAGENTA
YELLOW
WHITE
BLINK

12
13
14
15
128

Rodolfo Gallardo-Rosales

Las funciones de estado de la pantalla de texto son:


gettextinfo()
wherex()
wherey()

Informacin sobre ventana


Coordenada de x
Coordenada de y

Actividad:
>> Desarrollar en TC el programa ejemplo No. 46.
Funciones de grficos:
initgraph(), para poner el adaptador en modo grfico, su forma es:
initgraph(*controlador, *modo, *camino);
Controladores y modos:
Controlador

Modo

CGA

CGAC0
CGAC1
CGAC2
CGAC3
CGAHI
MCGAC0
MCGAC1
MCGAC2
MCGAC3
MCGAMED
MCGAHI
EGALO
EGAHI
EGA64LO
EGA64HI
EGAMONOHI
HERCMONOHI
ATT400C0
ATT400C1
ATT400C2
ATT400C3
ATT400CMED
ATT400CHI

MCGA

EGA
EGA64
EGAMONO
HERC
ATT400

Equivalente Resolucin
0
1
2
3
4
0
1
2
3
4
5
0
1
0
1
3
0
0
1
2
3
4
5

Tutorial
Turbo C

320X200
320X200
320X200
320X200
640X200
320X200
320X200
320X200
320X200
640X200
640X480
640X200
640X350
640X200
640X350
640X350
720X348
320X200
320X200
320X200
320X200
640X200
640X400

Rodolfo Gallardo-Rosales

Controlador

Modo

VGA

VGALO
VGAMED
VGAHI
PC3270HI
IBM8514HI
IBM8514LO

PC3270
IBM8514

Equivalente Resolucin
0
1
2
0
0
0

640X200
640X350
640X480
720X350
1024X768
640X480

-> Grficos bsicos


-> putpixel()
Pone un punto en la pantalla. Forma general:
putpixel(x,y,color);
-> line()
Dibuja una lnea. Forma general:
line(x1,y1,x2,y2);
-> circle()
Dibuja un crculo. Forma general:
circle(x,y,radio):
-> setcolor()
Color del dibujo. Forma general:
setcolor(color);
-> floodfill()
Rellenar figura cerrada. Forma general:
floodfill(x,y,colorborde);
-> setfillstyle()
Cambia la manera de rellenar objetos. Forma general:
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

setfillstyle(patron,color);
patron:
EMPTY_FILL
SOLID_FILL
LINE_FILL
LTSLASH_FILL
SLASH_FILL
BKSLASH_FILL
LTBKSLASH_FILL
HATCH_FILL
XHATCH_FILL
INTERLEAVE_FILL
WIDE_DOT_FILL
CLOSE_DOT_FILL
USER_FILL

0
1
2
3
4
5
6
7
8
9
10
11
12

Rellena color del fondo


Rellena color liso
Rellena con lneas
Rellena con barras finas
Rellena con barras
Rellena con barras invertidas
Rellena con barras invertidas finas
Rellena con trama fina
Rellena con trama
Rellena con puntos espaciados
Rellena con puntos muy espaciados
Rellena con puntos poco espaciados
Rellena con patrn de usuario

Ejemplo:
circle(320,175,100);
setfillstyle(SOLID_FILL, GREEN);
floodfill(500,250,1);
Otro ejemplo:
void borde(void)
{
line(0,0,639,0);
line(0,0,0,349);
line(0,349,639,349);
line(639,0,639,349);
}
-> Texto en modo grfico
-> outtext()
Pone texto en la pantalla en modo grfico. Forma general:
outtext(cadena);
-> settextstyle()
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Define estilo, tamao y direccin del texto. Forma general:


settextstyle(fuente,direccin,tamao);
fuente:
DEFAULT_FONT
TRIPLEX_FONT
SMALL_FONT
SANS_SERIF_FONT
GOTHIC_FONT

0
1
2
3
4

direccin:
HORIZ_DIR
VERT_DIR

0
1

tamao:
0 a 10
Actividad:
>> Desarrollar en TC el programa ejemplo No. 47.
-> outtextxy()
Escribe texto en una posicin determinada. Su forma general es:
outtextxy(x,y,*cad);
Funciones de control de la pantalla grfica:
clearviewport()
getimage()
imagesize()
putimage()
setactivepage()
setviewpart()
setvisualpage()

Limpia ventana grfica


Copia parte de un grfico al buffer de memoria
Devuelve el nmero de bytes de una imagen
Copia buffer a pantalla
Qu pgina de afectar por los grficos
Crea ventana grfica
Determina la pgina que se muestra

Actividad:
>> Desarrollar en TC el programa ejemplo No. 48.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

3. La biblioteca de Turbo C
3.1. Funciones de E/S
-> access(*archivo,modo);
lib=io.h
Comprueba archivos, modo:
0
1
2
4
6

s existe
es ejecutable
se le puede escribir
se puede leer
acceso de lectura/escritura

Por ejemplo:
access("PRUEBA.PRU", 0);
-> _chmod(*archivo,fijar,atributo);
lib=io.h
Establece el byte de atributo para un archivo.
atributo:
FA_RDONLY
FA_HIDDEN
FA_SYSTEM

slo lectura
oculto
de sistema

Por ejemplo:
_chmod("PRUEBA.PRU",1,FA_RDONLY);
-> chmod(*nombre,modo);
lib=io.h
Cambia el modo a un archivo
modo:
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

S_IWRITE
S_IREAD

Escribirse
Leerse

Por ejemplo:
chmod("PRUEBA.PRU",S_IREAD|S_IWRITE);
-> chsize(manejador,tamao);
lib=io.h
Aumenta o reduce el tamao de un archivo, por ejemplo:
chsize(manejador,256);
-> clearerr(FILE *flujo);
lib=stdio.h
inicializa a cero el indicador de error. Por ejemplo:
clearerr(fp);
-> close(dat);
-> _close(dat);
lib=io.h
Cierra un archivo. Por ejemplo:
close(arch);
_close(arch);
-> creat(*archivo,modo);
-> _creat(*archivo,atrib);
-> creatnew(*archivo,atrib);
-> creattemp(*archivo,atrib);
lib=io.h
creat(), crea un nuevo archivo, modo es S_IWRITE, S_IREAD.
_creat(), crea un archivo nuevo, pero atrib tiene los valores de FA_RDONLY,
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

FA_HIDDEN, FA_SYSTEM.
creatnew(), si ya existe, devuelve error.
creattemp(), crea un archivo temporal.
-> dup(manejador);
-> dup2(manejador,manejador_nuevo);
lib=io.h
Devuelven el descriptor de archivo, es decir, lo duplica. Por ejemplo:
FILE *pa, *pa2;
.
.
.
pa2=dup(pa);
-> eof(arch);
lib=io.h
Devuelve 1 si es fin de archivo, Por ejemplo:
eof(arch);
-> fclose(FILE *flujo);
-> fcloseall(void);
lib=stdio.h
Cierra archivos.
-> fdopen(manejador, modo);
lib=stdio.h
Abre un archivo.
-> feof(FILE *flujo);
lib=stdio.h

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Indica fin de archivo para flujo.


-> ferror(FILE *flujo);
lib=stdio.h
Si es cero, no hay errores.
-> fflush(FILE *flujo);
lib=stdio.h
El contenido del buffer de salida se escribe a archivo.
-> fgetc(FILE *flujo);
lib=stdio.h
Obtiene el siguiente caracter del flujo e incrementa posicin.
-> fgetchar();
lib=stdio.h
Igual que el anterior.
-> fgetpos(FILE *flujo, *pos);
lib=stdio.h
Guarda el valor de posicin del archivo.
-> fgets(*cad, num, FILE *flujo);
lib=stdio.h
lee caracteres del flujo, como cadena.
-> filelenght(manejador);
lib=io.h
longitud en bytes de un archivo.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> fileno(FILE *flujo);


lib=stdio.h
Devuelve descriptor de archivo.
-> flushall();
lib=stdio.h
Graba fsicamente todos los buffers de salida.
-> fopen(*nombre, *modo);
lib=stdio.h
Abre archivo.
-> fprintf(FILE *flujo, *formato, argumentos);
lib=stdio.h
Escribe en el flujo los argumentos.
-> fputc(c, FILE *flujo);
lib=stdio.h
Escribe un caracter c en el flujo.
-> fputchar(c);
lib=stdio.h
Escribe el caracter c en stdout().
-> fputs(*cad, FILE *flujo);
lib=stdio.h
Escribe la cadena en el flujo.
-> fread(*buf, tam, cuenta, FILE *flujo);

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=stdio.h
Lee el nmero de caracteres que se indican.
-> freopen(*nombre, *modo, FILE *flujo);
lib=stdio.h
Reabre un archivo.
-> fscanf(FILE *flujo, *formato, argumentos);
lib=stdio.h
Lee una cadena del flujo.
-> fseek(FILE *flujo, desp, origen);
lib=stdio.h
realiza bsqueda en archivo.
-> fsetpos(FILE *flujo, pos, *pos);
lib=stdio.h
Apunta a un lugar especificado.
-> fstat(manejador, stat, *bufstat);
lib=sys\stat.h
Llena el buffer con informacin.
-> ftell(FILE *flujo);
lib=stdio.h
Devuelve indicador de posicin del archivo.
-> fwrite(*buf, tam, cuenta, FILE *flujo);
lib=stdio.h

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Escribe en un flujo.
-> getc(FILE *flujo);
lib=stdio.h
Devuelve un caracter desde el flujo.
-> getch();
lib=conio.h
Lee un caracter de la consola.
-> getche();
lib=conio.h
Lee un caracter del teclado, haciendo eco.
-> getchar();
lib=stdio.h
Lee un caracter de tipo string desde la consola.
-> gets(*cad);
lib=stdio.h
Lee una cadena desde la consola.
-> getw(FILE *flujo);
lib=stdio.h
Lee el siguiente entero de un flujo.
-> isatty(manejador);
lib=io.h
Devuelve <>0 si manejador est asociado con terminal, consola, impresora o
COM1.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> lock(manejador, desp, longitud);


lib=io.h
Protege una parte del programa para no ser usado hasta que se desbloquee.
-> lseek(manejador, desp, origen);
lib=io.h
Hace bsquedas de tipo UNIX.
-> open(*nombre, acceso, modo);
-> _open(*nombre, acceso);
lib=io.h
Abren un archivo con un modo de acceso.
-> perror(*cad);
lib=stdio.h
Convierte el valor a cadena.
-> printf(*formato, argumentos);
lib=stdio.h
Escribe en la pantalla una cadena con formato.
-> putc(c, FILE *flujo);
lib=stdio.h
Escribe el caracter c a un flujo.
-> putchar(c);
lib=stdio.h
Escribe el caracter c a la pantalla.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> puts(*cad);
lib=stdio.h
Escribe una cadena en la pantalla.
-> putw(i, FILE *flujo);
lib=stdio.h
Escribe un entero en un flujo.
-> read(da, *buf, cuenta);
-> _read(da, *buf, cuenta);
lib=io.h
Leen un byte del archivo y lo colocan en el buffer de memoria.
-> remove(*nombre);
lib=stdio.h
Borra el archivo especificado.
-> rename(*anterior, *nuevo);
lib=stdio.h
Renombra un archivo.
-> rewind(FILE *flujo);
lib=stdio.h
Mueve el indicador al principio del flujo.
-> scanf(*formato, argumentos);
lib=stdio.h
Lee datos desde el teclado, con formato.
-> setbuf(FILE *flujo, *buf);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=stdio.h
Determina el buffer del flujo.
-> setmode(manejador, modo);
lib=io.h
Inicializa un archivo.
-> setvbuf(FILE *flujo, *buf, modo, tam);
lib=stdio.h
Especifica buffer, tamao y modo.
-> sopen(*nombre, acceso, compart, modo);
lib=io.h
Abre cadenas para acceso.
->sprintf(*buf, *formato, argumentos);
lib=stdio.h
Genera salida hacia el array apuntado por *buf.
-> sscanf(*buf, *formato, argumentos);
lib=stdio.h
Lee cadena por buffer del teclado.
-> stat(*nombre, *bufstat);
lib=sys\stat.h
Llena el buffer con la informacin del archivo.
-> tell(da);
lib=io.h
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Devuelve el indicador de posicin del archivo.


-> *tmpfile();
lib=stdio.h
Abre un archivo temporal.
-> *tmpnam(*nombre);
lib=stdio.h
Abre un archivo temporal con nombre.
-> ungetc(c, FILE *flujo);
lib=stdio.h
Devuelve un caracter del byte menos significativo.
-> unlink(*nombre);
lib=dos.h
Elimina el archivo especificado.
-> unlock(manejador, desp, longitud);
lib=io.h
Desbloquea un archivo bloqueado.
-> vprintf(*formato, argumentos);
-> vfprintf(FILE *flujo, *formato, argumentos);
-> vsprintf(*buf, *formato, argumentos);
lib=stdio.h y stdarg.h
Imprimen datos con formato.
-> vscanf(*formato, argumentos);
-> vfscanf(FILE *flujo, *formato, argumentos);
-> vsscanf(*buf, *formato, argumentos);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=stdio.h y stdarg.h
Leen datos desde el teclado.
-> write(manejador, *buf, cuenta);
-> _write(manejador, *buf, cuenta);
lib=io.h
Escriben cuenta bytes al archivo.

3.2. Funciones de cadenas, de memoria y de caracteres.


-> isalnum(ch);
lib=ctype.h
Devuelve <>0 si es alfanumrico.
-> isalpha(ch);
lib=ctype.h
Devuelve <>0 si es alfabtico.
-> isascii(ch);
lib=ctype.h
Devuelve <>0 si es ascii.
-> iscntrl(ch);
lib=ctype.h
Devuelve <>0 si es caracter de control.
-> isdigit(ch);
lib=ctype.h
Devuelve <>0 si est entre 0 y 9.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> isgraph(ch);
lib=ctype.h
Devuelve <>0 si es caracter grfico.
-> islower(ch);
lib=ctype.h
Devuelve <>0 si es minscula.
-> isprint(ch);
lib=ctype.h
Devuelve <>0 si es caracter imprimible.
-> ispunct(ch);
lib=ctype.h
Devuelve <>0 si es signo de puntuacin.
-> isspace(ch);
lib=ctype.h
Devuelve <>0 si es espacio.
-> isupper(ch);
lib=ctype.h
Devuelve <>0 si es letra mayscula.
-> isxdigit(ch);
lib=ctype.h
Devuelve <>0 si es hexadecimal.
-> *memccpy(*dest, *orig, ch, cuenta);

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=string.h y mem.h
Copia el contenido de memoria de origen a destino.
-> *memchr(*buffer, ch, cuenta);
lib=string.h y mem.h
Busca ch en los primeros cuenta caracteres.
-> memcmp(*buf1, *buf2, cuenta);
-> memicmp(*buf1, *buf2, cuenta);
lib=string.h y mem.h
Compara los cuenta caracteres entre los dos arrays.
-> *memcpy(*hacia, *desde, cuenta);
lib=string.h y mem.h
Copia cuenta caracteres desde y hacia.
-> *memmove(*hacia, *desde, cuenta);
lib=string.h y mem.h
Mueve los cuenta caracteres desde y hacia.
-> *memset(*buf, ch, cuenta);
lib=string.h y mem.h
Copia el LSB de ch en los cuenta primeros caracteres del array en buf.
-> movedata(origseg, origdesp, destseg, destdesp, cuenta);
lib=string.h y mem.h
Copia cuenta caracteres desde la posicin orig hasta destino.
-> movemem(*orig, *dest, cuenta);
lib=mem.h
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Copia cuenta caracteres de origen a destino.


-> setmem(*buf, cuenta, ch);
lib=mem.h
Copia ch en los cuenta caracteres del array.
-> *stpcpy(*cad1, *cad2);
lib=string.h
Copia cadena 1 en cadena 2.
-> *strcat(*cad1, *cad2);
lib=string.h
Concatena las cadenas 1 y 2.
-> *strchr(*cad, ch);
lib=string.h
Es un puntero al LSB de ch.
-> strcmp(*cad1, *cad2);
lib=string.h
compara cadena 1 con cadena 2.
-> strcoll(*cad1, *cad2);
lib=string.h
Compara la cadena 1 con la cadena 2.
-> *strcpy(*cad1, *cad2);
lib=string.h
Copia cadena 1 en cadena 2.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> strcspn(*cad1, *cad2);


lib=string.h
Devuelve la longitud de la subcadena constituida por los caracteres que no
estn en la cadena 2.
-> *strdup(*cad);
lib=string.h
Duplica la cadena.
-> *_strerror(*cad);
lib=stdio.h y string.h
Muestra la cadena, dos puntos y el mensaje de error producido por el
programa.
-> *strerror(num);
lib=stdio.h y string.h
Devuelve un puntero a un mensaje de error.
-> stricmp(*cad1, *cad2);
-> strcmpi(*cad1, *cad2);
lib=string.h
Comparan dos cadenas.
-> strlen(*cad);
lib=string.h
Devuelve el nmero de caracteres de la cadena.
-> *strlwr(*cad);
lib=string.h

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Convierte la cadena a minsculas.


-> *strncat(*cad1, *cad2, cuenta);
lib=string.h
Concatena cuenta caracteres de cad2 a cad1.
-> strncmp(*cad1, *cad2, cuenta);
-> strnicmp(*cad1, *cad2, cuenta);
-> strncmpi(*cad1, *cad2, cuenta);
lib=string.h
Comparan lexicogrficamente cad1 y cad2.
-> *strncpy(*dest, *orig, cuenta);
lib=string.h
Copia cuenta caracteres de origen a destino.
-> *strnset(*cad, ch, cuenta);
lib=string.h
Pone ch en cuanta caracteres de cad.
-> *strpbrk(*cad1, *cad2);
lib=string.h
Apunta al primer caracter de cad1 que coincida con cad2.
-> *strrchr(*cad, ch);
lib=string.h
Apunta al LSB de ch en cad.
-> *strrev(*cad);
lib=string.h

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Invierte el orden de la cadena.


-> *strset(*cad, ch);
lib=string.h
Pone ch en toda la cadena.
-> strspn(*cad1, *cad2);
lib=string.h
Devuelve la interseccin de las cadenas.
-> *strstr(*cad1, *cad2);
lib=string.h
Apunta la primera ocurrencia de cad2 en cad1.
-> *strtok(*cad1, *cad2);
lib=string.h
Apunta la siguiente palabra de cad1.
-> *strupr(*cad);
lib=string.h
Convierte la cadena a maysculas.
-> strxfrm(*dest, *orig, cuenta);
lib=string.h
Copia cuenta caracteres de origen a destino.
-> tolower(ch);
-> _tolower(ch);
lib=ctype.h
Devuelve ch en minscula.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> toupper(ch);
-> _toupper(ch);
lib=ctype.h
Devuelve ch en mayscula.
3.3. Funciones matemticas.
-> acos(arg);
lib=math.h
Arco coseno de arg.
-> asin(arg);
lib=math.h
Arco seno de arg.
-> atan(arg);
lib=math.h
Arco tangente de arg.
-> atan2(x,y);
lib=math.h
Arco tangente de y/x.
-> cabs(znum);
lib=math.h
Valor absoluto de un nmero complejo.
-> ceil(num);
lib=math.h

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Menor entero mayor o igual que num.


-> cos(arg);
lib=math.h
Coseno de arg.
-> cosh(arg);
lib=math.h
Coseno hiperblico de arg.
-> exp(arg);
lib=math.h
e a la arg potencia.
-> fabs(num);
lib=math.h
Valor absoluto de num.
-> floor(num);
lib=math.h
Mayor entero no mayor de num.
-> fmod(x,y);
lib=math.h
Resto de x/y.
-> frexp(num, *exp);
lib=math.h
mun ser igual a la mantisa por 2 a la exp.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> hypot(x.y);
lib=math.h
Hipotenusa de x e y.
-> ldexp(num, exp);
lib=math.h
Devuelve num por 2 a la exp.
-> log(num);
lib=math.h
Logaritmo de num.
-> log10(num);
lib=math.h
Logaritmo base 10 de num.
-> matherr(*err);
lib=math.h
Estructura de errores matemticos.
-> modf(num, *i);
lib=math.h
Descompone en entero y fraccin.
-> poly(x, n, c[]);
lib=math.h
Evala polinomio x grado n desde c[0] hasta c[n].
-> pow(base, exp);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=math.h
Base elevado a la exp.
-> pow10(n);
lib=math.h
Devuelve 10 a la n.
-> sin(arg);
lib=math.h
Seno de arg.
-> sinh(arg);
lib=math.h
Seno hiperblico de arg.
-> sqrt(num);
lib=math.h
Raz cuadrada de num.
-> tan(arg);
lib=math.h
Tangente de arg.
-> tanh(arg);
lib=math.h
Tangente hiperblica de arg.

3.4. Funciones de hora, fecha y otras del sistema.


-> absread(unidad, numsects, sectnum, *buf);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> abswrite(unidad, numsects, sectnum, *buf);


lib=dos.h
Lectura y escritura desde y a disco.
-> *asctime(*punt);
lib=time.h
Devuelve cadena con los datos de fecha.
-> bdos(dx, al);
-> bdosptr(fnum, *dsdx, al)
lib=dos.h
Pone dx en el registro dx y al en el registro al.
-> bioscom(orden, byte, puerto);
lib=bios.h
Manipula el puerto RS232-C.
-> biosdisk(orden, unidad, cabeza, pista, sector, nsects, *buf);
lib=bios.h
Opera en disco a nivel del bios.
-> biosequip();
lib=bios.h
Devuelve el valor del equipo existente.
-> bioskey(orden);
lib=bios.h
Operaciones directas de teclado.
-> biosmemory();
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=bios.h
Devuelve la cantidad de memoria instaladas en el sistema.
-> biosprint(orden, byte, puerto);
lib=bios.h
Controla el puerto de la impresora.
-> biostime(orden, nuevahora);
lib=bios.h
Ajusta el reloj del sistema.
-> clock();
lib=time.h
Tiempo de ejecucin hasta la llamada.
-> *country(codigo_pais, *puntpais);
lib=dos.h
Ajusta elementos del pas.
-> ctime(*tiempo);
lib=time.h
Cadena de tiempo.
-> ctrlbrk((*fptr)());
lib=dos.h
Realiza la funcin de Ctrl-Break.
-> delay(tiempo);
lib=dos.h
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Detiene el tiempo de ejecucin tiempo milisegundos.


-> difftime(hora2, hora1);
lib=time.h
Diferencia en segundos entre hora1 y hora2.
-> disable();
lib=dos.h
Inhibe las interrupciones.
-> dosexterr(DOSERROR *err);
lib=dos.h
Informacin extensa de error.
-> dostounix(*d, *t);
lib=dos.h
Hora en formato UNIX.
-> enable();
lib=dos.h
Habilita las interrupciones.
-> FP_OFF(*punt);
-> FP_SEG(*punt);
lib=dos.h
Desplazamiento del puntero.
-> ftime(*hora);
lib=sys\timeb.h

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Informacin completa sobre la hora del sistema.


-> geninterrupt(intr);
lib=dos.h
Genera interrupcin por software.
-> getcbrk();
lib=dos.h
Devuelve 0 si est desactivada ctrl-brk.
-> getdate(*d);
-> gettime(*t);
lib=Rellena date o time con fecha y hora del sistema.
-> getdfree(unidad, *dfpunt);
lib=dos.h
Obtiene el espacio libre en el disco.
-> *getdta();
lib=dos.h
Direccin de transferencia de disco.
-> getfat(unidad, *fpunt);
-> getfatd(*fpunt);
lib=dos.h
Devuelve informacin sobre la FAT del disco.
-> getftime(manejador, *fpunt);
lib=io.h
Obtiene fecha y hora del sistema.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> getpsp();
lib=dos.h
Obtiene el PSP.
-> interrupt(*vect(intr))();
lib=dos.h
Devuelve la direccin de la rutina de interrupcin.
-> getverify();
lib=dos.h
Estado de verificable del DOS.
-> *gmtime(*hora);
lib=time.h
Apunta a la forma de hora en la estructura tm.
-> harderr((*int)());
-> hardresume(cod);
-> hardretn(cod);
lib=dos.h
Reemplaza el manipulador de errorres del DOS.
El manejador sale a DOS y vuelve cdigo.
El hardretn() retorna el cdigo al programa.
-> inport(port);
-> inportb(port);
lib=dos.h
Devuelve el valor de la palabra leda en el puerto.
Devuelve un byte ledo del puerto.
-> int86(int, *reg_e, *reg_s);
-> int86x(int, *reg_e, *reg_s, *segregs);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=dos.h
Ejecuta interrupcin de software.
Copia los valores de segregs -> ds en DS y ->es en ES.
-> intdos(*reg_e, *reg_s);
-> intdosx(*reg_e, *reg_s, *segregs);
lib=dos.h
Accede a la interrupcin de DOS 21H.
El valor de segregs lo pone en DS y ES.
-> intr(intr, *reg);
lib=dos.h
Ejecuta la interrupcin especificada.
-> keep(estado, tam);
lib=dos.h
El programa en tam bytes queda residente y devuelve el estado a DOS.
-> *localtime(*hora);
lib=time.h
Apunta a la hora ->tm.
-> mktime(*p);
lib=time.h
Convierte la hora en calendario equivalnte.
-> *MK_FP(seg, desp);
lib=dos.h
Devuelve puntero a far en segmento seg y desp desplazamiento.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> outport(puerto, palabra);


-> outportb(puerto, byte);
lib=dos.h
Pone palabra o byte en puerto.
-> *parsfnm(*nombre, *fcbpunt, opcin);
lib=dos.h
Convierte nombre de archivo en cadena.
-> peek(seg, desp);
-> peekb(seg, desp);
-> poke(seg, desp, palabra);
-> pokeb(seg, desp, byte);
lib=dos.h
Valor en 16 bits de la posicin seg:desp.
Valor en 8 bits de la posicin seg:desp.
Almacena valor de 16 bits de la posicin seg:desp.
Almacena valor de 8 bits de la posicin seg:desp.
-> randbrd(*fcbpunt, cuenta);
-> randbwr(*fcbpunt, cuenta);
lib=dos.h
Lee cuenta nmero de registros.
Escribe cuenta nmero de registros.
-> segread(*sregs);
lib=dos.h
Copia valores actuales del segmento.
-> setcbrk(cb);
lib=dos.h
Activa o desactiva la comprobacin.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> setdate(*d);
-> settime(*t);
lib=dos.h
Pone fecha del DOS.
Pone hora del DOS.
-> setdta(*dta);
lib=dos.h
Ajusta la direccin de transferencia de disco a 4000:000.
-> setftime(manejador, *t);
lib=io.h
Ajusta hora y fecha a manejador.
-> setvect(intr, (*rsi)());
lib=dos.h
Coloca la interrupcin rsi en la tabla.
-> setverify(valor);
lib=dos.h
Ajusta el indicador de verify de DOS.
-> sleep(tiempo);
lib=dos.h
Suspende la ejecucin tiempo segundos.
-> stime(*t);
lib=time.h
Pone hora de DOS en el valor t.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> time(*hora);
lib=time.h
Devuelve la hora del DOS.
-> tzset();
lib=time.h
Ajusta las variables de tiempo.
-> unixtodos(uhora, *d, *t);
lib=dos.h
Convierte la hora de formato UNIX a formato DOS.

3.5. Funciones de asignacin dinmica de memoria.


-> allocmem(tam, *seg);
lib=dos.h
Coloca tam prrafos en seg para uso de la memoria.
-> brk(*fsd);
lib=alloc.h
cambia la cantidad de memoria a usarse.
-> *calloc(num, tam);
lib=stdlib.h
Asigna memoria de tam en bytes a num objetos.
-> coreleft();
lib=alloc.h
Nmero de bytes libres de memoria.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> *farcalloc(num, tam);


lib=alloc.h
Idntica a calloc().
-> farcoreleft();
lib=alloc.h
Idntica a coreleft().
-> farfree(*ptr);
lib=alloc.h
Libera memoria asignada lejana.
-> *farmalloc(tam);
lib=alloc.h
Apunta al primer byte de memoria lejana.
-> *farrealloc(*ptr, nuevotam);
lib=alloc.h
Cambia un bloque de tamao.
-> free(*ptr);
lib=stdlib.h
Libera la memoria apuntada.
-> freemem(seg);
lib=dos.h
Librea el bloque de memoria.
-> heapcheck();
-> farheapcheck();
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=alloc.h
Examinan la pila en busca de errores.
-> heapcheckfree(relleno);
->farheapcheckfree(relleno);
lib=alloc.h
Verifica que estn llenas con relleno.
-> heapchecknode(*ptr);
-> farheapchecknode(*ptr);
lib=alloc.h
Comprueban el estado del nodo.
-> heapfillfree(relleno);
-> farheapfillfree(relleno);
lib=alloc.h
Rellenan bloques libres con relleno.
-> heapwalk(*inform);
-> farheapwalk(*inform);
lib=alloc.h
Rellena los campos de esa estructura.
-> *malloc(tam);
lib=stdlib.h
Apunta a una regin de tam bytes.
-> *realloc(*ptr, nuevotam);
lib=stdlib.h
Cambia el tamao de memoria.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> *sbrk(cantidad);
lib=alloc.h
Incrementa en cantidad bytes la memoria.
-> setblock(seg, tam);
lib=dos.h
Cambia el tamao del bloque seg a tam.

3.6. Funciones de directorio.


-> chdir(*camino);
lib=dir.h
Convierte a camino en directorio actual.
-> findfirst(*nombrear, *ptr, atrib);
-> findnext(*ptr);
lib=dir.h
Busca el archivo que coincida con nombrear.
-> fnmerge(*camino, *unidad, *dir, *nombrear, *ext);
-> fnsplit(*camino, *unidad, *dir, *nombrear, *ext);
lib=dir.h
Construye el nombre de un archivo en base a sus componentes.
Descompone el nombre de archivo.
-> getcurdir(unidad, *dir);
lib=dir.h
Copia el directorio actual de trabajo en cadena dir.
-> *getcwd(*dir, long);

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=dir.h
Copia el camino completo, hasta long caracteres.
-> getdisk();
lib=dir.h
Devuelve el nmero de unidad actual (1,A; 2,B; 3C; etc.)
-> mkdir(*camino);
lib=dir.h
Crea un directorio usando el camino.
-> *mktemp(*nombrear);
lib=dir.h
Crea un nombre de archivo nico y lo copia a nombrear.
-> rmdir(*camino);
lib=dir.h
Borra un directorio.
-> searchpath(*nombrear);
lib=dir.h
Devuelve el camino donde est el archivo.
-> setdisk(unidad);
lib=dir.h
Devuelve el nmero de unidades del sistema.

3.7. Funciones de control de procesos.


-> abort();

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=process.h y stdlib.h
Terminacin inmediata del programa.
-> atexit((*func)());
lib=stdlib.h
Si termina normalmente, llama a la funcin.
-> execl(*nombrear, *arg0,...,*argn, NULL);
-> execle(*nombrear, *arg0,...,*argn, NULL, *pent[]);
-> execlp(nombrear, *arg0,...,*argn, NULL);
-> execlpe(*nombrear, *arg0,...,*argn, NULL, *pent[]);
-> execv(*nombrear, *arg[]);
-> execve(*nombrear, *arg[], *pent[]);
-> execvp(*nombrear, *arg[]);
-> execvpe(*nombrear, *arg[], *pent[]);
lib=process.h

Ejecutan un programa externo.


-> exit(estado);
-> _exit(estado);
lib=process.h y stdlib.h
Terminacin normal inmediata del programa.
-> spawnl(modo, *nombrear, *arg0,...,*argn, NULL);
-> spawnle(modo, *nombrear, *arg0,...,*argn, NULL, *pent[]);
-> spawnlp(modo, *nombrear, *arg0,...,*argn, NULL);
-> spawnlpe(modo, *nombrear, *arg0,...,*argn, NULL, *pent[]);
-> spawnv(modo, *nombrear, *arg[]);
-> spawnve(modo, *nombrear, *arg[], *pent[]);
-> spawnvp(modo, *nombrear, *arg[]);
-> spawnvpe(modo, *nombrear, *arg[], *pent[]);
lib=process.h
Ejecuta archivos externos.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

3.8. Funciones de grficos y de la pantalla de texto.


-> arc(x,y,inicio,fin,radio);
lib=graphics.h
Dibuja un arco desde inicio hasta fin grados con centro en x,y y de radio
radio.
-> bar(izq,arr,der,aba);
-> bar3d(izq,arr,der,aba,prof,indtapa);
lib=graphics.h
Realiza una barra en dos y tres dimensiones.
-> circle(x,y,radio);
lib=graphics.h
Crculo con centro en x,y y radio radio.
-> cleardevice();
-> clearviewport();
lib=graphics.h
Limpia pantalla y restablece a 0,0.
No existen ms ventanas grficas.
-> closegraph();
lib=graphics.h
Desactiva el entorno grfico.
-> clreol();
-> clrscr();
lib=conio.h
Limpia hasta fin de lnea.
Limpia ventana de texto.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> cprintf(*fmt);
lib=conio.h
Escribe en ventana de texto.
-> cputs(*cad);
lib=conio.h
Escribe cadena a pantalla.
-> cscanf(*fmt);
lib=conio.h
Lee cadena del teclado.
-> delline();
lib=conio.h
Borra lnea actual.
-> detectgraph(*controlador, *modo);
lib=graphics.h
Detecta el tipo de controlador grfico.
-> drawpoly(numpuntos, *puntos);
lib=graphics.h
Dibuja un polgono.
-> ellipse(x,y,inicio,fin,radiox,radioy);
lib=graphics.h
Dibuja una elipse con centro en x,y, la parte mostrada entre iniciio y fin en
grados (0..360) y longitudes radiox y radioy.
-> fillellipse(x,y,rx,ry);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=graphics.h
Dibuja y rellena una elipse, con centro en x,y y radios rx y ry.
-> fillpoly(numpuntos, *puntos);
lib=graphics.h
Rellena un polgono.
-> floodfill(x,y,borde);
lib=graphics.h
Rellena un objeto cerrado.
-> getarcoords(*coords);
lib=graphics.h
Da valores a los campos de la estructura de coords.
-> getaspectratio(*xasp, *yasp);
lib=graphics.h
Razones de aspecto de un objeto.
-> getbkcolor();
lib=graphics.h
Devuelve el color de fondo actual.
-> getcolor();
lib=graphics.h
Devuelve el color actual del dibujo.
-> getdefaultpalette();
lib=graphics.h
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Devuelve la paleta por defecto.


-> getdrivername();
lib=graphics.h
Devuelve el nombre del controlador de grficos.
-> getfillpattern(*patron);
lib=graphics.h
-> getfillsettings(*info);
lib=graphics.h
Da valor a la estructura de info.
-> getgraphmode();
lib=graphics.h
Devuelve el modo de registro actual.
-> getimage(izq,arr,der,aba,*buf);
lib=graphics.h
Copia una porcin de pantalla a buffer.
-> getlinesettings(*info);
lib=graphics.h
Da valores a las estructuras de info.
-> getmaxcolor();
lib=graphics.h
Mayor valor vlido para el color actual.
-> getmaxmode();
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=graphics.h
Modo mximo disponible.
-> getmaxx();
-> getmaxy();
lib=graphics.h
Mayor valor de x o y.
-> getmodename(modo);
lib=graphics.h
Nombre del modo especificado.
-> getmoderange(controlador, *modobajo, *modoalto);
lib=graphics.h
Modos que soporta el controlador.
-> getpalette(*pal);
lib=graphics.h
Carga la estructura con paleta actual.
-> getpalettesize();
lib=graphics.h
No. de colores de la paleta actual.
-> getpixel(x,y);
lib=graphics.h
Color del pixel en esas coordenadas.
-> gettext(izq,arr,der,aba,*buf);

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=conio.h
Copia el texto de esas coordenadas a buffer.
-> gettextsettings(*info);
lib=graphics.h
carga la estructura con valores de info.
-> getviewsettings(*info);
lib=graphics.h
Informacin sobre ventana grfica actual.
-> getx();
-> gety();
lib=graphics.h
Devuelven x e y de posicin actual.
-> gotoxy(x,y);
lib=conio.h
Sita al cursos de la pantalla de texto.
-> graphdefaults();
lib=graphics.h
Restaura el sistema grfico por default.
-> grapherrormsg(coderror);
lib=graphics.h
Apunta al mensaje de error.
-> _graphfreemem(*ptr, tam);
-> _graphgetmem(tam);

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=graphics.h
Devuelve el valor de ltima operacin grfica.
-> highvideo();
lib=conio.h
Alta intensidad de video.
-> imagesize(izq,arr,der,aba);
lib=graphics.h
Bytes necesarios para almacenar imagen.
-> initgraph(*controlador, *modo, *camino);
lib=graphics.h
Inicializa sistema de grficos.
-> insline();
lib=conio.h
Inserta lnea en blanco.
-> installuserdriver(*controlador, (*func)());
lib=graphics.h
Instala controladores BGI creados por otros.
-> installuserfont(*nomfuente);
lib=graphics.h
Instala fuentes trazadas por otros.
-> line(xini,yini,xfin,yfin);
-> lineto(x,y);
-> linerel(deltax,deltay);

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=graphics.h
Traza una lnea desde ini hasta fin.
Traza una lnea desde CP hasta x,y.
Traza una lnea desde cp hasta dx y dy.
-> lowvideo();
lib=conio.h
Video de baja intensidad.
-> moverel(deltax,deltay);
lib=graphics.h
Se desplaza desde CP hasta dx y dy.
-> movetext(izq,arr,der,aba,nuevaizq,nuevaarr);
lib=conio.h
Mueve rea a nueva izq y arr.
-> moveto(x,y);
lib=graphics.h
Mueve el cursor desde CP hasta x,y.
-> normvideo();
lib=conio.h
Intensidad normal.
-> outtext(*cad);
-> outtextxy(x,y,*cad);
lib=graphics.h
Muestra texto en modo grfico.
-> pieslice(x,y,inicio,fin,ratio);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=graphics.h
Pastel con centro en x,y, y de inicio a fin con radio en r.
-> putimage(x,y,*buf,op);
lib=graphics.h
Coloca imagen salvada con getimage().
-> putpixel(x,y,color);
lib=graphics.h
Pone el pixel especificado de color.
-> puttext(izq,arr,der,aba,*buf);
lib=conio.h
Copia el texto salvado con gettext().
-> rectangle(izq,arr,der,aba);
lib=graphics.h
Dibuja un rectngulo.
-> registerbgidriver((controlador)());
-> registerbgifont((fuente)());
lib=graphics.h
Indica al sistema presencia de controlador o fuente.
-> restorecrtmode();
lib=graphics.h
Restaura pantalla a donde estaba antes de initgraph().
-> sector(x,y,inicio,fin,xr,yr);

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=graphics.h
Dibuja un sector de elipse relleno de inicio a fin con centro en x,y y ejes
xr y yr.
-> setactivepage(pgina);
lib=graphics.h
Determina la pgina de video que recibir las funciones grficas.
-> setallpalette(*pal);
lib=graphics.h
Cambia todos los colores de la paleta.
-> setaspectratio(xaspect,yaspect);
lib=graphics.h
Obtiene las razones de aspecto.
-> setbkcolor(color);
lib=graphics.h
Cambia el color del fondo.
-> setcolor(color);
lib=graphics.h
Establece color del dibujo.
-> setfillpattern(*patron, color);
lib=graphics.h
Establece patrn de relleno.
-> setfillstyle(patron, color);
lib=graphics.h
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

Establece el patrn de relleno.


-> setgraphbufsize(size);
lib=graphics.h
Establece el tamao del buffer.
-> setgraphmode(modo);
lib=graphics.h
Establece el modo grfico actual.
-> setlinestyle(estilo,patrn,ancho);
lib=graphics.h
Determina el aspecto de la lnea.
-> setpalette(indice,color);
lib=graphics.h
Cambia los colores del sistema de video.
-> setrgbpalette(color,r,v,a);
lib=graphics.h
Cambia los colores del sistema de video.
-> settextjustify(horiz,vert);
lib=graphics.h
Establece la manera de alineacin del texto.
-> settextstyle(fuente,direccin,tamao);
lib=graphics.h
Establece la fuente y estilo activos.
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> setusercharsize(mulx,divx,muly,divy);
lib=graphics.h
Escala el tamao de las fuentes.
-> setviewport(izq,arr,der,aba,corta);
lib=graphics.h
Crea una nueva ventana grfica.
-> setvisualpage(pgina);
lib=graphics.h
Muestra la pgina de video.
-> setwritemode(modo);
lib=graphics.h
Determina la salida de line(), linerel(), lineto(), rectangle() y drawpoly().
-> textattr(atr);
lib=conio.h
Establece color de fondo y primer plano para el texto.
-> textbackground(color);
lib=conio.h
Establece el color de fondo.
-> textcolor(color);
lib=conio.h
Establece el color de los caracteres.
-> textheight(*cad);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=graphics.h
Establece la altura de la cadena.
-> textmode(modo);
lib=conio.h
Modo de video para pantalla de texto.
-> textwidth(*cad);
lib=graphics.h
Anchura de la cadena, en pixels.
-> wherex();
-> wherey();
lib=conio.h
Devuelve las coordenadas de x o y.
-> window(izq,arr,der,aba);
lib=conio.h
Crea una ventana rectangular de texto.

3.9. Funciones variadas.


-> abs(num);
lib=stdlib.h y math.h
Valor absoluto de num.
-> assert(exp);
lib=assert.h
Escribe informacin de error y aborta el programa.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

-> atof(*cad);
lib=stdlib.h y math.h
Convierte la cadena en double.
-> atoi(*cad);
lib=stdlib.h
Convierte cadena a int.
-> atol(*cad);
lib=stdlib.h
Convierte cadena en longint.
-> *bsearch(*clave,*base,num,tam,(*comparar)(*,*));
lib=stdlib.h
Realiza bsqueda binaria en el array ordenado por base y apunta al primero
que coincida con clave, elementos=num, bytes/elemento=tam.
-> _clear87();
lib=float.h
Inicializa palabra de estado del coprocesador de punto flotante.
-> _control187(palabracf,mascaracf);
lib=float.h
Valor de la palabra del coprocesador.
-> div(numer,denom);
lib=stdlib.h
Obtiene cociente y resto de numer/denom.
-> *ecvt(valor,ndigit,*dec,*signo);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=stdlib.h
Convierte valor en una cadena de longitud ndigit, dec indica la posicin del
'.' signo= + o -.
-> __emit__(arg...);
lib=stdlib.h
Inserta valores directamente en el cdigo del programa.
-> *fcvt(valor,ndigit,*dec,*signo);
lib=stdlib.h
Igual que ecvt.
-> _fpreset();
lib=float.h
Reinicializa el coprocesador.
-> *gcvt(valor,ndigit,*buf);
lib=stdlib.h
Convierte valor en cadena -> a buffer.
-> *getenv(*nombre);
lib=stdlib.h
Informacin de entorno.
-> *getpass(*cad);
lib=conio.h
Apunta a una cadena de 8 caracteres, como password.
-> getpid();

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=process.h
Devuelve el nmero de identificador de proceso.
-> *itoa(num,*cad,base);
lib=stdlib.h
Convierte el entero num a cadena.
-> labs(num);
lib=stdlib.h y math.h
Devuelve el absoluto de valor num = long int.
-> ldiv(numer,denom);
lib=stdlib.h
Devuelve el cociente y resto de la operacin numer/denom.
-> *lfind(*clave,*base,*num,tam,(*comparar)(*,*));
-> *lsearch(*clave,*base,*num,tam,(*comparar)(*,*));
lib=stdlib.h
Realizan bsqueda lineal.
-> longjmp(bufent,val);
lib=setjmp.h
La ejecucin regresa al punto donde se llam a setjmp().
-> *ltoa(num,*cad,base);
-> *ultoa(num,*cad,base);
lib=stdlib.h
Convierte num a cadena equivalente.
-> _lrotl(l,i);
-> _lrotr(l,i);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=stdlib.h
Rotan los bits i posiciones a la izquierda o derecha.
-> max(x,y);
-> min(x,y);
lib=stdlib.h
El mayor de dos valores, el menor.
-> nosound();
lib=dos.h
Apaga el altavoz de la micro.
-> putenv(*vare);
lib=stdlib.h
Mete al DOS variables de entorno.
-> qsort(*base,num,tamao,(*comparar)(*,*));
lib=stdlib.h
Ordena el array con quicksort.
-> raise(seal);
lib=signal.h
Manda al programa la seal seal.
-> rand();
lib=stdlib.h
Genera secuencia pseudo-aleatoria.
-> random(num);
-> randomize();
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=stdlib.h
Devuelve un nmero aleatorio entre 0 y num -1.
Inicializa el generador aleatorio.
-> _rotl(val,num);
-> _rotr(val,num);
lib=stdlib.h
Rotan los bits de val num a la izquierda, o derecha.
-> _setcursortype(tipo);
lib=conio.h
Cambia la forma del cursor.
-> setjmp(bufent);
lib=setjmp.h
Salva el contenido de pila en buffer.
-> (signal(seal,(*sigfunc)(func)))();
lib=signal.h
Informa ejecutar la funcin cuando se recibe la seal.
-> sound(frec);
lib=dos.h
Pita en frecuencia frec hertz.
-> srand(semilla);
lib=stdlib.h
Pone semilla aleatoria.
-> strtod(*inicio,**fin);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

lib=stdlib.h
Convierte en double la cadena de inicio.
-> strtol(*inicio,*fin,base);
-> strtoul(*inicio,**fin,base);
lib=stdlib.h
Convierte el long int el nmero de cadena.
-> swab(*fuente,*destino,num);
lib=stdlib.h
Copia num bytes de la cadena fuente a destino.
-> system(*cad);
lib=stdlib.h
Pasa cad como orden al DOS.
-> va_start(ptrarg,ult_parm);
-> va_end(ptrarg);
-> va_arg(ptrarg,tipo);
lib=stdarg.h
Pasa a una funcin un nmero variable de argumentos.

4. Librera de programas
/*****PROG01.C*****/
#include <stdio.h>
void func1(void), func2(void);
int cuenta; /*cuenta es global*/
main (void)
{
cuenta=100;
func1();
return 0;
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

}
void func1(void)
{
int temp;
temp=cuenta;
func2();
printf("cuenta es %d", cuenta); /*imprime 100*/
}
void func2(void)
{
int cuenta;
for (cuenta=1;cuenta<10;cuenta++)
putchar('.');
}
/*****PROG02.C*****/
#include <stdio.h>
{
printf("Este es mi primer programa en Turbo C\n");
getch();
/*congela la pantalla/
}
/*****PROG03.C*****/
#include <stdio.h>
#include <conio.h>
int cuenta(int i);
main(void)
{
do{
cuenta(0);
}while(!kbhit());
printf("se llam %d veces", cuenta(1));
return 0;
}
cuenta (int i)
{
static int c=0;
if(i) return c;
else c++;
return 0;
}
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

/*****PROG04.C*****/
#include <stdio.h>
main()
{
int edad;
edad=35;
printf("mi edad es de %d aos\n", edad);
}
/*****PROG05.C*****/
#include <stdio.h>
char s[80];
main(void)
{
s[3]='x';
printf("%c",s[3]);
return 0;
}
/*****PROG06.C*****/
#include <stdio.h>
main()
{
char ch1, ch2, ch3;
clrscr();
printf("Introduce un caracter y lo escribe tecleando ENTER\n");
ch1=getchar();
putchar(ch1);
putchar('\n');
printf("introduce un caracter y produce eco sin utlizar ENTER\n");
ch2=getche();
putchar(ch2);
putchar('\n');
printf("espera el tecleo de un caracter y lo escribe sin usar ENTER\n");
ch3=getch();
putchar(ch3);
printf("\n Comps de espera ... Teclee ENTER\n");
getch();
}
/*****PROG07.C*****/
#include <stdio.h>
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

main(void)
{
int magico=123;
int intento;
printf("adivine el nmero mgico: ");
scanf("%d",&intento);
if (intento==magico) printf("*** Correcto ***");
else printf("... Incorrecto ...");
return 0;
}
/*****PROG08.C*****/
#include <stdio.h>
main()
{
char aster='*', efe='F', jota='J';
char silba='\007', retro='\b', blanco=' ', tab='\t';
int num1=-32767;
unsigned int num2=65535;
long int num3=999876;
clrscr();
printf("resultados obtenidos\n");
printf("%c--%c--%c--%c--\n", aster, efe, jota, silba);
printf("%c--%c--%c--%c--%c--%c--\n", aster, blanco, retro, aaster, tab,
aster);
printf("%d--%u--%ld--%c--\n", num1, num2, num3, silba);
getch();
}
/*****PROG09.C*****/
#include <stdio.h>
main(void)
{
int magico=123;
int intento;
printf("Adivine el nmero mgico:");
scanf("%d", &intento);
if (intento==magico){
printf("*** Correcto ***");
printf("%d es el nmero mgico...", magico);
}
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

else{
printf("...Incorrecto...");
if (intento>magico) printf("demasiado alto...");
else printf("demasiado bajo...");
}
return 0;
}
/*****PROG10.C*****
#include <stdio.h>
main()
{
float num1=2345678.45;
double num2=2345678.33;
clrscr();
printf("resultado de punto flotante y notacin cientfica\n");
printf("nmero flotante=--%f--%e--\n", num1, num1);
printf("doble flotante=--%f--%e--\n", num2, num2);
getch();
}
/*****PROG11.C*****/
#include <stdio.h>
main(void)
{
int magico=123;
int intento;
printf("Adivine el nmero mgico:");
scanf("%d",&intento);
if (intento==magico){
printf("*** Correcto ***");
printf("%d es el nmero mgico", magico);
}
else if (intento>magico)
printf("Incorrecto... demasiado alto");
else printf ("Incorrecto... demasiado bajo");
return 0;
}
/*****PROG12.C*****/
#include <stdio.h>
main()
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

{
int nomb=17;
float nomb1=20.7658;
char nomb2='K';
clrscr();
printf("resultado: valor y direccin \n");
printf("%d--%u\n", nomb, &nomb);
printf("%c--%u\n", nomb2, &nomb2);
printf("%f--%u\n", nomb1, &nomb1);
getch();
}
/*****PROG13.C*****/
#include <stdio.h>
main(void)
{
int magico=123;
int intento;
printf("Adivine el nmero mgico:");
scanf("%d",&intento);
if (intento==magico){
printf("*** Correcto ***");
printf("%d es el nmero mgico", magico);
}
else
intento>magico? printf("Muy Alto"): printf("Muy Bajo");
return 0;
}
/*****PROG14.C*****/
#include <stdio.h>
#define NUM 1994
main()
{
int nume=222;
float fnum=22.35;
char letra='Z';
char nom[50]="Gustavo Adolfo";
clrscr();
printf("resultados :\n");
printf("definido el ao %d\n", NUM);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

printf("el nmero entero es %d\n", nume);


printf("el nmero en punto flotante es %f\n", fnum);
printf("el rey %s y la letra %c", num, letra);
getch();
}
/*****PROG15.C*****/
#include <stdio.h>
main(void)
{
int x;
for (x=1;x<=100;x++) printf("%d",x);
return 0;
}
/*****PROG16.C*****/
#include <stdio.h>
main()
{
clrscr();
printf("resultado: secuencias de escape\n");
printf("lnea1 \n lnea2 \t tabulado 6****** \b retroceso de espacio\n");
printf("lnea3========= \b retorno de 1 espacio --> sigue \a campana\n");
getch();
}
/*****PROG17.C*****/
#include <stdio.h>
main(void)
{
int t;
for(t=0;t<100;t++){
printf("%d",t);
if (t==10) break;
}
return 0;
}
/*****PROG18.C*****/
#include <stdio.h>
main()

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

{
int ch;
int cont=0;
clrscr();
printf("resultado. cdigos ASCII \n");
for (ch=1;ch<127;ch++){
if (cont%12==0){
putchar('\n');
cont++;
}
if (ch>32) printf("%c=%d", ch, ch);
cont++;
}
getch();
}
/*****PROG19.C*****/
#include <stdio.h>
main(void)
{
int x[10];
int t;
for(t=0;t<10;++t) x[t]=t;
for(t=0;t<10;++t) printf("%d",x[t]);
return 0;
}
/*****PROG20.C*****/
#include <stdio.h>
main()
{
float num1=456.8357;
clrscr();
printf("formato de nmeros ajustados\n");
printf("|%f|\n", num1);
/*entre barras*/
printf("%-18f|\n", num1); /*18 espacios al margen izquierdo*/
printf("|%++18f|\n", num1); /*18 esp. der. y con signo + */
printf("|%-+18f|\n", num1); /*18 esp. izq. y con signo + */
printf("|%-28f|\n", num1); /*28 esp. izq. sin signo */
getch();
}
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

/*****PROG21.C*****/
#include <stdio.h>
#include <string.h>
main(void)
{
char c1[80], c2[80];
gets(c1);
gets(c2);
printf("Longitudes: %d %d\n", strlen(c1), strlen(c2));
if (!strcmp(c1, c2)) printf("las cadenas son iguales\n");
strcat(c1, c2);
printf("%s\n", c1);
return 0;
}
/*****PROG22.C*****/
#include <stdio.h>
main()
{
int num1;
int ning;
float num2;
char car1;
clrscr();
printf("Introduzca en una sola lnea y separados por un espacio\n");
printf("una letra un nmero decimal y un entero\n");
ning=scanf("%c %f %d", &car1, &num2, &num1);
printf("resultado: tipo y nmero de entradas\n");
printf("caract=%c nfloat=%f entero=%d no. ingresos=%d\n", car1, num2,
num1, ning);
getch();
}
/*****PROG23.C*****/
#include <stdio.h>
main(void)
{
int t, i, num[3][4];
for(t=0;t>3;++t)
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

for(i=0;i<4;++i)
num[t][i]=(t*4)+i+1;
/*mostrarlos*/
for(t=0;t<3;++t){
for(i=0;i<4;++1)
printf("%d", num[t][i]);
printf("\n");
}
return 0;
}
/*****PROG24.C*****/
#include <stdio.h>
main()
{
int num1;
long int num3;
unsigned num4;
float num2;
char car1;
static char nombre[80];
clrscr();
printf("escriba su nombre\n");
scanf("%s", nombre);
printf("escribe: nmero--nmero largo--sin signo--float--carcter\n");
scanf("%d %ld %u %f %c", &num1, &num3, &num4, &num2, &car1);
printf("resultado: datos introducidos\n");
printf("caract=%c nfloat=%f entero=%d largo=%ld\n", car1, num2, num1,
num3);
printf("sin signo=%n\n", num4);
printf("La cadena es: %s\n", nombre);
getch();
}
/*****PROG25.C*****/
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
#define CLASES 3
#define NOTAS 30
int nota [CLASES][NOTAS];
void mostrar_notas(int n[][NOTAS]), intro_notas(void);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

int obt_nota(int num);


main(void)
{
char c;
for (;;){
do{
printf("(I)ntroducir notas\n");
printf("(M)ostrar notas\n");
printf("(T)erminar\n");
c=toupper(getche());
}while(c!='I'&&c!='M'&&c!='T');
switch(c){
case 'I':
intro_notas();
break;
case 'M':
mostrar_notas(nota);
break;
case 'T':
return 0;
}
}
}
/* introducir las notas de los alumnos */
void intro_notas(void)
{
int t, i;
for(t=0;t<CLASES;t++){
printf("clase # %d:\n", t+1);
for(i=0;i<NOTAS;++i)
nota[t][i]=obt_nota(i);
}
}
/* leer una nota realmente */
obt_nota(int num)
{
char c[80];
printf("Introduzca la nota del estudiante # %d:\n", num+1);
gets(c);
return(atoi(c));
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

}
/* mostrar notas */
void mostrar_notas(int n[][NOTAS])
{
int t, i;
for(t=0;t<CLASES;++t){
printf("Clase #%d:\n", t+1);
for(1=0;i<NOTAS;++1)
printf("el estudiante # %d tiene %d\n", i+1, n[t][i]);
}
}
/*****PROG26.C*****/
#include <stdio.h>
#define MAX 100
#define LONG 80
char texto [MAX][LONG];
/* sencillo editor de texto */
main(void)
{
register int t, i, j;
for(t=0;t<MAX;T++){
printf("%d", t);
gets(texto[t]);
if(!*texto[t]) break;
}
/* muestra el texto caracter a caracter */
for(i=0;i<ti++){
for(j=0;*texto[i][j];j++) printf("%c", texto[i][j]);
printf("%c", '\n');
}
return 0;
}
/*****PROG27.C*****/
main(void)
{
int cuenta, q;
int *m;
cuenta=100;

/* se asigna 100 a cuenta */


Tutorial
Turbo C

Rodolfo Gallardo-Rosales

m=&cuenta;
/* m recibe la direccin de cuenta */
q=*m;
/* q recibe el valor de la direccin de m */
printf("%d",q); /* imprime 100 */
return 0;
}
/*****PROG28.C*****/
#include <stdio.h>
main()
{
int chi;
while((chi=getchar())!=EOF)
putchar(chi);
getch();
}
/*****PROG29.C*****/
#include <stdio.h>
main()
{
int LIMITE=4;
int indice=0;
int n=5;
char caracter;
clrscr();
while(++indice<=LIMITE){
printf("Resultados 1 \n");
printf("ndice=%d\n", indice);
}
/* decreciente */
while(--n){
printf("Resultados 2 \n");
printf("ndice=%d\n", n);
}
/* otro ejemplo */
printf("Ingrese una letra\n");
while((caracter=getch())!='s'){ /* s para salir */
printf("La letra es una %c\n", caracter);
printf("Ingrese una s para salir\n");
}
}

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

/*****PROG30.C*****/
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
struct inv{
char item[30];
float coste;
int dispo;
}info_inv[MAX];
void inic_lista(void), listar(void), borrar();
void intro(void);
int menu(void), busca_libre(void);
main(void)
{
char opcion;
inic_lista();
for(;;){
opcion=menu();
switch(opcion){
case 1: intro();
break;
case 2: borrar();
break;
case 3: listar();
break;
case 4: return 0;
}
}
}
void inic_lista(void)
{
register int t;
for (t=0;t<MAX;++t) info_inv[t].item[0]='\0';
}
menu (void)
{
char s[80];
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

int c;
printf("\n");
printf("1. Introducir un artculo\n");
printf("2. Borrar un artculo\n");
printf("3. Listar el inventario\n");
printf("4. Salir\n");
do{
printf("\nIntroduzca su opcin: \n");
gets(s);
c=atoi(s);
}while(c<0||c>4);
return c;
}
void intro(void)
{
int sitio;
sitio=busca_libre();
if (sitio==-1){
printf("\nLista llena");
return;
}
printf("Introduzca artculo: ");
gets(info_inv[sitio].item);
printf("Introduzca coste: ");
scanf("%f", &info_inv[sitio].coste);
printf("Introduzca nmero de disponibles: ");
scanf("%d%*c", &info_inv[sitio].dispo);
}
busca_libre(void)
{
register int t;
for(t=0;info_inv[t].item[0]&&t<MAX;++t);
if(t==MAX) return -1;
return t;
}
void borrar(void)
{
register int sitio;
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

char s[80];
printf("Introduzca nmero de registro: # ");
gets(s);
sitio=atoi(s);
if (sitio>=0&&sitio<MAX) info_inv[sitio].item[0]='\0';
}
void listar(void)
{
register int t;
for(t=0;t<MAX;++t){
if (info_inv[t].item[0]){
printf("artculo: %s\n", info_inv[t].item);
printf("coste: %f\n", info_inv[t].coste);
printf("disponibles: %d\n\n", info_inv[t].dispo);
}
}
printf("\n\n");
}
/*****PROG31.C*****/
#include <stdio.h>
main()
{
int n,y;
char ch;
printf("--- bucle tpico ---\n");
for(n=1;n<=5;++n)
printf("n=%d\n",n);
printf("--- bucle de nmeros pares ---\n");
for(n=2;n<=6;n=n+2)
printf("n=%d\n",n);
printf("--- descripcin de caracteres ASCII ---\n");
for(ch='A';ch<='C';ch++)
printf("el caracter: %c equivale en ASCII a %d\n", ch, ch);
printf("--- bucle infinito con salida ---\n");
n=0;
for(;;){
printf("n=%d", n);
n++;
if(n==7) break;
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

}
printf("--- bucle quebrado en n=%d\n", n);
printf("--- bucle descendiente condicionado\n");
for(n=100;n>1;n=n/5)
printf("n=%d", n);
printf("--- bucle que condiciona al ndice ---\n");
y=0;
for(n=1;y<23;y=++n*5+2)
printf("n=%d y=%d \n", n, y);
}
/*****PROG32.C*****/
#include <stdio.h>
main()
{
int x;
int y=25;
clrscr();
printf("Ingrese un nmero: \n");
scanf("%d", &x);
printf("resultados de la sentencia if()\n");
if(y>x*2+3)
if(x>8)
printf("x es mayor que 8 \n");
else
printf("x es igual a %d\n", x);
else
printf("y toma el valor igual a: %d\n", x*2+3);
getch();
}
/*****PROG33.C*****/
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
main(void)
{
char car;
do{
car=getche();
if (islower(car)) putchar(toupper(car));
else putchar(tolower(car));
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

}while (car!='.');
return 0;
}
/*****PROG34.C*****/
#include <stdio.h>
#include <stdlib.h>
main()
{
int premio;
int loteria=1;
clrscr();
randomize();
premio=random(100);
printf("%d\n", premio);
while (loteria){
printf("meta un nmero de uno a cien... cero para salir: \n");
scanf("%d", &loteria);
if (loteria==premio){
printf("EUREKA!!! numero=%d\n", loteria);
break;
}
else if (loteria>premio)
printf("Apunte ms bajo!!\n");
else
printf("Apunte ms alto!!\n");
}
getch();
}
/*****PROG35.C*****/
#include <stdio.h>
main()
{
int x=10;
int y=20;
int *p;
clrscr();
printf("&x=%u &y=%u x=%d y=%d\n", &x, &y, x, y);
printf("asignacin de punteros: p=&x; y=*p; \n");
p=&x;
y=*p;
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

printf(resultados: p=65496 y=*p=10\n);


printf("&p=%u p=%u &x=%u x=%d &y=%u y=%d\n", &p, p, &x, x, &y, y);
getch();
}
/*****PROG36.C*****/
#include <stdio.h>
#include <string.h>
main(void)
{
char cad[80];
gets(cad);
printf("La longitud es %d", strlen(cad));
return 0;
}
/*****PROG37.C*****/
#include <stdio.h>
main(argc, char argv[])
{
FILE *fp;
char car;
if (argc!=2){
printf("Olvid el nombre del archivo...\n");
return 1;
}
if ((fp=fopen(argv[1],"w"))==NULL){
printf("No se puede abrir el archivo...\n");
return 1;
}
do {
car=getchar();
putc(car, fp);
}while (car!='$');
fclose(fp);
return 0;
}
/*****PROG38.C*****/
#include <stdio.h>
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

main(argc, char *argv[])


{
FILE *fp;
char car;
if (argc!=2){
printf("Olvid el nombre del archivo...\n");
return 1;
}
car=getc(fp);
while(car!=EOF){
putchar(car);
car=getc(fp);
}
fclose(fp);
return 0;
}
/*****PROG39.C*****/
#include <stdio.h>
main(int argc, char *argv[])
{
FILE *entrada, *salida;
char car;
if(argc!=3){
PRINTF("Olvid introducir nombre de archivo...\n");
return 1;
}
if ((entrada=fopen(argv[1], "rb"))==NULL){
printf("No se puede abrir el archivo fuente...\n");
return 1;
}
if ((salida=fopen(argv[2], "wb"))==NULL){
printf("No se puede abrir el archivo destino...\n");
return 1;
}
while(!feof(entrada)){
car=getc(entrada);
if(!eof(entrada)) putc(car, salida);
}
fclose(entrada);
fclose(salida);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

return 0;
}
/*****PROG40.C*****/
#include <stdio.h>
main(void)
{
FILE *fp;
float f=12.23;
if((fp=fopen("prueba", "wb"))==NULL){
printf("No se puede abrir el archivo...\n");
return 1;
}
fwrite(&f, sizeof(float), 1, fp);
fclose(fp);
return 0;
}
/*****PROG41.C*****/
#include <stdio.h>
main(void)
{
register int i;
FILE *fp;
float balance[100];
if ((fp=fopen("balance", "wb"))==NULL){
printf("No se puede abrir el archivo...\n");
return 1;
}
for(i=0;i<100;i++) balance[i]=(float)i;
fwrite(balance, sizeof balance, 1, fp);
fclose(fp);
for(i=0;i<100;i++) balance[i]=0.0;
if((fp=fopen("balance", "rb"))==NULL){
printf("No se puede abrir el archivo...\n");
return 1;
}
fread(balance, sizeof balance, 1, fp);
for(i=0;i<100;i++) printf("%f", balance[i]);
fclose(fp);
return 0;
}
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

/*****PROG42.C*****/
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void otro_num(void), busca(void);
int menu(void);
main(void)
{
char opcion;
do{
opcion=menu();
switch(opcion){
case 'a': otro_num();
break;
case 'b': buscar();
break;
}
}while (opcion!='t')
return 0;
}
menu(void)
{
char c;
do{
printf("(A)adir, (B)uscar o (T)erminar:");
c=tolower(getche());
printf("\n");
}while(c!='t'&&c!='a'&&c!='b');
return 0;
}
void otro_num(void)
{
FILE *fp;
char nombre[80];
int prefijo, num;
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

if((fp=fopen("telef", "a"))==NULL){
printf("No se puede abrir archivo de directorio...\n");
exit(1);
}
printf("Introduzca un nombre y un nmero: ");
fscanf(stdin, "%s%d%d%d", nombre, &prefijo, &num);
fscanf(stdin, "%*c");
fprintf(fp, "%s%d%d%d\n", nombre, prefijo, num);
fclose(fp);
}
void buscar(void)
{
FILE *fp;
char nombre[80], nombre2[80];
int prefijo, num;
if((fp=fopen("telef", "r"))==NULL){
printf("No se puede abrir el archivo de directorio...\n");
exit(1);
}
printf("Nombre?");
gets(nombre);
while(!feof(fp)){
fscanf(fp, "%s%d%d%d", nombre2, &prefijo, &num);
if (!strcmp(nombre, nombre2)){
printf("%s: (%d) %d - %d\n", nombre, prefijo, num);
break;
}
}
fclose(fp);
}
/*****PROG43.C*****/
#include <stdio.h>
main()
{
float x=10.32;
float y=20.43;
clrscr();
printf("&x=%v &y=%u x=%f y=%f\n", &x, &y, x, y);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

printf("asignacin de punteros: p=&x; y=*p; \n");


p=&x;
y=*p;
printf("resultados: \n");
printf("&p=%u p=%u &x=%u &y=%u x=%f y=%f \n", &p, p, &x, &y, x, y);
getch();
}
/*****PROG44.C*****/
#include <stdio.h>
#define text1 "texto 1 #define"
char text2[20]="texto2 global";
main()
{
char text3[20];
char text5[80];
char text4[]="texto sin dimensin";
static char texto[80]="esto es una cadena";
*text5='\0';
clrscr();
printf("resultados: texto1=%s\n", text1);
puts(texto);
puts(text2);
puts(text4);
printf("%s -- %s -- %s\n", texto, text2, text4);
printf("ingrese cadena tecleando...\n");
gets(text3);
puts(text3);
strcat(text5, "texto rellenado");
puts(text5);
getch();
}
/*****PROG45.C*****/
#include <conio.h>
void borde (int xinicial, int yinicial, int xfinal, int yfinal);
main(void)
{
clrscr();
borde(1,1,79,25);
window(3,2,40,9);
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

borde(3,2,40,9);
gotoxy(3,2);
cprintf("primera ventana");
window(30,10,60,18);
borde(30,10,60,28);
gotoxy(3,2);
cprintf("segunda ventana");
gotoxy(5,4);
cprintf("hola");
getche();
return 0;
}
void borde(int xinicial, int yinicial, int xfinal, int yfinal)
{
register int i;
gotoxy(1,1);
for(i=0;i<=xfinal-xinicial;i++)
putch('-');
gotoxy(1, yfinal-yninicial);
for(i=0;i<=xfinal-xinicial;i++);
putch('-');
for(i=2;i<=yfinal-yinicial;i++){
gotoxy(1,i);
putch('|');
gotoxy(xfinal-xinicial+1, i);
putch('|');
}
}
/*****PROG46.C*****/
#include <conio.h>
main(void)
{
register int i, j;
textmode(c80);
clrscr();
for(i=1,j=1;j<24;i++,j++){
gotoxy(i,j);
cprintf("X");
}
for(;j>0;i++,j--){
gotoxy(i,j);
cprintf("X");
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

}
textbackground(LIGHTBLUE);
textcolor(RED);
gotoxy(40,12);
cprintf("Est es rojo con fondo azul claro");
gotoxy(45,15);
textcolor(GREEN|BLINK);
textbackground(BLACK);
cprintf("Verde parpadeante sobre negro");
getch();
textmode(LASTMODE);
return 0;
}
/*****PROG47.C*****/
#include <graphics.h>
#include <conio.h>
main(void)
{
int controlador, modo;
controlador=VGA;
modo=VGAMED;
initgraph(&controlador, &modo, " ");
outtext("Normal");
settextstyle(GOTHIC_FONT, HORIZ_DIR, 2);
outtext("Gtica");
settextstyle(TRIPLEX_FONT, HORIZ_DIR, 2);
outtext("Triplex");
settextstyle(SANS_SERIF_FONT, HORIZ_DIR, 7);
outtext("Sans_Serif");
getch();
restorecrtmode();
return 0;
}
/*****PROG48.C*****/
#include <conio.h>
#include <graphics.h>
#include <stdlib.h>
void cuadro(int xinicial, int yinicial, int xfinal, int yfinal, int color);
main()
{
Tutorial
Turbo C

Rodolfo Gallardo-Rosales

int controlador, modo;


unsigned tamanio;
void *buf;
controlador=VGA;
modo=VGAMED;
initgraph(&controlador, &modo, " ");
cuadro(20,20,200,200,15);
setcolor(RED);
line(20,20,200,200);
setcolor(GREEN);
line(20,200,200,20);
geetch();
tamanio=imagesize(20,20,200,200);
if(tamanio!=-1){
buf=malloc(tamanio);
if(buf){
getimage(20,20,200,200,buf);
putimage(100,100,buf,COPY_PUT);
putimage(300,50,buf,COPY_PUT);
}
}
outtext("Pulse una tecla...");
getch();
restorecrtmode();
return 0;
}
void cuadro(int xinicial, int yinicial, int xfinal, int yfinal, int color)
{
setcolor(color);
line(xinicial,yinicial,xinicial,yfinal);
line(xinicial,yinicial,xfinal,yfinal);
line(xfinal,yinicial,xfinal,yfinal);
line(xfinal,yfinal,xinicial,yfinal);
}

5. Bibliografa.
BORLAND International.

Turbo C user's guide. U.S.A. 1988.

BORLAND International.

Turbo C reference guide. U.S.A. 1988.

Tutorial
Turbo C

Rodolfo Gallardo-Rosales

GARCIA-BADELL, J.Javier.

Turbo C: Programacin y manejo de archivos.


Macrobit Corporation. Mxico, 1991.

SCHILDT, Herbert.

Programacin en lenguaje C. [C made easy].


McGraw-Hill Inc. Espaa, 1990.

SCHILDT, Herbert.

Turbo C/C++. Manual de referencia. [The


complete reference]. Osborne/McGraw-Hill Inc.
Mxico, 1993.

SCHILDT, Herbert.

Turbo C. Programacin avanzada. [Advanced


Turbo C]. 2a. ed. Borland-Osborne/McGraw-hill.
Espaa, 1990.

Para mayor informacin


Se sugiere la lectura de alguno de los libros mencionados arriba, y el
estudio ms completo ser la nica manera de dominar completamente el
Lenguaje de programacin Turbo C.

Tutorial
Turbo C

Das könnte Ihnen auch gefallen