Lenguaje C
C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL.
Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, concretamente Unix.
C es apreciado por la eficiencia del código que produce y es el
lenguaje de programación más popular para crear software de sistemas,
aunque también se utiliza para crear aplicaciones.
Se trata de un lenguaje fuertemente tipificado de medio nivel pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel. Los compiladores suelen ofrecer extensiones al lenguaje que posibilitan mezclar código en ensamblador con código C o acceder directamente a memoria o dispositivos periféricos.
La primera estandarización del lenguaje C fue en ANSI, con el estándar X3.159-1989. El lenguaje que define este estándar fue conocido vulgarmente como ANSI C. Posteriormente, en 1990, fue ratificado como estándar ISO
(ISO/IEC 9899:1990). La adopción de este estándar es muy amplia por lo
que, si los programas creados lo siguen, el código es portátil entre
plataformas y/o arquitecturas.
printf:
Definida dentro
de ANSI C.
El prototipo de printf es: int printf(const char
*formato, listaDeArgumentos);
Como verán, printf devuelve un número
entero. Este representa el número de caracteres escritos.
Cualquier número negativo indica que ocurrió un error.
Esta función escribe en el flujo estándar
de salida stdout ( o sea, por pantalla ) los argumentos que componen
“listaDeArgumentos” según las especificaciones
dadas por la cadena apuntada por “formato”. La cadena
“formato”, puede contener tanto letras como códigos
que describen la forma en que se muestran los argumentos. Existen
varios códigos, pero a continuación sólo les
comentaré los más usados:
%c Se usa para imprimir un caracter
%i Se usa para imprimir un entero en decimal con signo.
%d Se usa para imprimir un entero en decimal con signo.
%f Se usa para imprimir un número en coma
flotante ( real ).
%x Se usa para imprimir números hexadecimales.
%o Se usa para imprimir números en Octal.
%s Se usa para imprimir una cadena de caracteres.
%e Se usa para imprimir un número en notación
científica.
Para su información, existen modificadores que
pueden especificar con mas detalle de que forma se quiere que se
muestren los datos con la finalidad de poder ordenarlos. Esto quiere
decir que se puede modificar el código ( colocando los
modificadores entre el signo % y el caracter de formato ) para que
muestre por ejemplo una determinada longitud del campo, cuantas
posiciones decimales se mostrarán o un indicador de ajuste a
la izquierda. Por ejemplo, %-10.2f ajusta un número en coma
flotante por la izquierda con dos posiciones decimales en un campo de
diez caracteres. No profundizaremos en este punto.
Ejemplos:
printf(“Hola”); // Imprime la palabra Hola
por pantalla ( sin las comillas ).
printf(“Hola\n”); // Igual al anterior pero
imprime imprime el retorno de carro- Nueva línea
i = 10;
printf(“Número entero %i \n”, i); //
Imprime “Numero entero 10”
c = 'x';
printf(“Caracter %c y número %i\n”,
c, i); // Imprime “Caracter x y número 10”
Nuestro
Primer programa: El clásico
Hola Mundo.
#include<stdio.h>
int main(void) {
printf(“Hola Mundo!\n”);
return 0;
}
Al compilar y ejecutar este programa, lo que hará
es imprimir la frase “Hola Mundo!” por pantalla ( sin las
comillas ).
getchar:
Es la función de entrada definida por el ANSI C. Esta función
se encarga de obtener un caracter desde el teclado. El problema de
esta función es que guarda en un buffer
la entrada hasta que se presiona la tecla ENTER ( y al hacerlo, ella
tomará sólo el primer caracter del buffer
). La razón de ésto es que los sistemas UNIX
originales usaban un buffer de línea
para entrada por terminal ( lo que quiere decir que había que
introducir un retorno de carro para que lo que se hubiese escrito
fuese efectivamente enviado al computador ). Esta función está
en desuso debido a que los programas modernos requieren cierto grado
de interactividad y el hecho de tener que
esperar a enviar un ENTER para procesar suele ser desconcertante.
Aún así, siempre es incluida
en los compiladores por razones de portabilidad. Existe una función
no ANSI mas conveniente a la hora de esperar un caracter por teclado
que está incluida en la librería
de Turbo C conio.h que veremos más adelante.
El prototipo del getchar() es: int getchar(void);
Un ejemplo de su uso:
char ch;
ch = getchar();
getche:
No es ANSI
C sino que está definida dentro de una librería de
Borland ( quien desarrollo Turbo C, Turbo C++ y Borland C++) llamada
conio.h. Espera a que el usuario presione una tecla por teclado y
esta función lee el caracter presionado sin necesidad de
esperar el ENTER y el “eco” de la misma es presentado por
pantalla.
El prototipo del getche() es: int getche(void);
Un ejemplo de su uso:
char ch;
ch = getche(); // Asigna a ch el caracter
presionado por teclado y lo muestra por pantalla.
getch:
No
es ANSI C sino que
está definida dentro de una librería conio.h. Espera a
que el usuario presione una tecla por teclado y esta función
lee el caracter presionado sin necesidad de esperar el ENTER pero a
diferencia del getche(), ésta no muestra el “eco”
por pantalla.
El prototipo del getch() es: int getch(void);
Un ejemplo de su uso:
char ch;
ch = getch(); // Asigna a ch el caracter
presionado por teclado. No muestra nada por pantalla.
putchar:
Definida dentro de
ANSI C. Imprime un caracter en pantalla en la posición actual
del cursor
El prototipo de putchar es: int putchar(int c);
donde c es el caracter a imprimir. Esta función
devuelve un parámetro ya que el programador podría
necesitar verificar que la función haya sido ejecutada con
éxito. Si es cierto, devuelve el mismo caracter c, de lo
contrario devolverá un EOF ( Una macro definida en stdio.h que
significa End Of File. Lo veremos más adelante en el curso ).
Un ejemplo de su uso:
char ch;
ch = 'S';
putchar(ch); //
Lo que imprime el caracter 'S' por pantalla.
scanf:
Definida dentro
de ANSI C.
El prototipo de scanf es: int scanf(const char *formato,
listaDeArgumentos);
Es la función encargada de leer datos desde el
buffer estándar de entrada stdin ( teclado ). Puede leer todos
los tipos de datos que hayan. Es la función inversa de
printf();
Los códigos para representar los datos son los
mismos que en printf. Por ejemplo:
scanf(“%i”, &i); // OJO con el signo
'&'
especifica que se espera del buffer estándar un
número entero y éste será almacenado dentro de
la variable i. En realidad el símbolo '&' podría
traducirse como: “en la dirección de memoria que
contiene la variable 'i'”. Sobre esto profundizaremos en
punteros. Lo que se está diciendo que se almacene el valor
dentro de una localidad de memoria. Este signo NO puede faltar a
menos que hablemos de cadenas y esto tiene su explicación que
lo veremos cuando estudiemos Cadenas más adelante.
Otra cosa es que una sólo orden puede ser usada
para recibir varios datos al mismo tiempo. Por ejemplo:
scanf(“%i%c”, &i, &ch);
espera a que el usuario introduzca algo como “10
a” y luego ENTER por teclado para almacenar 10 en i y la letra
a en ch.
Otras
funciones básicas.
textcolor:
Definida dentro de conio.h. Esta función cambia el color de
las letras que se muestran por pantalla.
Su prototipo es: void
textcolor(int color);
Donde color es un número
que representa el color deseado. Tambien existen unas MACROS
definidas dentro de conio.h que representan el color. Estos son:
Macro Equivalente
entero
BLACK 0
BLUE 1
GREEN 2
CYAN 3
RED 4
MAGENTA 5
BROWN 6
LIGHTGRAY 7
DARKGRAY 8
LIGHTBLUE 9
LIGHTGREEN 10
LIGHTCYAN 11
LIGHTRED 12
LIGHTMAGENTA 13
YELLOW 14
WHITE 15
BLINK 128
El BLINK es para hacer al
cursor parpadeante.
Ejemplo:
textcolor(RED);
hará que todo el
texto que se imprima a continuación aparezca en rojo.
textbackground:
Definida dentro de conio.h.
Esta función cambia el color del fondo de pantalla sobre el
cual se muestran las letras.
Su prototipo es: void textbackground(int color);
El color de fondo sólo puede ser de los 8
principales colores así que sólo aplican las 8 primeras
MACROS mencionadas en textcolor ( de 0 a 7 ).
Ejemplo:
textbackground(RED); // El color de fondo será
Rojo
textcolor(BLUE); // El color del texto será Azul.
clrscr(); // Borra la pantalla pero debido a que el
color de fondo es rojo,
// toda la pantalla se verá roja.
printf(“Texto\n); // Imprime la palabra “Texto”
en Azul sobre el fondo rojo.
clrscr:
No está definida por el ANSI C. Esta función se
encuentra dentro de la librería conio.h de Borland.
Esta función borra todo el contenido de la
ventana de texto actual.
El prototipo de clrscr es: void clrscr(void);
Su forma de uso es:
clrscr();
gotoxy:
No está definida por el
ANSI C. Esta función se encuentra dentro de la librería
conio.h de Borland.
El prototipo de gotoxy es: void gotoxy(int x, int y);
Esta función coloca al cursor en la posición
de pantalla apuntada por las coordenadas x e y dentro de la pantalla
de texto actual. Una pantalla estándar de DOS contiene 80
columnas por 25 filas. Si las coordenadas no son válidas, no
se hace nada.
Ejemplo:
clrscr();
gotoxy(20,10);
putchar('*');
borra la pantalla, se posiciona en la columna, fila 10 e
imprime el caracter *.
wherex:
No
está definida por el ANSI C. Esta función se encuentra
dentro de la librería conio.h de Borland.
El prototipo de wherex es: int wherex(void);
Retorna la columna en la que se encuentra posicionado el
cursor relativa a la ventana de texto actual.
wherey:
No está definida por el
ANSI C. Esta función se encuentra dentro de la librería
conio.h de Borland.
El prototipo de wherey es: int wherey(void);
Retorna la fila en la que se encuentra posicionado el
cursor relativa a la ventana de texto actual.
window:
No está definida por el
ANSI C. Esta función se encuentra dentro de la librería
conio.h de Borland.
El prototipo de window es: void window(int izq, int arr,
int der, int aba);
Esta función se usa para crear una ventana de
texto rectangular con coordenadas superior-izquierda e
inferior-derecha dadas por izq,arr y der,aba. Si las coordenadas no
son válidas, no se hace nada.
Es por esta función que he estado comentando en
las funciones anteriores: “dentro de la pantalla de texto
actual” ya que luego de usada esta funcion, todas las
opereciones como clrscr, cprintf, gotoxy, etc, son relativas a esta
nueva ventana.
Ejemplo:
window(10, 10, 60, 15); // crea una ventana cuyas
esquinas son (10,10) y (60,15)
gotoxy(2, 3); // Se coloca en la posición (2,3)
dentro de la ventana anterior.
cprintf:
No está definida por el
ANSI C. Esta función se encuentra dentro de la librería
conio.h de Borland.
El prototipo de cprintf es: int cprintf(const char
*fmt,...);
Hace lo mismo que printf pero dentro de la ventana de
texto actual.
Siguiendo el mismo ejemplo anterior, si añadimos:
cprintf(“Punto (2,3) de la ventana activa\n\r”);
imprimiría dentro de la ventana definida en la
posición dada la frase: “Punto (2,3) de la ventana
activa”.
Debe ponerse también \r ya que cprintf no
interpreta el \n como un par \r\n como hace el printf. \r es retorno
de carro.
No hay comentarios:
Publicar un comentario