logorincon.jpg (12356 bytes)

Recuerda que esta pagina la hacemos todos juntos. Envíanos Tus trabajos ! ! !

int printf(char *formato, lista_arg)

Descripción

La función printf() despliega en pantalla tanto cadenas constantes(mensajes) como variables deacuerdo al contenido de formato.

Con formato, se especifica la cadena constante y/o el tipo de variables quedesplegará en pantalla. Todo esto siempre vá entre comillas("") . Por ejemplo:

printf("Hola, como estas?");

printf("%s",nombre);

Con la primera instrucción, mandamos un mensaje a pantalla. En estecaso, no es necesario especificar algún formato ya que sólose despliega el mensaje. Es en el segundo ejemplo de printf() donde utilizamos formato para determinar el tipo de varaibles que van a ser desplegadas. En el caso anterior, determinamos que se va a escribir el contenido de nombre que es una variable de tipo cadena.

Veamos el formato que puede utilizarse para definir el contenido de cualquier varibale:

Código Formato

%c Un sólo caracter

%d Decimal

%i Decimal

%e Notación científica

%f Coma flotante

%g utiliza el más corto de %e o %f.

%o Octal

%s Cadena de caracteres

%u Decimal sin signo

%x Hexadecimal

%% Imprimir el símbolo %

%p Presentar un puntero

%n El argumento asociado será un puntero entero en el que se sitúa el

número de caracteres escritos hasta entonces.

También podemos desplegar en el monitor mensajes como el contenido de variables con el mismo comando printf() como en el ejemplo siguiente:

printf("Hola %s soy %s, tengo %i años."huesped,nombre,edad);

Si

huesped="visitante",

nombre="el supervisor"

edad=35

el resultado será el siguiente mensaje en pantalla:

<Hola visitante soy el supervisor, tengo 35 años>.

Se deben especificar en el mismo orden tanto el contenido de las variables a imprimir dentro de formato como las variables en sí.

La función printf() devuelve el número de caracteres realmente presentados en pantalla. Un valor negativo significa que se ha producido un error.

Se pueden escribir enteros entre el signo de porcentaje y el caracter que especifica el tipo de dato a presentar. Esto sirve para determinar la longitud del campo, el número de decimales y un indicador de justificación ala izquierda.

int scanf(char *formato,lista_arg)

Descripción

Esta función realiza la operación contraria a printf()es decir, leé datos de

cualquier tipo desde el teclado hasta que sepulse un retorno de carro(<ENTER>).

Sus parámetros también son similares a printf() ya que en formato se especifica el o los tipos de variables que se van a leer miemtras que en lista_arg se escriben las variables. Por ejemplo:

scanf("%d",&edad);

scanf("%i%c",&edad,&sexo);

La sección de formato corresponde a "%d" donde se indica que se va a leer un entero decimal; &edad corresponde a lista_arg e indica que los caracteres leídos serán almacenados en la dirección que ocupa la variable edad.

La diferencia entre la sintaxis de scanf() y printf() consiste en que en la lista de argumentos, scanf() necesita que se le especifique el lugar donde vá a almacenar los datos es en la direcciónde la variable( &edad). La única excepción es cuando se vá a leer una cadena de caracteres ya que este tipo de variables indican una dirección por si mismas. Ejemplo:

char nombre[10];

scanf("%s", nombre);

A continuación se presentan los códigos de formato de scanf().

Código Interpretación

%c Leer un único caracter

%d Leer un entero decimal

%i Leer un entero decimal

%e Leer un número en comaflotante

%f Leer un número en comaflotante

%h Leer un entero corto

%o Leer un número octal

%s Leer una cadena de caracteres

%x Leer un número hexadecimal

%p Leer un puntero

%n Recibir un valor entero igualal número de caracteres leídos hasta

entonces.

Un espacio en blanco en la cadena de control dá lugar a que scanf() salte uno o más espacios en blanco en el flujo de entrada.Un caracter blanco es un espacio, un tabulador o caracter de nueva línea. Esencialmente, un caracter espacio en blanco en una cadena de control dá lugar a que scanf() lea, pero no guarde cualquier número (incluido0) de espacios en blanco hasta el primer caracter no blanco.

Un caracter que no sea espacio en blanco hace que scanf() lea y elimine el caracter asociado. Por ejemplo, %d,%d dá lugar a quescanf() lea primero un entero, entonces lea y descarte la coma, y finalmente lea otro número. Si el caracter especificado no se encuentra,scanf() termina.

Un * situado después del % y antes del código de formato leé los datos de tipo especificado pero elimina su asignación. Así, dada la entrada 10/20, el código

scanf("%d*%d",&x,&y);

asigna el valor 10 a x, descarta el signo de división, y dá a y el valor 20. Las órdenes de formato pueden especificar un modificador de máxima longitud de campo. Situado entre el % y el código de orden de formato, es un entero que limita la cantidad de caracteres a leer paracualquier campo. Por ejemplo, si se quieren leer sólo 15 caracteres en nombre se escribiría así:

scanf("%15s",direccion);

Si el flujo de entrada fuera mayor de 15 caracteres, entonces una posterior llamada de entrada debería comenzar donde esta llamada la dejó.Por ejemplo, si

Av._Corregidora_#_500

se ha introducido como respuesta al scanf() anterior, únicamente los primeros 15 caracteres (hasta la a de corregidora) serían situados en direccion debido al especificador de tamaño máximo. Cuando se hiciera otra llamada a scanf() tal como

scanf("%s",cadena);

_#_500 se asignará a cadena.

Cuando una cadena está siendo leída, los espacios, los tabuladoresy los saltos de línea son utilizados como separadores de campos; sin embargo, cuando se leé un único caracter, estos son leídos como cualquier otro caracter.

 

Switch y Case

Cuando se anidan muchos ifs, el código puede volverse difícil de entender aún para el autor. Para darle mayor transparencia, enC utilizamos la sentencia de decisión múltiple switch.

Switch es utilizada cuando una variable es sucesivamente comparadaciónuna lista de enteros o de caracteres. Cuando se encuentra la correspondencia,se ejecuta una sentencia o el bloque de sentencias.

La forma general de una sentencia switch es

switch(expresión)

{

case constante1:

secuencia desentencias;

break;

case constante2:

secuencia desentencias;

break;

case constente3:

secuencia desentencias;

break;

.

.

.

default:

secuencia desentencias;

}

switch es el indicador del tipo de sentencia de control.

{ } delimitan lo que abarca la sentencia switch.

case especifica donde comienza la evaluación de la variablecon la constante que sucede al case.

En caso de que encontremos el valor de la variable en un case se ejecutaránla secuencia de sentencias relacionadas con este hasta encontrar un break.

Las sentencias asociadas a Default seran ejecutadas si no se encuentraninguna correspondencia con el valor de la variable que estamos evaluando en alguno de los case.El final de estas sentencias las determina la del switch. Esta sentencia es opcional (se puede o no incluir). Si no está presente, no se ejecutará ninguna sentencia en caso de que ningún case corresponda al valor que estamos buscando.

La diferencia entre switch e if es que la primera sólo puede comprobarla igualdad, mientras que if puede evaluar expresiones relacionales o lógicas.

No puede haber dos constantes case que tengan los mismos valores sólo en el caso de que la sentencia switch este anidada (que haya una dentro de otra).

Ejemplo de switch y case:

#include <stdio.h>

void main()

{

int num;

printf("Escoge una matrícula:\n");

puts("1----- 717758");

puts("2----- 717759");

puts("3----- 717760");

puts("4----- 717761");

scanf("%d", &num);

printf(\n"Escogiste la mtarícula");

switch(num)

{

case 1:

printf("717758");

break;

case 2:

printf("717759");

break;

case 3:

printf("717760");

break;

case 4:

printf("717761");

break;

}

}

 

Arreglos

Definición

Un arreglo es un conjunto de elementos del mismo tipo agrupados en una sola variable. También se les conoce con el nombre de arreglos. Para ingresar a un elemento en particular, utilizamos un índice. Existen arreglos unidimensionales, bidimensionales y tridimensionales.

Su uso más común es en la implementación de cadenas de caracteres. En C no existen variables de tipo cadena por lo cual se utiliza un arreglo de caracteres.

Físicamente, un arreglo es un conjunto de localidades de memoria contiguas donde la dirección más baja corresponde al primer elemento y la dirección más alta al último. En un arreglo de n elementos, éstos ocuparan desde la casilla 0 hasta la n-1. Por si mismo, el nombre del arreglo apunta a la dirección del primer elemento del arreglo.

arreglos Unidimensionales

La forma general para definir un arreglo de sólo una dimensión es la siguiente:

tipo_de_dato nombre_variable[tamaño]

tipo_de_dato se refiere al tipo de dato de cada elemento del arreglo y tamaño es la cantidad de elementos agrupados en la misma variable.

arreglos multidimensionales

En C, podemos crear arreglos de dos o más dimensiones el límite de dimensiones, viene dado por el compilador. Su forma general de declaración es

tipo_dato variable [long ind 1][longindice 2]...[long indice N]

donde tipo_dato es el tipo de dato de los elementos del arreglo y longind 1, long ind 2...long ind N es la longitud de cada dimensión del arreglo. Este tipo de arreglos no se utiliza muy frecuentemente debido a el gran espacio en memoria que ocupan. Otra desventaja es que el acceso a un arreglo multidimensional dura más tiempo que el requerido por uno del tipo unidimensional.

ejemplos:

int arreglo1[25]

char arreglo2[3][3]

char arreglo3[]

Click Here!