Archivo

Archivo para la categoría ‘Programacion’

Programación PHP

Viernes, 2 de Noviembre de 2007 admin Sin comentarios

En este LIBRO irá todo lo relacionado con el Lenguaje PHP, desde lo más básico a lo más avanzado. Al final todos aprenderemos PHP ;) Un sitio Web destinado a un futuro brillante no puede estar basado únicamente en una serie páginas HTML estáticas. Y para proporcionar resultados satisfactorios a los usuarios, debe tener la capacidad de generar automáticamente un contenido dinámico. Es allí donde interviene PHP, como uno de los lenguajes más populares y fáciles de utilizar, para desarrollar este tipo de aplicación Web. ¡Bienvenido entonces al mundo de los sitios dinámicos!

Sumario:

¿Qué es el PHP?
¿Qué ofrece el PHP?
El PHP en sus páginas
Requisitos
Software necesario

Categories: Programacion Tags:

Página de programación C/C++ en Unix/Linux

Viernes, 2 de Noviembre de 2007 admin Sin comentarios

Página de programación C/C++ en Unix/Linux

Nuevos temas:
9 de Mayo de 2004: Temas para principiantes: Obtención de números aleatorios con rand()
26 de Abril de 2004: Temas para principiantes: un Hola mundo y una sesión básica con debugger
11 de Febrero de 2004: Transformar coordenadas de gráfico a pixels y un ejemplo sobre X11.



En esta página hay algunos ejemplos muy sencillos (lo mínimo imprescindible) de programación "avanzada" en C/C++ para Unix/Linux.
También hay algunas cosillas de Java, libros, imágenes curiosas, etc.
Puedes ver o añadir enlaces a otras páginas de programación.
El autor de esta fechoría es chuidiang@hotmail.com

Tema principal : Programación de C en linux.
Otros temas : c++, java, libros, metodologías de diseño, pasatiempos.

 

PROGRAMACIÓN EN C SOBRE UNIX/LINUX

Sockets TCP/IP Comunicación en red: Dos programas en el mismo o en distintos ordenadores pueden abrir una comunicación entre ellos y enviarse datos.
RPC.
Remote Procedure Call
Comunicación en red: Un programa en ejecución puede llamar a funciones de otro programa también en ejecución en otro ordenador.
Memoria compartida Comunicación entre procesos: Dos programas en la misma máquina pueden compartir una zona común de memoria para intercambiar datos.
Semáforos Comunicación entre procesos: Cómo hacer que un programa espere a otro o que no puedan acceder simultáneamente a un recurso común, ambos en el mismo ordenador.
Colas de mensajes Comunicación entre procesos: Dos programas en el mismo ordenador pueden enviarse mensajes con información.
Señales y alarmas Comunicación entre procesos: Dos programas en el mismo ordenador se pueden enviar señales. Cómo hacer que un programa ejecute algo cada cierto tiempo sin necesidad de "dormirlo".
Procesos y Threads Multitarea: Podemos hacer que nuestro programa ejecute varias cosas "simultáneamente".
Útiles de desarrollo make : Mi proyecto es muy grande, tengo fuentes por varios directorios y tarda mucho en compilar. make nos ayuda a compilar eficientemente y con facilidad.
profiler : Mi programa va muy lento. ¿Cómo sé dónde está perdiendo el tiempo?
librerías : Qué son las librerías y cómo puedo hacer una.
ctags : Cómo navegar con el vi por los tipos de nuestro código C
Gráficos Un pequeño programa de ejemplo y las explicaciones básicas para poder empezar a hacer gráficos "maravillosos" en linux/unix con X11.
Las cuentas para transformar los puntos de nuestro gráfico en pixels de pantalla. Un ejemplo dibujando la función sin(x) sobre una ventana de X11.
Códigos ANSI Varios: En una ventana de texto UNIX o MS-DOS se puede controlar desde C/C++ la posición para escribir con un printf() o los colores con los que se escribe el texto.
Algunas funciones útiles Varios: Funciones poco conocidas, pero útiles para programación en C sobre unix.
Punteros Varios: Algunos de los errores típicos que se comenten al comenzar a manejar punteros.
OTROS TEMAS
C++ Algunos trucos de programación y cosas que pueden dar problemas y traernos de cabeza.
Sobrecarga de operadores . Algunos operadores curiosos para sobrecargar.
Ocultación y encapsulamiento en C++. Por qué es tan importante la encapsulación.
C sobre linux para novatos Como editar con el vi, compilar con gcc y ejecutar un "Hola mundo" en C sobre linux.
Una sesión básica con el debugger de linux, el gdb.
Obtención de números aleatorios con rand() y drand48().
Java Lo de java ha pasado a Página inicial de java
Libros de informática Documentación: Algunos libros que he leido últimamente y mi opinión sobre ellos. Hay de programación en unix, de C++, de diseño orientado a objetos (uml, …), de gestión de proyectos software, etc
Metodología orientada a objetos Documentación: Mi propio resumen de las metodologías orientadas a objetos después de haber leido varios libros y montones de artículos en internet sobre el tema.
Modelo vista controlador Documentacióm: Una forma habitual de separar nuestras clases de forma que luego podamos reutilizarlas al máximo.
Programación extrema Documentación: Una alternativa a las metodologías que requieren demasiada documentación (diseños, diagramas, UML, etc).
El problema de los ladrillos Pasatiempos: Un problema de matemáticas que da un resultado asombroso.
Imágenes y efectos ópticos Pasatiempos: Algunas imágenes y efectos ópticos recopilados de portalmix.
Categories: Programacion Tags:

Curso de CORBA (Desarrollo de aplicaciones)

Viernes, 2 de Noviembre de 2007 admin Sin comentarios

Curso de CORBA (Desarrollo de aplicaciones)

El curso se divide en cuatro entregas:

  1. Introducción al curso. Introducción a la arquitectura CORBA
  2. Herramientas de desarrollo. Lenguaje OMG/IDL
  3. Análisis y diseño de una aplicación CORBA
  4. Implementación de una aplicación CORBA. Conclusiones

Alvaro del Castillo San Félix. Distribuido bajo licencia FDL. Contribuciones

Categories: Programacion Tags:

Entrada y salida estándar en C++ (programación C++)

Viernes, 2 de Noviembre de 2007 admin Sin comentarios

Entrada y salida estándar en C++

 

  1. Operaciones de salida.
  2. Operaciones de entrada
  3. Anexos
  4. Bibliografía

Cuando nos referimos a entrada/salida estándar (E/S estándar) queremos decir que los datos o bien se están leyendo del teclado, ó bien se están escribiendo en el monitor de video. Como se utilizan muy frecuentemente se consideran como los dispositivos de E/S por default y no necesitan ser nombrados en las instrucciones de E/S.

En el lenguaje c++ tenemos varias alternativas para ingresar y/o mostrar datos, dependiendo de la librería que vamos a utilizar para desarrollar el programa, entre estas están: iostream.h y sodio.h.

< IOSTREAM.H>

Las operaciones de entrada y salida no forman parte del conjunto de sentencias de C++, sino que pertenecen al conjunto de funciones y clases de la biblioteca estándar de C++. Ellas se incluyen en los archivos de cabecera iostream.h por lo que siempre que queramos utilizarlas deberemos introducir la línea de código #include

Esta biblioteca es una implementación orientada a objetos y está basada en el concepto de flujos. A nivel abstracto un flujo es un medio de describir la secuencia de datos de una fuente a un destino o sumidero. Así, por ejemplo, cuando se introducen caracteres desde el teclado, se puede pensar en caracteres que fluyen o se trasladan desde el teclado a las estructuras de datos del programa.

Los objetos de flujo que vienen predefinidos serán:

  1. cin
  2. , que toma caracteres de la entrada estándar (teclado);

  3. cout
  4. , pone caracteres en la salida estándar (pantalla);

  5. cerr y clog
  6. ponen mensajes de error en la salida estándar.

Estos objetos se utilizan mediante los operadores << y >>. El operador << se denomina operador de inserción; y apunta al objeto donde tiene que enviar la información. Por lo tanto la sintaxis de cout será:

cout<<<<…<

No olvidemos que las cadenas de texto son variables y se ponen entre " " (comillas dobles).

Por su parte >> se denomina operador de extracción, lee información del flujo cin (a la izquierda del operador) y las almacena en las variables indicadas a la derecha).
La sintaxis sería la siguiente:

cin>>variable1>>…>>variablen;

Un ejemplo de código utilizando ambos objetos podría ser el siguiente:

#include

main ()
{
int i;
cout<<"Introduce un número";
cin>>i;

}

Que mostraría por pantalla la frase "Introduce un número" y posteriormente almacenaría el valor introducido por teclado en la variable i.

 

Operaciones de salida.

Printf: Imprimir en pantalla

Para utilizar la función printf en nuestros programas debemos incluir la directiva:

#include

Si sólo queremos imprimir una cadena basta con escribir la siguiente línea de código.

printf( "Cadena" );

Como resultado muestra en pantalla:

Cadena

Lo que pongamos entre las comillas es lo que vamos a sacar por pantalla.

Si volvemos a usar otro printf, por ejemplo:

#include

void main()

{

printf( "Cadena" );

printf( "Segunda" );

}

Obtendremos:

CadenaSegunda

Este ejemplo nos muestra cómo funciona printf. Para escribir en la pantalla se usa un cursor que no vemos. Cuando escribimos algo el cursor va al final del texto. Cuando el texto llega al final de la fila, lo siguiente que pongamos irá a la fila siguiente. Si lo que queremos es sacar cada una en una línea deberemos usar " ". Es el indicador de retorno de carro. Lo que hace es saltar el cursor de escritura a la línea siguiente:

#include

void main()

{

printf( "Cadena " );

printf( "Segunda" );

}

y tendremos:

Cadena

Segunda

También podemos poner más de una cadena dentro del printf:

printf( "Primera cadena" "Segunda cadena" );

Lo que no podemos hacer es meter cosas entre las cadenas:

printf( "Primera cadena" texto en medio "Segunda cadena" );

esto no es válido. Cuando el compilador intenta interpretar esta sentencia se encuentra "Primera cadena" y luego texto en medio, no sabe qué hacer con ello y da un error.

Pero ¿qué pasa si queremos imprimir el símbolo " en pantalla? Por ejemplo imaginemos que queremos escribir:

Esto es "extraño"

Si para ello hacemos:

printf( "Esto es "extraño"" );

obtendremos unos cuantos errores. El problema es que el símbolo " se usa para indicar al compilador el comienzo o el final de una cadena. Así que en realidad le estaríamos dando la cadena "Esto es", luego extraño y luego otra cadena vacía "". Pues resulta que printf no admite esto y de nuevo tenemos errores.

La solución es usar ". Veamos:

printf( "Esto es "extraño"" );

Esta vez todo irá como la seda. Como vemos la contrabarra '' sirve para indicarle al compilador que escriba caracteres que de otra forma no podríamos.

Esta contrabarra se usa en C para indicar al compilador que queremos meter símbolos especiales. Pero ¿Y si lo que queremos es usar '' como un carácter normal y poner por ejemplo HolaAdiós? Pues muy fácil, volvemos a usar '':

printf( "HolaAdiós" );

y esta doble '' indica a C que lo que queremos es mostrar una ''.

Operaciones de entrada

Algo muy usual en un programa es esperar que el usuario introduzca datos por el teclado. Para ello contamos con varias posibilidades: Usar las funciones de la biblioteca estándar, crear nuestras propias interrupciones de teclado (MS-Dos) o usar funciones de alguna biblioteca diferente (como por ejemplo Allegro).

En este trabajo topare solo la primera opción, usando las funciones de la biblioteca estándar. Pero veamos por encima las otras posibilidades.

Las funciones estándar están bien para un programa sencillito. Pero cuando queremos hacer juegos por ejemplo, no suelen ser suficiente. Demasiado lentas o no nos dan todas las posibilidades que buscamos, como comprobar si hay varias teclas pulsadas. Para solucionar esto tenemos dos posibilidades:

La más complicada es crear nuestras propias interrupciones de teclado. ¿Qué es una interrupción de teclado? Es un pequeño programa en memoria que se ejecuta continuamente y comprueba el estado del teclado. Podemos crear uno nuestro y hacer que el ordenador use el que hemos creado en vez del suyo.

Otra posibilidad más sencilla es usar una biblioteca que tenga funciones para controlar el teclado. Por ejemplo si usamos la biblioteca Allegro, ella misma hace todo el trabajo y nosotros no tenemos más que recoger sus frutos con un par de sencillas instrucciones. Esto soluciona mucho el trabajo y nos libra de tener que aprender cómo funcionan los aspectos más oscuros del control del teclado.

Vamos ahora con las funciones de la biblioteca estándar antes mencionada.

Scanf

El uso de scanf es muy similar al de printf con una diferencia, nos da la posibilidad de que el usuario introduzca datos en vez de mostrarlos. No nos permite mostrar texto en la pantalla, por eso si queremos mostrar un mensaje usamos un printf delante. Un ejemplo:

#include

void main()

{

int num;

printf( "Introduce un número " );

scanf( "%i", &num );

printf( "Has tecleado el número %i ", num );

}

Primero vamos a ver unas nota de estética, para hacer los programas un poco más elegantes. Parece una tontería, pero los pequeños detalles hacen que un programa gane mucho. El scanf no mueve el cursor de su posición actual, así que en nuestro ejemplo queda:

Introduce un número _ /* La barra horizontal indica dónde esta el cursor */

Esto es porque en el printf no hemos puesto al final el símbolo de salto de línea ' '. Además hemos dejado un espacio al final de Introduce un número: para que así cuando tecleemos el número no salga pegado al mensaje. Si no hubiésemos dejado el espacio quedaría así al introducir el número 120 (es un ejemplo):

Introduce un número120

Veamos cómo funciona el scanf. Lo primero nos fijamos que hay una cadena entre comillas. Esta es similar a la de printf, nos sirve para indicarle al compilador qué tipo de datos estamos pidiendo. Como en este caso es un integer usamos %i. Después de la coma tenemos la variable donde almacenamos el dato, en este caso 'num'.

Fíjate que en el scanf la variable 'num' lleva delante el símbolo &, este es muy importante, sirve para indicar al compilador cual es la dirección (o posición en la memoria) de la variable.

Podemos preguntar por más de una variable a la vez en un sólo scanf, hay que poner un %i por cada variable:

#include

void main()

{

int a, b, c;

printf( "Introduce tres números: " );

scanf( "%i %i %i", &a, &b, &c );

printf( "Has tecleado los números %i %i %i ", a, b, c );

}

De esta forma cuando el usuario ejecuta el programa debe introducir los tres datos separados por un espacio.

También podemos pedir en un mismo scanf variables de distinto tipo:

#include

void main()

{

int a;

float b;

printf( "Introduce dos números: " );

scanf( "%i %f", &a, &b );

printf( "Has tecleado los números %i %f ", a, b );

}

A cada modificador (%i, %f) le debe corresponder una variable de su mismo tipo. Es decir, al poner un %i el compilador espera que su variable correspondiente sea de tipo int. Si ponemos %f espera una variable tipo float.


Getch y getche

Si lo que queremos es que el usuario introduzca un carácter por el teclado usamos las funciones getch y getche. Estas esperan a que el usuario introduzca un carácter por el teclado. La diferencia entre getche y getch es que la primera saca por pantalla la tecla que hemos pulsado y la segunda no (la e del final se refiere a echo=eco). Ejemplos:

#include

void main()

{

char letra;

printf( "Introduce una letra: " );

fflush( stdout );

letra = getche();

printf( " Has introducido la letra: %c", letra );

}

Resultado:

Introduce una letra: a

Has introducido la letra: a

¿Qué es el fflush( stdout )?. Pues bien, cuando usamos la función printf, no escribimos directamente en la pantalla, sino en una memoria intermedia (lo que llaman un bufer). Cuando este bufer se llena o cuando metemos un carácter ' ' es cuando se envía el texto a la pantalla. En este ejemplo yo quería que apareciera el mensaje Introduce una letra: y el cursor se quedara justo después, es decir, sin usar ' '. Si se hace esto, en algunos compiladores el mensaje no se muestra en pantalla hasta que se pulsa una tecla (probar). Y la función fflush( stdout ) lo que hace es enviar a la pantalla lo que hay en ese bufer.

Y ahora un ejemplo con getch:

#include

void main()

{

char letra;

printf( "Introduce una letra: " );

fflush( stdout );

letra = getch();

printf(" has introducido la letra :%c", letra );

}

Resultado:

Introduce una letra:

Has introducido la letra: a

Como vemos la única diferencia es que en el primer ejemplo se muestra en pantalla lo que escribimos y en el segundo no.

ANEXOS


Usos de printf y scanf

printf("Mensaje");
printf("Mensaje %d",Variable);
printf("Mensaje %d",Variable:2:3);
cprintf("Mensaje");
Escribe Mensaje en la pantalla
Escribe Mensaje y el valor de la Variable en pantalla
Escribe Mensaje y el valor de la Variable con 2 enteros y 3 decimales
Escribe Mensaje en color especificado
scanf("%d",&Variable);
scanf("%d %f",&Variable1,&Variable2);
Asigna valor entero a Variable
Asigna valor entero a Variable1 y valor real a Variable2

 

 

 

 

 

 

 

Nota

C++ ofrece una alternativa a las llamadas de funcion printf y scanf para manejar la entrada/salida de los tipos y cadenas de datos estandar. Así en lugar de printf usamos el flujo estandar de salida cout y el operador << ("colocar en"); y en lugar de scanf usamos el flujo de entrada estandar cin y el operador >>("obtener de"). Estos operadores de inserción y extracción de flujo, a diferencia de printf y scanf, no requieren de cadenas de formato y de formato y de especificadotes de conversión para indicar los tipos de datos que son extraidos o introducidos.

Las siguientes funciones nos resultan indispensable para poder brindar una mejor presentación de los datos en pantalla.

Gotoxy: Posicionando el cursor (DOS)

Esta función sólo está disponible en compiladores de C que dispongan de la biblioteca

Hemos visto que cuando usamos printf se escribe en la posición actual del cursor y se mueve el cursor al final de la cadena que hemos escrito.

Vale, pero ¿qué pasa cuando queremos escribir en una posición determinada de la pantalla? La solución está en la función gotoxy. Supongamos que queremos escribir 'Hola' en la fila 10, columna 20 de la pantalla:

#include

#include

void main()

{

gotoxy( 20, 10 );

printf( "Hola" );

}

(Nota: para usar gotoxy hay que incluir la biblioteca conio.h).

Fíjate que primero se pone la columna (x) y luego la fila (y). La esquina superior izquierda es la posición (1, 1).

Clrscr: Borrar la pantalla (DOS)

Ahora ya sólo nos falta saber cómo se borra la pantalla. Pues es tan fácil como usar:

clrscr()

(clear screen, borrar pantalla).

Esta función nó solo borra la pantalla, sino que además sitúa el cursor en la posición (1, 1), en la esquina superior izquierda.

#include

#include

void main()

{

clrscr();

printf( "Hola" );

}

Este método sólo vale para compiladores que incluyan el fichero stdio.h.

BIBLIOGRAFÍA

Como programar en C/C++. H.M. Deitel / P.J. Deitel. Prentice may, 2da ed. 1995.

Programación orientada a objetos con C++. Fco. Javier Ceballos. Ed. ra-ma 1993.

Programacion en C++. Enrique hernandez / Jose hernandez. Ed. Paraninfo 1993.

EN INTERNET

www.lawebdelprogramador.com

http://www.publispain.com/supertutoriales/programacion

Autores: Palate Gaibor y Alex Fernando

Categories: Programacion Tags:

Entrada y salida estándar en C++ (programación C++)

Viernes, 2 de Noviembre de 2007 admin Sin comentarios

Entrada y salida estándar en C++

 

  1. Operaciones de salida.
  2. Operaciones de entrada
  3. Anexos
  4. Bibliografía

Cuando nos referimos a entrada/salida estándar (E/S estándar) queremos decir que los datos o bien se están leyendo del teclado, ó bien se están escribiendo en el monitor de video. Como se utilizan muy frecuentemente se consideran como los dispositivos de E/S por default y no necesitan ser nombrados en las instrucciones de E/S.

En el lenguaje c++ tenemos varias alternativas para ingresar y/o mostrar datos, dependiendo de la librería que vamos a utilizar para desarrollar el programa, entre estas están: iostream.h y sodio.h.

< IOSTREAM.H>

Las operaciones de entrada y salida no forman parte del conjunto de sentencias de C++, sino que pertenecen al conjunto de funciones y clases de la biblioteca estándar de C++. Ellas se incluyen en los archivos de cabecera iostream.h por lo que siempre que queramos utilizarlas deberemos introducir la línea de código #include

Esta biblioteca es una implementación orientada a objetos y está basada en el concepto de flujos. A nivel abstracto un flujo es un medio de describir la secuencia de datos de una fuente a un destino o sumidero. Así, por ejemplo, cuando se introducen caracteres desde el teclado, se puede pensar en caracteres que fluyen o se trasladan desde el teclado a las estructuras de datos del programa.

Los objetos de flujo que vienen predefinidos serán:

  1. cin
  2. , que toma caracteres de la entrada estándar (teclado);

  3. cout
  4. , pone caracteres en la salida estándar (pantalla);

  5. cerr y clog
  6. ponen mensajes de error en la salida estándar.

Estos objetos se utilizan mediante los operadores << y >>. El operador << se denomina operador de inserción; y apunta al objeto donde tiene que enviar la información. Por lo tanto la sintaxis de cout será:

cout<<<<…<

No olvidemos que las cadenas de texto son variables y se ponen entre " " (comillas dobles).

Por su parte >> se denomina operador de extracción, lee información del flujo cin (a la izquierda del operador) y las almacena en las variables indicadas a la derecha).
La sintaxis sería la siguiente:

cin>>variable1>>…>>variablen;

Un ejemplo de código utilizando ambos objetos podría ser el siguiente:

#include

main ()
{
int i;
cout<<"Introduce un número";
cin>>i;

}

Que mostraría por pantalla la frase "Introduce un número" y posteriormente almacenaría el valor introducido por teclado en la variable i.

 

Operaciones de salida.

Printf: Imprimir en pantalla

Para utilizar la función printf en nuestros programas debemos incluir la directiva:

#include

Si sólo queremos imprimir una cadena basta con escribir la siguiente línea de código.

printf( "Cadena" );

Como resultado muestra en pantalla:

Cadena

Lo que pongamos entre las comillas es lo que vamos a sacar por pantalla.

Si volvemos a usar otro printf, por ejemplo:

#include

void main()

{

printf( "Cadena" );

printf( "Segunda" );

}

Obtendremos:

CadenaSegunda

Este ejemplo nos muestra cómo funciona printf. Para escribir en la pantalla se usa un cursor que no vemos. Cuando escribimos algo el cursor va al final del texto. Cuando el texto llega al final de la fila, lo siguiente que pongamos irá a la fila siguiente. Si lo que queremos es sacar cada una en una línea deberemos usar " ". Es el indicador de retorno de carro. Lo que hace es saltar el cursor de escritura a la línea siguiente:

#include

void main()

{

printf( "Cadena " );

printf( "Segunda" );

}

y tendremos:

Cadena

Segunda

También podemos poner más de una cadena dentro del printf:

printf( "Primera cadena" "Segunda cadena" );

Lo que no podemos hacer es meter cosas entre las cadenas:

printf( "Primera cadena" texto en medio "Segunda cadena" );

esto no es válido. Cuando el compilador intenta interpretar esta sentencia se encuentra "Primera cadena" y luego texto en medio, no sabe qué hacer con ello y da un error.

Pero ¿qué pasa si queremos imprimir el símbolo " en pantalla? Por ejemplo imaginemos que queremos escribir:

Esto es "extraño"

Si para ello hacemos:

printf( "Esto es "extraño"" );

obtendremos unos cuantos errores. El problema es que el símbolo " se usa para indicar al compilador el comienzo o el final de una cadena. Así que en realidad le estaríamos dando la cadena "Esto es", luego extraño y luego otra cadena vacía "". Pues resulta que printf no admite esto y de nuevo tenemos errores.

La solución es usar ". Veamos:

printf( "Esto es "extraño"" );

Esta vez todo irá como la seda. Como vemos la contrabarra '' sirve para indicarle al compilador que escriba caracteres que de otra forma no podríamos.

Esta contrabarra se usa en C para indicar al compilador que queremos meter símbolos especiales. Pero ¿Y si lo que queremos es usar '' como un carácter normal y poner por ejemplo HolaAdiós? Pues muy fácil, volvemos a usar '':

printf( "HolaAdiós" );

y esta doble '' indica a C que lo que queremos es mostrar una ''.

Operaciones de entrada

Algo muy usual en un programa es esperar que el usuario introduzca datos por el teclado. Para ello contamos con varias posibilidades: Usar las funciones de la biblioteca estándar, crear nuestras propias interrupciones de teclado (MS-Dos) o usar funciones de alguna biblioteca diferente (como por ejemplo Allegro).

En este trabajo topare solo la primera opción, usando las funciones de la biblioteca estándar. Pero veamos por encima las otras posibilidades.

Las funciones estándar están bien para un programa sencillito. Pero cuando queremos hacer juegos por ejemplo, no suelen ser suficiente. Demasiado lentas o no nos dan todas las posibilidades que buscamos, como comprobar si hay varias teclas pulsadas. Para solucionar esto tenemos dos posibilidades:

La más complicada es crear nuestras propias interrupciones de teclado. ¿Qué es una interrupción de teclado? Es un pequeño programa en memoria que se ejecuta continuamente y comprueba el estado del teclado. Podemos crear uno nuestro y hacer que el ordenador use el que hemos creado en vez del suyo.

Otra posibilidad más sencilla es usar una biblioteca que tenga funciones para controlar el teclado. Por ejemplo si usamos la biblioteca Allegro, ella misma hace todo el trabajo y nosotros no tenemos más que recoger sus frutos con un par de sencillas instrucciones. Esto soluciona mucho el trabajo y nos libra de tener que aprender cómo funcionan los aspectos más oscuros del control del teclado.

Vamos ahora con las funciones de la biblioteca estándar antes mencionada.

Scanf

El uso de scanf es muy similar al de printf con una diferencia, nos da la posibilidad de que el usuario introduzca datos en vez de mostrarlos. No nos permite mostrar texto en la pantalla, por eso si queremos mostrar un mensaje usamos un printf delante. Un ejemplo:

#include

void main()

{

int num;

printf( "Introduce un número " );

scanf( "%i", &num );

printf( "Has tecleado el número %i ", num );

}

Primero vamos a ver unas nota de estética, para hacer los programas un poco más elegantes. Parece una tontería, pero los pequeños detalles hacen que un programa gane mucho. El scanf no mueve el cursor de su posición actual, así que en nuestro ejemplo queda:

Introduce un número _ /* La barra horizontal indica dónde esta el cursor */

Esto es porque en el printf no hemos puesto al final el símbolo de salto de línea ' '. Además hemos dejado un espacio al final de Introduce un número: para que así cuando tecleemos el número no salga pegado al mensaje. Si no hubiésemos dejado el espacio quedaría así al introducir el número 120 (es un ejemplo):

Introduce un número120

Veamos cómo funciona el scanf. Lo primero nos fijamos que hay una cadena entre comillas. Esta es similar a la de printf, nos sirve para indicarle al compilador qué tipo de datos estamos pidiendo. Como en este caso es un integer usamos %i. Después de la coma tenemos la variable donde almacenamos el dato, en este caso 'num'.

Fíjate que en el scanf la variable 'num' lleva delante el símbolo &, este es muy importante, sirve para indicar al compilador cual es la dirección (o posición en la memoria) de la variable.

Podemos preguntar por más de una variable a la vez en un sólo scanf, hay que poner un %i por cada variable:

#include

void main()

{

int a, b, c;

printf( "Introduce tres números: " );

scanf( "%i %i %i", &a, &b, &c );

printf( "Has tecleado los números %i %i %i ", a, b, c );

}

De esta forma cuando el usuario ejecuta el programa debe introducir los tres datos separados por un espacio.

También podemos pedir en un mismo scanf variables de distinto tipo:

#include

void main()

{

int a;

float b;

printf( "Introduce dos números: " );

scanf( "%i %f", &a, &b );

printf( "Has tecleado los números %i %f ", a, b );

}

A cada modificador (%i, %f) le debe corresponder una variable de su mismo tipo. Es decir, al poner un %i el compilador espera que su variable correspondiente sea de tipo int. Si ponemos %f espera una variable tipo float.


Getch y getche

Si lo que queremos es que el usuario introduzca un carácter por el teclado usamos las funciones getch y getche. Estas esperan a que el usuario introduzca un carácter por el teclado. La diferencia entre getche y getch es que la primera saca por pantalla la tecla que hemos pulsado y la segunda no (la e del final se refiere a echo=eco). Ejemplos:

#include

void main()

{

char letra;

printf( "Introduce una letra: " );

fflush( stdout );

letra = getche();

printf( " Has introducido la letra: %c", letra );

}

Resultado:

Introduce una letra: a

Has introducido la letra: a

¿Qué es el fflush( stdout )?. Pues bien, cuando usamos la función printf, no escribimos directamente en la pantalla, sino en una memoria intermedia (lo que llaman un bufer). Cuando este bufer se llena o cuando metemos un carácter ' ' es cuando se envía el texto a la pantalla. En este ejemplo yo quería que apareciera el mensaje Introduce una letra: y el cursor se quedara justo después, es decir, sin usar ' '. Si se hace esto, en algunos compiladores el mensaje no se muestra en pantalla hasta que se pulsa una tecla (probar). Y la función fflush( stdout ) lo que hace es enviar a la pantalla lo que hay en ese bufer.

Y ahora un ejemplo con getch:

#include

void main()

{

char letra;

printf( "Introduce una letra: " );

fflush( stdout );

letra = getch();

printf(" has introducido la letra :%c", letra );

}

Resultado:

Introduce una letra:

Has introducido la letra: a

Como vemos la única diferencia es que en el primer ejemplo se muestra en pantalla lo que escribimos y en el segundo no.

ANEXOS


Usos de printf y scanf

printf("Mensaje");
printf("Mensaje %d",Variable);
printf("Mensaje %d",Variable:2:3);
cprintf("Mensaje");
Escribe Mensaje en la pantalla
Escribe Mensaje y el valor de la Variable en pantalla
Escribe Mensaje y el valor de la Variable con 2 enteros y 3 decimales
Escribe Mensaje en color especificado
scanf("%d",&Variable);
scanf("%d %f",&Variable1,&Variable2);
Asigna valor entero a Variable
Asigna valor entero a Variable1 y valor real a Variable2

 

 

 

 

 

 

 

Nota

C++ ofrece una alternativa a las llamadas de funcion printf y scanf para manejar la entrada/salida de los tipos y cadenas de datos estandar. Así en lugar de printf usamos el flujo estandar de salida cout y el operador << ("colocar en"); y en lugar de scanf usamos el flujo de entrada estandar cin y el operador >>("obtener de"). Estos operadores de inserción y extracción de flujo, a diferencia de printf y scanf, no requieren de cadenas de formato y de formato y de especificadotes de conversión para indicar los tipos de datos que son extraidos o introducidos.

Las siguientes funciones nos resultan indispensable para poder brindar una mejor presentación de los datos en pantalla.

Gotoxy: Posicionando el cursor (DOS)

Esta función sólo está disponible en compiladores de C que dispongan de la biblioteca

Hemos visto que cuando usamos printf se escribe en la posición actual del cursor y se mueve el cursor al final de la cadena que hemos escrito.

Vale, pero ¿qué pasa cuando queremos escribir en una posición determinada de la pantalla? La solución está en la función gotoxy. Supongamos que queremos escribir 'Hola' en la fila 10, columna 20 de la pantalla:

#include

#include

void main()

{

gotoxy( 20, 10 );

printf( "Hola" );

}

(Nota: para usar gotoxy hay que incluir la biblioteca conio.h).

Fíjate que primero se pone la columna (x) y luego la fila (y). La esquina superior izquierda es la posición (1, 1).

Clrscr: Borrar la pantalla (DOS)

Ahora ya sólo nos falta saber cómo se borra la pantalla. Pues es tan fácil como usar:

clrscr()

(clear screen, borrar pantalla).

Esta función nó solo borra la pantalla, sino que además sitúa el cursor en la posición (1, 1), en la esquina superior izquierda.

#include

#include

void main()

{

clrscr();

printf( "Hola" );

}

Este método sólo vale para compiladores que incluyan el fichero stdio.h.

BIBLIOGRAFÍA

Como programar en C/C++. H.M. Deitel / P.J. Deitel. Prentice may, 2da ed. 1995.

Programación orientada a objetos con C++. Fco. Javier Ceballos. Ed. ra-ma 1993.

Programacion en C++. Enrique hernandez / Jose hernandez. Ed. Paraninfo 1993.

EN INTERNET

www.lawebdelprogramador.com

http://www.publispain.com/supertutoriales/programacion

Autores: Palate Gaibor y Alex Fernando

Categories: Programacion Tags: