jueves, 25 de noviembre de 2010

VECTORES Y MATRICES

ENTRADAS Y SALIDAS


En c++ hay varias formas de ingresar y sacar un dato,esto depende en gran parte de las librerías que utilizaremos y la IDE que estemos trabajando, podemos ver algunas librerías como: iostream.h y sodio.h.



Se podría decir que esta libreria es una de las mas usadas en c++, que es la estandar, las operacionesde entrada y salida no forman parte del conjunto de sentencias de C++, sino que pertenecen al conjunto de funcionesy clases de la biblioteca estándar de C++.contienen 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.
Los objetos de flujo que vienen predefinidos son:
1.cin, entrada estándar (teclado);
2.cout, la salida estándar (pantalla);
3.cerr y clog 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 << variable1; 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 que indica a la derecha).
La sintaxis sería la siguiente:

cin>>variable1 >>...>>variable n;
Un ejemplo basico de código es el siguiente:
#include

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

}

Mostrara por pantalla la frase "digite 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 "\n". 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\n" );
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\"" );

Operaciones de entrada

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\n", num );
}


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 '\n'. 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\n", 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\n", 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
Ejemplos:

#include
void main()
{
char letra;
printf( "Introduce una letra: " );
fflush( stdout );
letra = getche();
printf( "\nHas 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 '\n' 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 '\n'. 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("\n 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.

Podemos decir que en los casos de entrada y salida que se quieran aplicar, depende del programador si las quiere utilizar, por otra parte es bueno saber que hay varias formas de ingresar y imprimir un dato, puesto que no se sabe cuando se va a necesitar.

pstd:los ejemplos ya expuestos fueron bajados de internet junto con algunas explicaciones ya dichas.

No hay comentarios:

Publicar un comentario