Академический Документы
Профессиональный Документы
Культура Документы
compensan mediante la inclusin de funciones de librera para realizar todas estas tareas, que
normalmente dependen del sistema operativo.
Originariamente, el manual de referencia del lenguaje para el gran pblico fue el libro de Kernighan y
Ritchie, escrito en 1977. Es un libro que explica y justifica totalmente el desarrollo de aplicaciones en C,
aunque en l se utilizaban construcciones, en la definicin de funciones, que podan provocar confusin
y errores de programacin que no eran detectados por el compilador. Como los tiempos cambian y las
necesidades tambin, en 1983 ANSI establece el comit X3J11 para que desarrolle una definicin
moderna y comprensible del C. El estndar est basado en el manual de referencia original de 1972 y se
desarrolla con el mismo espritu de sus creadores originales. La primera versin de estndar se public
en 1988 y actualmente todos los compiladores utilizan la nueva definicin. Una aportacin muy
importante de ANSI consiste en la definicin de un conjunto de libreras que acompaan al compilador y
de las funciones contenidas en ellas. Muchas de las operaciones comunes con el sistema operativo se
realizan a travs de estas funciones. Una coleccin de ficheros de encabezamiento, headers, en los que
se definen los tipos de datos y funciones incluidas en cada librera. Los programas que utilizan estas
bibliotecas para interactuar con el sistema operativo obtendrn un comportamiento equivalente en otro
sistema.
Tipos de datos
En cualquier lenguaje de programacin es muy importante saber manejar los distintos tipos de datos
que te permite almacenar y trabajar con ellos. Como ya vimos anteriormente las variables almacenan
datos. Pero a la hora de definirlas hay que indicarles que tipo de dato van a almacenar. No es lo
mismo que una variable almacene el numero 5000, a que almacene la letra C. Existen 4
distintos tipos de datos en C, cada uno de los cuales reserva una zona mayor o menor en memoria
(segn sus necesidades), y esta preparada para almacenar un tipo de dato en concreto. En otro
lenguaje como el scriptting las va riables se definen y una vez definidas puedes almacenar cualquier
tipo de dato sin antes hacer alusin a el. Esto no pasa en C ni en la mayora de lenguajes grandes. En
C su potencialidad obliga a ello.
Existen 4 tipos de datos en C:
1) int Almacenan nmeros enteros (sin decimales). Este tipo limita el rango numrico de
32767 a
32767. Este tipo reserva en memoria 16 bits o lo que es lo mismo 2 bytes.
2) char Almacena un carcter o caracteres, en realidad lo que hace es almacenar un numero del
0 al 255 que son los nmeros que identifican a un carcter que corresponde a la tabla ascii.
Este tipo ocupa en memoria 1 byte.
3) float Tipo para definir que una variable almacenara nmeros decimales. Su rango numerico
es de 3,4E-38 a 3,4E38. Su espacio en memoria es de: 4 bytes.
4) double Igual que la anterior pero es capaz de almacenar mayores cadenas numricas.
Rango
de 1,7E-307 a 1,7E308. Su espacio en memoria es de 8 bytes.
Algunos tipos admiten unos prefijos a los cuales se les suelen llamar cualificadores, estos son: short
(corto), long(largo), signed(con signo + o -), unsigned (sin signo).
Estos cualificadores se colocan al principio del tipo y lo cualifican, ejemplos:
Short int identificador : esto definir a una variable de tipo entero y corto.
Unsigned float identificador : esto definir una variable de coma flotante o sea decimal y sin signo.
Identificadores
Los identificadores son las palabras con las que identificamos o llamamos a una variable o constante.
A la hora de dar nombre a una variable, o sea a la hora de identificar una variable debemos de tener
en cuenta unas reglas de nomenclatura, marcadas por el lenguaje de programacin en C.
Reglas de nomenclatura para los identificadores
Los nombres de los identificadores pueden llevar caracteres alfa -numricos. Letras de la A a la Z
excluyendo la que no vale . Y todos los nmeros. Si es obligatorio que el nombre del
identificador empiece por una letra y no un numero u otro signo.
Los identificadores solo aceptan el signo _ (guin bajo-subrayado), por tanto quedan excluidos otros
como
un dato pero esto solo podr ser del ti po con el que se a definido la variable. Cuando metemos en
una variable un dato se dice que la estamos declarando. Aunque el concepto y la diferencia entre
definir y declarar no es muy claro.
Para mi, definir una variable es reservar el espacio en memoria y decir de que tipo va a ser, y cuando
le
metemos un dato ya estamos declarndola. Mas adelante esta definicin se emplea a la inversa para
las funciones.
Vamos a introducir valores a las variables definidas en el ejemplo anterior.
1) suma=2;
2) resultado=10.5;
3) letra=A;
1: Aqu estamos introduciendo el numero 2 dentro de la variable suma. Con lo que suma pasara a valir
2.
2: En el segundo caso, damos un numero decimal que introducimos dentro de la variable de tipo
decimal. As pues, la variable resultado a hora vale 10.5.
3: Por ultimo la variable de carcter letra le asignamos la letra a. Desde entonces siempre que
sea nombrada o referida por su identificativo nos devolver la letra a. Podramos declararla de otra
forma obteniendo el mismo resultado, tal y como es: letra = 65; De esta otra forma obtendramos
el mismo resultado pues que coge los nmeros identiicativos a caracteres de la tabla ASCII.
%d = decimal
%e,f,g = real
%h = entero corto
%i = entero que puede ser octal decimal o hexadecimal.
%o = entero octal
%u = estero decimal sin signo
%x = entero hexadecimal
%s = cadena de caracteres acabada por un espacio.
%[...] = una cadena de caracteres que puede incluir espacios.
Ahora hagamos otro programa entero de ejemplo.
#include <stdio.h>
main () {
int num1,num2=0;
char txt;
clrscr();
printf(\nEste programilla mostrara el valor de 3 variables);
printf(\n); num1=5;
txt=B;
printf(\nEl valor de la variable num1 es: %d,num1);
printf(\nEl valor de la variable num2 es: %d,num2);
printf(\nEl valor de la variable txt es: %c,txt);
printf(\n);
printf(\nFin del programa);
printf(\n);
}
Que pasara si definimos una variable y le asignamos un valor mayor del rango numrico que nos
permite el tipo de su asignacin?
Lo que pasara en tal cosa seras que si por ejemplo definimos una variable de tipo entero y supera el
rango numrico de 32767 pasara al siguiente numero y este seria el 32767. Puesto que no existe
un numero mayor en el rango de ese tipo de definicin de variables enteras. El compilador nos dira
warnig y se producira un overflow.
Las variables pueden ser segn su funcionamiento o dato almacenado
Las variables por contador: Son un tipo de variables muy usadas en los bucles, rizos o procesos de
repeticin. Estas tipo de variables tienen un valor inicial y entran en un bucle y en funcin de
una condicin van incrementando o decrementando su valor inicial hasta la salida del bucle.
Las variables por acumulador: Este otro tipo de variables, lo que hacen es ir acumulando los
valores, son las mas usuales.
Las variables pueden ser segn donde estn definidas pueden ser
Variables globales: Este tipo de variables devuelven su valor en cualquier parte del
procedimiento, afectan a todas las funciones que se encuentran en el programa.
Variables locales: Estas variables solo devuelven su valor en los procedimientos donde estn
definidas. Lo que quiere decir que estn restringidas al procedimiento. Si se definen dentro de la
funcin main solo tendrn vida dentro de esa funcin y no en funciones externas.
Constantes
Constantes : Elementos de almacenamiento de datos o direcciones de memoria, que no varan de
ninguna forma durante el proceso del programa. Con lo que su valor ser el mismo tanto al comienzo
como al final de este.
Las constantes no solo funcionan en cualquier parte del procedimiento como las variables globales
sino que tambin devuelven su valor almacenado en cualquier parte del cdigo o programa.
Existen 4 tipos distintos de constantes
C.enteras.
C.de cma flotante.
C.de carcter.
C.de cadena de caracteres.
Las constantes enteras: Este tipo de constantes pueden estar escritas en 3 tipos de sistemas
numricos, como son, el decimal, octal, y hexadecimal.
Si la constante empieza por cero esta seria una constante entera escrita en octal (solo
llevara del 0 al 7).
Si la constante empieza por 0 o x ser una constante entera escrita en hexadecimal (0 > 9 >F).
En caso de no cumplirse estas condiciones anteriores estaramos ante una constante entera
decimal.
Las constantes de coma flotante o decimal
Distinguen la parte decimal de la entera por un punto, para el aadido de exponentes usa la letra E.
Las constantes de carcter
Se representa el valor de la constante encerrado entre apostrofos.
Las constantes de cadena
Almacena una cadena de caracteres que esta encerrada entre comillas.
Tambin podemos especificar cualificadores en las constantes con lo cual tendramos
Si la constante acaba en UL estaremos ante una constante larga y sin signo.
Si la constante acaba solo en U, estaremos ante una constante sin signo.
Si la constante acaba en L, estaremos ante una constante larga.
Como definir una constante?
Las constantes afectan a todas las funciones que se encuentran dentro del cualquier parte o funcin
de nuestro programa.
Por ello se definen encima del main y debajo de los include. Las constantes se definen y se declaran
al mismo tiempo. Se les da ya el valor. Esto se hace con una directriz #define a continuacin va el
identificador de esa constante o lo que es lo mismo su nombre, y por ultimo su valor.
Ejemplo:
#inclu de <stdio.h>
#define PI 3.1416
main () {
printf( "\nEl numero PI vale: %f, PI);
}
Observemos en la segunda lnea de nuestro cdigo-programa. Ponemos la directriz #define que
definir constantes, a continuacin su ID (identificador o nombre), un ultimo es pacio y al final el
valor de esa constante.
Funciones
Una funcin es un conjunto de instrucciones (posiblemente acompaadas de algunos datos temporales)
que llevan a cabo una subtarea dentro de un programa ms complejo.
Por ejemplo, dentro de un programa que convierte una lista de temperaturas expresadas en grados
Fahrenheit, a grados Celsius , podramos definir una funcin que haga una de las conversiones, y la
emplearamos varias veces para lograr completar nuestra tarea.
Tenemos entonces que las funciones dentro de un programa cumplen con subtareas, para las
cuales es necesario suministrarles algunos datos de entrada, y luego de completadas, deberemos
recibir como resultado algunos datos de salida. Para el caso de una funcin que calcula el rea de un
crculo, la entrada que requiere la funcin sera el radio del crculo, y la salida que arrojara luego del
cmputo sera el valor para el rea. Este hecho se ilustra en el diagrama que se muestra abajo, en el que
podemos ver la tarea de transformacin de datos que cumple una funcin: La alimentamos con una
entrada y recibimos una salida en respuesta.
Por otra parte, para especificar el proceso de transformacin que debe llevar a cabo la funcin, es
necesario emplear las instrucciones del lenguaje de programacin. Es necesario respetar algunas pautas,
tanto para la especificacin de los parmetros de entrada, como del valor de retorno, pero la estructura
general es la misma.
Sintaxis de la definicin de Funciones
La sintaxis general de definicin de las funciones es la siguiente:
<tipo_retorno> <nombre_funcin> ( <lista_parmetros> ) {
<declaracin_de_variables_locales> ;
<cuerpo_de_la_funcin> ;
return (<valor_retorno>) ;
}
<tipo_retorno> es el tipo del valor que devolver la funcin. Es posible definir funciones que no
devuelven ningn valor (para por ejemplo definir funciones que solo imprimen valores o ciertos
mensajes en pantalla, para los que no es necesario que devuelva valor alguno). Para definirlos o
declararlos, se utiliza como tipo de retorno la palabra reservada void. A estas funciones se las conoce
tambin como procedimientos, porque no devuelven ningn valor.
<nombre_funcin> debe ser sustituido por un identificador que corresponde al nombre con que se
invocar la funcin posteriormente (o llamada de la funcin). Debe ser un identificador vlido. El valor
de retorno de la funcin es asociado al nombre de la funcin.
<lista_parmetros> corresponde con una lista de variables denotadas por identificadores asociados a
un tipo, cada uno representa un parmetro de entrada. La lista de parmetros puede ser vaca pero los
parntesis deben aparecer.
La <declaracin_de_variables_locales> se refiere a variables locales que podrn ser utilizadas
nicamente dentro de la funcin. Fuera de ella, no sern reconocidas.
El <cuerpo_de_la_funcin> es una lista de instrucciones, separadas por punto y coma.
<valor_retorno>, debe ser una expresin (constante, aritmtica, lgica del tipo que se especific como
<tipo_retorno>, y establece la expresin que retornar la funcin una vez que haya terminado.
Ejemplos:
Expresiones
Se conocen como expresiones los valores que son manipulados dentro de un programa. Estos
valores pueden surgir como resultado de efectuar operaciones, como valores de retorno de las
funciones, al extraerlos de las variables, o simplemente pueden ser constantes expresadas
directamente dentro del cdigo del programa.
Las expresiones, al igual que el resto de las entidades dentro de un programa, tienen asociado un tipo de
datos. Este tipo indicar la forma en que podremos manipular la expresin, por ejemplo, en cules
variables podremos almacenar su valor.
Existe un conjunto de operadores para cada tipo de datos, de manera que siempre es posible construir
una nueva expresin a partir de una o varias ya existentes. Tenemos, por ejemplo, operadores
aritmticos para construir expresiones numricas, y operadores lgicos para construir expresiones
booleanas.
Expresiones Aritmticas
Las expresiones aritmticas son valores numricos, de tipos enteros o reales. Pueden ser constantes,
resultados de operaciones aritmticas como sumas o multiplicaciones, contenido de variables numricas,
o combinaciones de las anteriores unidas mediante operadores aritmticos.
Operadores binarios:
+ Suma
- Resta
* Multiplicacin
/ Divisin
% Mdulo (slo sobre tipo int)
Operadores unitarios:
- Signo negativo
++ Incremento
-- Decremento
Precedencia:
++ -- -(unitario)
*/%
+Asociatividad:
Por la izquierda
Expresiones
Los operandos pueden ser variables o constantes numricas. Sin embargo, los operadores unarios ++ y -fueron pensados para aplicarse a variables y el operador unario - a constantes.
operando operador-binario operando
operador-unario operando
Caso particular:
-2 / x
x++
++x
2-1+3
15 % 6
-x
le cambia el signo al contenido de x
3*4%5
igual precedencia, pero es asociativo por izquierda (Retorna: 2)
3 * (4 % 5 ) los parntesis alteran la precedencia (Retorna: 12)
1 + 15 % 6
% tiene precedencia mayor (Retorna: 4)
Expresiones Lgicas o Booleanas
A diferencia de otros lenguajes de programacin, C no cuenta con un tipo de datos que permita
manipular valores booleanos, o de verdad. Este tipo de valores se emplean para dirigir al programa por
un determinado flujo de ejecucin dependiendo de la evaluacin a verdadero o falso de una expresin
lgica.
En C, las instrucciones que dependen de valores lgicos dependen en realidad de un valor entero que se
interpreta como falso cuando es cero, y como verdadero en caso contrario (es decir, cuando es distinto
de cero).
Operadores binarios:
&& AND (hace la conjuncin lgica de dos valores booleanos -enteros-).
|| OR (hace la disjuncin lgica de dos valores booleanos -enteros-).
Operadores unitarios:
! NOT lgico
Operadores relacionales o de comparacin:
Este tipo de operadores permite comparar el valor de dos expresiones de cualquier tipo, devolviendo
como resultado un valor booleano (entero).
== igual
!= distinto
<
menor
mayor
Verdadero siempre.
1 || x
Falso siempre.
0 && x
5 == 6
retorna 0, osea Falso.
4 >= 2
Retorna 1, osea Verdad.
((4 % 2 == 0) || (4 % 3 == 0) && 0
Instrucciones
Las instrucciones son las rdenes que reconoce un computador mientras se encuentra ejecutando un
programa. De hecho, un programa es una secuencia de instrucciones que al ejecutarse resuelve algn
problema para el usuario.
Los programas estn escritos en un lenguaje de programacin, el cual define el conjunto de instrucciones
vlidas que podemos utilizar al escribirlos.
En nuestro caso emplearemos el lenguaje de programacin C, por lo que ser necesario que estudiemos
las instrucciones que componen dicho lenguaje. A lo largo del curso vamos a ir introduciendo estas
instrucciones de manera paulatina, hasta llegar a cubrir un subconjunto bastante importante del lenguaje.
Las instrucciones disponibles pueden clasificarse dentro de alguna de las siguientes categoras:
Secuenciales
o Ejemplos: declaraciones de variables, asignaciones, llamado a funciones, salida (printf) y
entrada (scanf)
Iteracin
o Ejemplos: for, while, do-while
Sintaxis
La sintaxis de las instrucciones en C vara bastante dependiendo de cada instruccin. En general, toda
instruccin debe ir terminada por un punto y coma, de la siguiente manera:
<instruccion> ;
Existe instrucciones complejas que pueden abarcar varias lneas, y que pueden contener otras
instrucciones dentro de ellas en forma subordinada.
Adems, las instrucciones se pueden agrupar en bloques, delimitados por corchetes: { }, de la siguiente
manera:
{
<instruccion1> ;
<instruccion2> ;
...
<instruccionN> ;
}
Declaracin de Variables y Asignacin
Las variables permiten representar los datos que se estn manipulando dentro de un programa. Como se
mencion anteriormente, todas las variables tienen un tipo de datos asociado, el cual determina la forma
de almacenar e interpretar los datos en las variables.
Declaracin de Variables
Para poder utilizar una variable es necesario declararla previamente dentro de algn mbito
(local, global, static). Esta declaracin debe incluir el tipo y el identificador con que se har referencia a
la nueva variable. Es posible introducir varias variables del mismo tipo dentro de la misma declaracin.
La sintaxis general de una declaracin de variables es la siguiente:
<tipo1> <lista_de_variables> ;
<tipo2> <lista_de_variables> ;
...
<tipoN> <lista_de_variables> ;
Las listas de variables estn formadas por una serie de identificadores vlidos, separados por comas, de
la siguiente manera:
<identificador1>, <identificador2>, ..., <identificadorM>
La declaracin de variables puede aparecer en el nivel ms alto del programa (fuera de toda funcin), en
cuyo caso el mbito de las variables ah declaradas lo ser el programa en su totalidad, incluyendo todas
las funciones. A este tipo de variables se les conoce como globales.
Las declaraciones que son internas a las funciones provocan que el mbito en donde son reconocidas las
variables se limite a la funcin en que son declaradas. A estas se las conoce como locales.
La redefinicin, dentro de una funcin, de una variable previamente definida en el nivel exterior,
provoca que la definicin anterior se oculte durante la ejecucin de la funcin, por lo que la
variable ah declarada no podr ser referenciada.
En todo caso, para poder referenciar una variable global dentro de una funcin, la declaracin debe
aparecer anterior a la definicin de la funcin.
Una caracterstica que resulta a menudo de mucha utilidad, es la posibilidad de dar un valor inicial a las
variables en el momento de su declaracin. Esto se logra de la siguiente manera:
<tipo> <identificador> = <valor_inicial> ;
Es importante recordar que la existencia de una variable est limitada a la existencia de la funcin en
que fue declarada. Esto quiere decir que los valores almacenados en una variable no perduran para
posteriores llamados a la funcin en que est declarada. Sin embargo, es posible hacer que estos valores
sean permanentes y que se mantengan intactos a lo largo de la ejecucin del programa. Para esto, es
necesario declarar las variables como estticas, de la siguiente manera:
static <tipo> <identificador> ;
Las variables definidas dentro de una funcin con la caracterstica static se comportan, en cuanto a la
perdurabilidad de los valores que se almacenan en ellas, de la misma manera que las variables globales.
Es decir, estas variables se crean una nica vez y los valores guardados permanecen durante toda la
ejecucin del programa. Sin embargo, su alcance es limitado y pueden ser accesadas nicamente desde
la funcin en que fueron declaradas.
Ejemplos
int acumulado=0;
o Se declara la variable acumulado, de tipo int, y se inicializa con el valor 0.
o Se declara la variable inters, de tipo float, y con la caracterstica de esttica, por lo que
su valor perdurar entre distintos llamados a la funcin en que est siendo declarada.
Ejemplo de un programa que utiliza variables globales, locales y static que muestra la vida til de las
variables..
Operador de Asignacin
El operador de asignacin ( = ) permite almacenar datos en las variables. Es un operador binario, que
requiere que su primer operando (el del lado izquierdo) sea una variable. El segundo operando (el del
lado derecho) puede ser otra variable, un valor constante, o una expresin en general. La sintaxis general
de este operador es la siguiente:
<variable> = <expresion> ;
En caso de que el valor_asignado sea una constante, el resultado de esta operacin es que el valor
expresado se almacenar en la variable especificada al lado izquierdo.
Si el valor_asignado es otra variable, se har una copia del valor almacenado en la segunda variable y se
almacenar en la variable del lado izquierdo. Si se trata de una expresin, sta se evaluar previamente y
su resultado se almacenar en la variable indicada.
En todo caso, es necesario tener en cuenta algunas consideraciones sobre los tipos de las variables y de
los valores que se estn asignando. Ms adelante se tratarn los aspectos relativos a la conversin de
tipos.
Ejemplos
indice = 0;
o Se almacenar el valor 0 en la variable ndice
suma = a+b;
o Se obtendr la suma de las variables a y b, y el resultado se almacenar en la
variable suma
NuevaX = ViejaX;
o El valor de la variable ViejaX se copiar a la variable NuevaX
j = (i = 9)
o Asigna el valor de 9 a las variables i y j
Ejemplo de ejecucin
Ejemplo de ejecucin
resulta ser el caso ms simple de una conversin de tipos, pero existen algunas situaciones en las que se
requiere de cierta atencin especial:
Adems, existen conversiones de tipo que se llevan a cabo en el momento de evaluar expresiones
aritmticas, por ejemplo, al intentar sumar un valor float con uno int. En estos casos, la regla general
indica que el operando de tipo inferior, en este caso int, se convierte al tipo superior, en este
caso float, y el resultado ser del tipo superior (float). En general:
Por ltimo, es posible hacer una conversin de tipo en forma explcita, indicando entre parntesis el tipo
al que se quiere convertir una determinada expresin. Esto se hace siguiendo la siguiente sintaxis:
(<tipo>) <expresion>
Ejemplos
parte_entera = 7/4;
o A la variable parte_entera se le asignar el resultado de la divisin pero truncado: 1
(int)(7.0/4.0)
o El resultado de esta expresin tambin es 1
7.0/4.0
o El resultado de la divisin ser exacto, con todos los decimales
7.0/4
o Se convierte el 4 a 4.0 y la divisin arroja decimales
x = 7.0/4.0
o El resultado de la divisin tendr decimales, pero si la variable x es de tipo entero al
asignar el valor habr truncamiento.
(float)1
o Convierte 1 a tipo float, resultando en 1.0
Estructura de un Programa
Un programa es un conjunto de instrucciones y datos que implementan la solucin a un problema. En el
caso del lenguaje de programacin C las instrucciones estn estructuradas como un conjunto
defunciones, cada una de las cuales cumple con alguna tarea en particular.
Existe una funcin principal (llamada main( )), que debe aparecer en todo programa, y que ser llamada
en forma implcita cuando la ejecucin del programa d inicio. Es comn visualizar esta funcin como
una especie de programa principal, desde donde se hacen llamados a las dems funciones para
implementar la solucin al problema en cuestin.
Al igual que las instrucciones, los datos del programa tambin pueden estructurarse, definindolos fuera
o dentro de las funciones. Los datos se definen en la forma de variables, las cuales son visibles
(accesibles) en ciertas partes del programa, dependiendo del lugar en que fueron definidas. Para mayor
detalle puede consultarse la seccin sobre declaracin de variables.
Sintaxis
A pesar de que existen muchas maneras de estructurar un programa en C, presentamos la estructura
general de un programa, segn las normas que seguiremos en todos los ejemplos que se presentarn.
Sintaxis General:
#include <libreras>
#define <identificador> <constante>
typedef <definicin_de_nuevos_tipos_de_datos>
<definicin_de_funciones>
<tipo> main() {
<cuerpo_de_la_funcin_principal>
}
/* funciones bsicas */
/* funciones matemticas bsicas */
/* funciones para manejar cadenas */
La funcin main() es la funcin principal del programa. Al iniciar el programa esta funcin se
llamar en forma implcita, por lo que podra considerarse como el cuerpo principal del
programa. Ms adelante en el curso se ver como especificar al programa argumentos desde la
lnea de comandos del sistema operativo, los cuales sern pasados como parmetros de entrada a
la funcin main().
Ejemplo:
Programa de ejemplo, compuesto por dos funciones para conversin de temperaturas, y una funcin
principal main(), que hace algunos llamados a las funciones para crear una pequea tabla de
equivalencia de temperaturas.
Entrada y Salida
La mayor parte de los programas interactan con el usuario durante su ejecucin. De esta forma,
el usuario puede suministrar al programa sus datos de entrada, y puede recibir de ste los resultados
obtenidos.
Para llevar a cabo esta interaccin es necesario contar con instrucciones destinadas para tal efecto. Las
bibliotecas del lenguaje de programacin C incluyen un amplio conjunto de instrucciones destinadas a
llevar a cabo entrada y salida de datos. Quiz las de mayor uso son las orientadas a la entrada y salida de
datos con formato (biblioteca stdio.h).
Para llevar a cabo salida con formato contamos con la instruccin printf, la cual permite desplegar en la
pantalla del computador informacin de variados tipos, permitindonos a la vez especificar la forma en
que dichos datos debern aparecer (formato).
Para obtener entradas con formato disponemos de la instruccin scanf, la cual permite capturar desde el
teclado del computador informacin de variados tipos, permitindonos a la vez especificar la forma en
que dichos datos debern interpretarse durante la lectura.
Tanto la instruccin printf, como scanf utilizan una serie de caracteres de conversin para especificar el
formato que deber tener la informacin de salida y entrada, respectivamente. De este modo ser posible
interpretarla correctamente.
Un nmero entero, que indica el tamao mnimo que deber ocupar el campo al desplegarse
Un punto seguido de un nmero entero, que indica las posiciones decimales que debern
desplegarse. De ser necesario se agregarn ceros al final.
Los caracteres de conversin indican a printf la forma en que deber interpretar el argumento. Se
mencionan a continuacin aquellos de mayor uso:
c - Caracter
f - Nmero con decimales, expresado en notacin de punto fijo (parte entera, punto, parte
decimal)
Dentro de la expresin de conversin pueden especificarse las siguientes secuencias que tienen un
significado especial:
Para una referencia ms amplia debe consultarse el libro "The C Programming Language" de Kernighan
y Ritchie.
Ejemplos:
Ejemplo de ejecucin
Sintaxis General:
scanf ( "cadena_de_control", <lista_de_argumentos> ) ;
La cadena de control, al igual que en el caso de la cadena de formato de printf, debe ir delimitada por
comillas dobles, y debe incluir una especificacin de conversin por cada argumento en la lista. Estas
especificaciones se utilizarn para dirigir la interpretacin de las secuencias de entrada.
La lista de argumentos consiste de una secuencia de punteros a variables, en las cuales se almacenarn
las entradas dadas por el usuario, una vez interpretadas por scanf. La cadena de control puede contener:
Caracteres ordinarios (distintos de %), los cuales se espera que coincidan con el prximo caracter
%, distinto de blanco del flujo de entrada.
Cada especificacin de conversin dirige la conversin del prximo campo de la entrada. El resultado se
almacena en la variable apuntada por el argumento (por el puntero). Un campo de entrada se define
como una cadena de caracteres delimitada por espacios en blanco (incluyendo tabulador y fin de lnea).
El campo concluye en el primer blanco, o cuando se alcance el mximo sealado en la especificacin de
conversin.
Los caracteres de conversin pueden ser:
d - indica que se espera un nmero decimal (el argumento debe ser un puntero a int).
lx - similar a los anteriores, pero el argumento debe ser puntero a long int.
c - indica que se espera un caracter (el argumento debe ser un puntero a char). Para leer el primer
caracter distinto de blanco debe emplearse %1s.
s - indica que se espera una cadena de caracteres (el argumento debe ser un puntero a caracter, o
el nombre de un vector de caracteres).
f - indica que se espera un nmero con decimales (el argumento debe ser un puntero a float). La
entrada puede darse en notacin de punto fijo (parte entera, punto, decimales), o de punto
flotante (mantisa, E, exponente).
Ejemplos:
scanf("%d", &edad);
o Espera un entero que ser almacenado en la variable edad.
scanf("%4d", &agno);
o Espera el ao actual (4 dgitos). El valor ingresado se guardar en la variable agno. Si se
ingresan ms de 4 dgitos, los restantes se descartarn, o se dejarn para la siguiente
llamada a scanf.
scanf("%d %f", &edad, &salario);
o Se esperan dos nmeros: El primero debe ser entero y el segundo puede tener decimales.
Los valores se guardarn en las variables edad y salario, respectivamente. El usuario
puede separar los valores durante la entrada con espacios en blanco, tabuladores o
caracteres de fin de lnea (es decir, presionando las teclas <Enter> <Return>).
scanf("%s", nombre);
o Se espera una cadena de caracteres (string). La entrada se almacenar en el vector
nombre, y se delimitar con un ASCII(0) al final. Obsrvese que el argumento no incluye
el smbolo &, pues los nombres de vectores son en s punteros. Debe tenerse cuidado de
que el vector puede almacenar la totalidad de la entrada, o pueden producirse errores de
ejecucin muy serios. Una manera de controlar esto es incluir un tamao mximo dentro
de la expresin de formato.
Ejemplo de ejecucin
funcion (argumentos) {
...
}
Directivas al preprocesador.
Definicin de tipos de datos.
Declaracin de variables.
Definicin de funciones.
Cualquier programa debe poseer una funcin, llamada main, que es la funcin que toma el control
cuando se corre el programa.
El primer programa
El ejemplo siguiente muestra un programa completo en C, que imprime un texto en pantalla.
1. Comentarios: Los comentarios en C comienzan con la secuencia '/*' y termina con la secuencia
'*/'. Todo lo que se encuentre entre estas dos secuencias es omitido por el compilador. Algunos
compiladores (no todos) soportan el anidamiento de comentarios (comentarios dentro de
comentarios), pero por no ser una facilidad comn, no se aconseja su utilizacin. El uso de
comentarios en un programa es fundamental para su entendimiento. Una proporcin 50%-50%
(cdigo-comentario) no es exagerada.