unidad i

42
CONTENIDO UNIDAD I Breve reseña histórica del lenguaje de programación en C C es un lenguaje de programación de propósito general que ofrece economía sintáctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y más bien un lenguaje pequeño, sencillo y no está especializado en ningún tipo de aplicación. Esto lo hace un lenguaje potente, con un campo de aplicación ilimitado y sobre todo, se aprende rápidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje. Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no está ligado a ningún sistema operativo ni a ninguna máquina concreta. Se le suele llamar lenguaje de programación de sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se puede desarrollar cualquier tipo de aplicación. La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP-7. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, números enteros y en coma flotante, de varios tamaños. Además se pueden crear tipos derivados mediante la utilización de punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-11 y escribió el propio sistema operativo en Introducción al lenguaje C.

Upload: victoriano-dominguez-henriquez

Post on 28-Sep-2015

8 views

Category:

Documents


2 download

DESCRIPTION

Unidad I C

TRANSCRIPT

CONTENIDO UNIDAD IBreve resea histrica del lenguaje de programacin enCCes un lenguaje de programacin de propsito general que ofrece economa sintctica, control de flujo y estructuras sencillas y un buen conjunto de operadores. No es un lenguaje de muy alto nivel y ms bien un lenguaje pequeo, sencillo y no est especializado en ningn tipo de aplicacin. Esto lo hace un lenguaje potente, con un campo de aplicacin ilimitado y sobre todo, se aprende rpidamente. En poco tiempo, un programador puede utilizar la totalidad del lenguaje.Este lenguaje ha sido estrechamente ligado al sistema operativo UNIX, puesto que fueron desarrollados conjuntamente. Sin embargo, este lenguaje no est ligado a ningn sistema operativo ni a ninguna mquina concreta. Se le suele llamar lenguaje de programacin de sistemas debido a su utilidad para escribir compiladores y sistemas operativos, aunque de igual forma se puede desarrollar cualquier tipo de aplicacin.La base del C proviene del BCPL, escrito por Martin Richards, y del B escrito por Ken Thompson en 1970 para el primer sistema UNIX en un DEC PDP-7. Estos son lenguajes sin tipos, al contrario que el C que proporciona varios tipos de datos. Los tipos que ofrece son caracteres, nmeros enteros y en coma flotante, de varios tamaos. Adems se pueden crear tipos derivados mediante la utilizacin de punteros, vectores, registros y uniones. El primer compilador de C fue escrito por Dennis Ritchie para un DEC PDP-11 y escribi el propio sistema operativo en Introduccin al lenguaje C.C trabaja con tipos de datos que son directamente tratables por el hardware de la mayora de computadoras actuales, como son los caracteres, nmeros y direcciones. Estos tipos de datos pueden ser manipulados por las operaciones aritmticas que proporcionan las computadoras. No proporciona mecanismos para tratar tipos de datos que no sean los bsicos, debiendo ser el programador el que los desarrolle. Esto permite que el cdigo generado sea muy eficiente y de ah el xito que ha tenido como lenguaje de desarrollo de sistemas. No proporciona otros mecanismos de almacenamiento de datos que no sea el esttico y no proporciona mecanismos de entrada ni salida. Ello permite que el lenguaje sea reducido y los compiladores de fcil implementacin en distintos sistemas. Por contra, estas carencias se 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.

Variables, constantes, identificadores y tipos de datos

Las Variables en C

A la hora de elaborar un programa es necesario usar unos datos, y para ello es imprescindible en muchos casos grabar esos datos en memoria para o perar con ellos posteriormente. Recordemos que no es lo mismo grabar los datos en memoria que grabarlos en el disco duro. Cuando decimos grabar en memoria dentro de un lenguaje de programacin nos estaremos refiriendo a grabar esos datos en la RAM.Ahora bien, para grabar esos datos en la RAM podemos hacerlo racionalmente con dos elementos, llamados: variables y constantes.Los dos elementos funcionan como fuentes de almacenamiento de datos, la gran diferencia entre los dos es que en el caso de las constantes su valor dado no varia en el transcurso de todo el programa o cdigo. Tanto las variables como las constantes podra decirse que son direcciones de memoria con un valor, ya sea un numero, una letra, o valor nulo.

Variables: Elementos de almacenamiento de datos o direcciones de memoria, que pueden variar en el desarrollo o proceso del programa.

Tanto las variables como las constantes las utilizamos a la hora de programar para almacenar en ellas unos datos determinados y poder nombrarlas en cualquier parte de nuestro cdigo-programa para que nos devuelvan esos datos anteriormente introducidos.

Definicin de una variable

Definir una variable es indicar el tipo de dato que va a contener y almacenar, y en funcin de esto reservar una determinada direccin de memoria o palabra de memoria (es la cantidad de bytes que ocupa un tipo de dato). Con lo que si queremos que una variable contenga un dato numrico deberemos de definirla de distinta forma que si queremos que contenga una cadena de caracteres. Cuando definimos una variable no le estamos introduciendo ningn valor, sino que nicamente estamos indicando que tipo de valor va almacenar posteriormente. Es obligatorio que siempre definamos una variable antes de introducir en ella un valor, y esto es as porque es necesario que se reserve en memoria un espacio limitado mas o menos grande dependiendo del tipo de dato que vaya a albergar dicha variable.

Para definir una variable

La sintaxis a seguir es: [cualificador]

En manuales o tutoriales d e informtica lo que se encuentra entre corchetes es opcional y el resto es obligatorio.Ante esa sintaxis, decimos que donde cualificador podemos poner opcionalmente uno de los disponiblesque se encargan de variar o alterar el tipo de dato (ser explicado a continuacin), posteriormente ira el tipo de dato, ya sea entero, decimal, etc. Y por ultimo el identificador o nombre de la variable.

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 a32767. 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. Rangode 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 comoel signo de interrogacin, los parntesis, etc.Tampoco podremos usar como identificadores las palabras reservadas de un lenguaje, palabras tales como: if, else, goto, etc.El numero de caracteres de un identificador nunca debe sobrepasar los 31. Algunos compiladores solo reconocen los 8 primeros caracteres de los identificadores. Esto ya depende del potencial del compilador. Recordemos que en C se distinguen entre maysculas y minsculas con lo cual es distinto un identificador tal como, Suma que otro como suma. (Por convenio se ha decidido que los identificadores estn escritos en minsculas.)

Lgicamente a la hora de dar nombre a una variable o constante, utilizaremos identificadores que nos hagan referencia o semejanza a l dato que almacenan. Con lo que si necesitamos una variable para almacenar la cadena de caracteres: Hola, seria conveniente llamar o identificar esta variable como saludo y no como x. Los nombres de variables y constantes o sea los identificadores es adecuado que si su valor almacenado tiene relacin unos con otros, los nombres de los identificadores tambin tengan esa relacin (de forma lxica). Con todo esto lo que quiero decir es que nunca escatimemos en el tiempo de bsqueda para dar nombre a una variable o constante. Si le damos un nombre cualquiera luego al repasar el cdigo todo nos resultara mas confuso.

Palabras reservadas

Hay ciertos indicadores, identificadores o palabras llamadas palabras reservadas (valga la redundancia) que no se pueden usar como identificadores, puesto que ya son usadas por el propio lenguaje para una finalidad determinada.Estas palabras son por lo general en ingles . Lo bueno es que no hace falta tener mucho nivel de ingles para comprenderlas .

Algunas de estas palabras son: auto, break, case, char, const, continue, default, do, double, else, enum, extern, flota, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while.

Definiendo variables1) int suma2) long float resultado3) c har letra

1: En el primer caso estamos definiendo una variable de tipo entero (int). O sea una variable que almacenara un dato numrico entero, sin decimales. Dicha variable es identificada por el nombre suma (su identificador).2: En el segundo de los casos, definimos una variable de tipo de coma flotante o lo que es lo mismo decimal y a dems le atribuimos el cualificador long lo que hace que sea un a variable de tipo decimal larga, esto hace que su rango numrico aumente. Y su nombre o identificador es: resultado.3: En el tercer y ultimo caso definimos una variable de tipo carcter, y esta almacenara un carcter. Su IDes: letra.

Asignacin de va lores a variables

Es aqu cuando estamos verdaderamente introduciendo un dato dentro de una variable (direccin de memoria). Una vez que tenemos una variable definida, esta ya esta lista para albergar en su interior 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 lemetemos 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.

Tamao de una variable

Cuando definimos una variable, debemos saber con prioridad si va a almacenar una cantidad de bits pequea o grande. Si la variable es de tipo entero (int) y almacena un numero mayor del rango que tiene este tipo de dato, se producir un overflow. A la hora de hacer un programa debemos ser previsores e intentar poner el tipo de dato con un rango que soporte las posibles cifras a introducir en ese programa. Por ello es bueno conocer la forma de averiguar el rango de un tipo de dato, puesto que sabrselos de memoria es tontera e imposible.

Para conocer el tamao o rango numrico que al canza un determinado tipo de dato se usa la funcinsizeof.

#include main () {printf( "El tipo de dato entero (int) ocupa %i bytes \n", sizeof(int));

}

En este programa saldr imprimido 4 bytes . Sabiendo que un byte son 8 bits, (4*8) son el resultado de bits que ocupa el tipo de dato entero (int). Para calcular el mximo numero del rango que puede alcanzar este tipo de dato se hace elevando (2^32) a la 32 que era el numero de bits y obtenemos 4.294.967.296. Pero esta cifra podra variar en funcin del uso de los ya anteriormente llamados cualificadores. La funcin sizeof se encuentra dentro de la librera stdio.h.

Uso de la funcin printf, pasando el argumento o parmetro de una variable

Nosotros cuando operamos con los distintos tipos de datos podemos o no saber la cifra que van a devolver. Lo mejor ser verlo con un ejemplo.

#include main () {int num1,num2,resultado;num1=3; num2=2; resultado=num1+num2;printf( "\nEl resultado es: %d,resultado);}

Lo que hacem os en este pequeo programa es:1) Definimos 3 variables de tipo entero: num1,num2,resultado.2) Le damos a num1 el valor 3.3) Le aadimos a num2 el valor 2.4) Le damos el valor a resultado de la suma de las dos anteriores variables (num1 + num2).5) Imprimimos por pantalla el valor de resultado.El meollo de la cuestin esta en el 5 paso. Con este tipo de paso de parmetros al printf estaremos continuamente trabajando as que no hay mas remedio que entenderlo .Tenemos la funcin: printf( "\nEl resultado es: %d,resultado); Fijndonos en ella veriamos que el texto que se deberia de imprimir es el que esta entre comillas, o sea "\nEl resultado es: %d Y as es lo nico que no sale es el %d que es sustituido por el valor de la variable que hay al cerrar las comillas despus de la coma.

Veamos otro ejemplo, que hace lo mismo pero con mejor presencia.

#include main () {int num1,num2,resultado;num1=3; num2=2; resultado=num1+num2;printf( "\nEl resultado de %d + %d es igual a %d,num1,num2,resulta do);}

Los primeros pasos hacen los mismo que el anterior ejemplo, debemos centrarnos en la ultima orden, la funcin printf. El primer %d es sustituido en orden por el valor de num1, el segundo por el valor de la variable num2, y el ultimo %d es sustituid o por la ultima variable resultado.

Ahora bien, no siempre es %d lo que hay que poner para que lo sustituya por el valor de la variable pasada a la funcin. Segn el tipo de dato que contenga la variable pasada debemos poner %d (enteros),%c (carcter), % f (decimales), etc.

Al %d se le llama cadena de control Tipos de cadenas de control.%c = carcter%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 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 almacenadoLas variables por contador: Son un tipo de variables muy usadas en los bucles, rizos o procesos derepeticin. 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 serVariables 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.

ConstantesConstantes : 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 constantesC.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 decimalDistinguen la parte decimal de la entera por un punto, para el aadido de exponentes usa la letra E.

Las constantes de carcterSe representa el valor de la constante encerrado entre apostrofos.

Las constantes de cadenaAlmacena 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 #define PI 3.1416main () {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.

FuncionesUna funcin es unconjunto 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 quelas funciones dentro de un programa cumplen con subtareas, para las cualeses 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 lasinstruccionesdel lenguaje de programacin. Es necesario respetar algunas pautas, tanto para la especificacin de losparmetros de entrada, como delvalor de retorno, pero la estructura general es la misma.Sintaxis de la definicin de FuncionesLa sintaxis general de definicin de las funciones es la siguiente: ( ) { ; ;return () ;}es eltipodel 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 reservadavoid.A estas funciones se las conoce tambin comoprocedimientos, porque no devuelven ningn valor.debe ser sustituido por un identificador que corresponde al nombre con que se invocar la funcin posteriormente (o llamada de la funcin). Debe ser unidentificadorvlido. Elvalor de retorno de la funcin es asociado al nombre de la funcin. corresponde con una lista devariables denotadas por identificadoresasociados a untipo, cada uno representa un parmetro de entrada. La lista de parmetros puede ser vaca perolos parntesis deben aparecer.La se refiere avariables localesque podrn ser utilizadas nicamente dentro de la funcin. Fuera de ella, no sern reconocidas.El es una lista deinstrucciones, separadas por punto y coma., debe ser una expresin (constante, aritmtica, lgica deltipoque se especific como , y establece laexpresinque retornar la funcin una vez que haya terminado.Ejemplos: Funcin que convierte temperaturas Fahrenheit a Celsius Funcin que convierte temperaturas Celsius a Fahrenheit Funcin que calcula el rea de un crculoSintaxis de la llamada a las Funciones definidasLa sintaxis general de las llamadas a las funciones definidas es la siguiente: = ( ) ;corresponde a una variable denotada por un identificador del mismotipodel valor que devolver la funcin.es el identificador que corresponde al nombre con que se invoca a la funcin. debe corresponder a una lista devariables denotadas por identificadores asociadas a untipo, oexpresionesde un tipo. Ya sean variables o expresiones, stas deben corresponder en cuanto a cantidad, posicin y tipos a las variables que se definieron como parmetros de entrada en la definicin de la funcin. Representan los valores que se entregan como entrada a la funcin. Si en la definicin de la funcin no se us parmetro alguno, entonces en la llamada tampoco debe escribirse ninguna expresin o variable, perolos parntesis deben aparecer.Ejemplos: Llamada a la Funcin que convierte temperaturas Fahrenheit a Celsius Llamada a la Funcin que convierte temperaturas Celsius a Fahrenheit Llamada a la Funcin que calcula el rea de un crculoParmetros de Entrada y Valor de RetornoTal y como se mostr en el diagrama presentado anteriormente, las funciones transforman una entrada para producir una salida.La materia prima con la que trabajar la funcin le es pasada a travs de susparmetros de entrada.El resultado del procesamiento llevado a cabo por la funcin es devuelto como suvalor de retorno.Tanto los argumentos de entrada como el valor de retorno tienen untipo de datosasociado. En el ejemplo de la funcin que calcula elrea de un crculo, los parmetros de entrada son la constante pi y el radio del crculo, de tipo real (float), y el valor de retorno, tambin real, es el valor calculado para el rea.La funcin principalmainy los programas en CUn programa en C, est formado por varias instrucciones. Estas instrucciones son escritas dentro de funciones que realizan una tarea en particular con los parmetros de entrada, para devolver valores que corresponden a sus resultados. Algunas instrucciones son escritas fuera de las funciones, stas son algunas directivas como #include, #define o declaracin de variables.Una funcin tambin es una instruccin.El computador debe empezar a ejecutar en algn orden estas instrucciones. Bsicamente, este orden comienza por la ejecucin de las directivas (#include y #define), declaraciones de variales globales que se encuentran escritas al principio del programa. Luego el orden de ejecucin contina tomando en cuenta inicialmente la funcinmain.Esta funcin consta tambin de declaraciones, instrucciones y llamadas a las definiciones de otras funciones. El orden de ejecucin de las instrucciones dentro de la funcinmaines secuencial de arriba a abajo y es as como es posible recin seguir la ejecucin del resto de las funciones.Para el primer programa visto en este captulovea su orden de ejecucin.

ExpresionesSe conocen como expresiones los valores que son manipulados dentro de un programa. Estos valorespueden 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 untipo 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 cadatipo de datos, de manera que siempre es posible construir una nueva expresin a partir de una o varias ya existentes. Tenemos, por ejemplo,operadores aritmticospara construirexpresiones numricas, yoperadores lgicospara construirexpresiones booleanas.Expresiones AritmticasLas 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 -- DecrementoPrecedencia: ++ -- -(unitario) * / % + -Asociatividad: Por la izquierdaExpresionesLos 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: ++ -- (notacin pre o postfija)Ejemplos de expresiones aritmticas: 2 + 3 * 2 * tiene precedencia sobre + (Resultado: 8) (2 + 3) * 2 los parntesis alteran la precedencia (Resultado: 10) -2 / x si x vale cero se producir un error de ejecucin x++ notacin postfija (retorna el valor antes del incremento) ++x notacin prefija (retorna el valor despus del incremento) 2 - 1 + 3 asociatividad por la izquierda: 4 15 % 6 operador mdulo o residuo (Resultado: 3) -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 BooleanasA 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 averdaderoofalsode una expresin lgica.En C, las instrucciones que dependen de valores lgicos dependen en realidad de un valor entero que se interpreta comofalsocuando es cero, y comoverdaderoen 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 = mayor o igualPrecedencia:La precedencia est establecida por el siguiente orden de evaluacin. La asociatividad se aplica de izquierda a derecha, para operadores con igual precedencia. < >= == != && ||ExpresionesLos operandos de las expresiones booleanas son valores enteros (booleanos), incluyendo aquellos que resulten de la comparacin mediante los operadores relacionales mencionados anteriormente. Pueden emplearse parntesis para dejar clara la precedencia de evaluacin. operando operador-logico-binario operando operador-logico-unario operandoEjemplos de expresiones booleanas: x Verdadero cuando el contenido de la variable x es distinto de 0. !x Verdadero cuando el contenido de la variable x es igual a 0. 1 Verdadero siempre. 1 || x Verdadero siempre, no importa lo que sea x. 0 Falso siempre. 0 && x Falso siempre, no importa lo que sea x. (x > 5) && !y Verdadero cuando el contenido de la variable x es mayor que 5, y el contenido de y es 0. (x==1) Verdadero si el valor de la variable x es 1. 5 == 6 retorna 0, osea Falso. 4 >= 2 Retorna 1, osea Verdad. ((4 % 2 == 0) || (4 % 3 == 0) && 0

La precedencia de todos los operadores de C:Mxima( ) [ ] - ->! ~ ++ --* / %+ -

=== =&|&&||= += -= /=Mnima

InstruccionesLas instrucciones son las rdenes que reconoce un computador mientras se encuentra ejecutando un programa. De hecho, un programa es unasecuencia de instruccionesque al ejecutarse resuelve algn problema para el usuario.Los programas estn escritos en unlenguaje de programacin, el cual define el conjunto de instrucciones vlidas que podemos utilizar al escribirlos.En nuestro caso emplearemos ellenguaje 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 Ejemplos: declaraciones de variables, asignaciones, llamado a funciones, salida (printf) y entrada (scanf) Control de flujo (o decisin) Ejemplos:if,switch Iteracin Ejemplos:for,while,do-whileSintaxisLa sintaxis de las instrucciones en C vara bastante dependiendo de cada instruccin. En general, toda instruccin debe ir terminada por unpunto y coma, de la siguiente manera: ;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: { ; ; ... ; }

Declaracin de Variables y AsignacinLas variables permiten representar los datos que se estn manipulando dentro de un programa. Como se mencion anteriormente, todas las variables tienen untipo de datosasociado, el cual determina la forma de almacenar e interpretar los datos en las variables.Declaracin de VariablesPara 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: ; ; ... ;Las listas de variables estn formadas por una serie de identificadores vlidos, separados por comas, de la siguiente manera: , , ..., 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 comoglobales.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 comolocales.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: = ;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 variableno perduranpara 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 comoestticas, de la siguiente manera: static ;Las variables definidas dentro de una funcin con la caractersticastaticse 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 suma, producto; Se declaran dos variables,sumayproducto, ambas de tipoint. int acumulado=0; Se declara la variableacumulado, de tipoint, y se inicializa con el valor 0. static float interes; Se declara la variableinters, de tipofloat, 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 AsignacinEl 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: = ;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 laconversin de tipos.Ejemplos indice = 0; Se almacenar el valor 0 en la variable ndice suma = a+b; Se obtendr la suma de las variablesayb, y el resultado se almacenar en la variablesuma NuevaX = ViejaX; El valor de la variableViejaXse copiar a la variableNuevaX j = (i = 9) Asigna el valor de 9 a las variablesiyj

Ejemplo: Intercambio del contenido de dos variables (vasos)En este ejemplo ilustraremos la problemtica de intercambiar el contenido de dos variables. Al igual que cuando nos enfrentamos al problema de intercambiar el contenido de dos vasos, en este caso ser necesario emplear un tercer elemento de almacenamiento (variable o vaso), para guardar temporalmente durante el intercambio uno de los contenidos. Diagrama del intercambio empleando los vasos Cdigo en C para intercambio de variables (swap)

Ejemplo: Vida til de las VariablesSe muestra un programa con una funcin en la que se declaran dos variables, una de tipostaticy otra con existencia limitada (nostatic). El valor almacenado en la variable de tipostaticsobrevive a varios llamados mientras que la otra pierde su valor anterior y deber ser inicializada nuevamente en cada llamado. Cdigo en C para el ejemplo Ejemplo de ejecucinEsquema de la vida til de las variables

Ejemplo: Parmetros de las FuncionesSe muestra un programa con una variable global y una funcin que recibe un parmetro. Se ilustra el paso de parmetros a la funcin y la forma en que la funcin devuelve valores. Adems, se muestra como dichos parmetros son copiados a almacenamiento temporal de la funcin al hacer el llamado, por lo que los cambios de que son objeto no afectan el parmetro real que se pas. Cdigo en C para el ejemplo Ejemplo de ejecucin

Conversin de Tipos (Type Casting)El lenguaje C permite cambiar eltipo de datosde las expresiones en el momento de llevar a cabo las asignaciones. Existenalgunas de estas conversiones que se llevan a cabo en forma implcita, sin participacin del programador. Por ejemplo, si se asigna una expresin entera a una variable de tipo real, el valor de la expresin se convertir primero al tipo real antes de llevar a cabo la asignacin. Este resulta ser el caso ms simple de una conversin de tipos, pero existen algunas situaciones en las que se requiere de cierta atencin especial: De un tipo real a uno entero Se trunca el valor a su parte entera. La parte decimal se pierde. Asignaciones entrechareint Puesto que en C se manejan los caracteres mediante su cdigo ASCII (que es un nmero entero), este tipo de asignaciones funciona en general sin problemas.Adems, existen conversiones de tipo que se llevan a cabo en el momento de evaluar expresiones aritmticas, por ejemplo, al intentar sumar un valorfloatcon unoint. En estos casos,la regla general indica que el operando de tipoinferior, en este casoint, se convierte al tiposuperior, en este casofloat, y el resultado ser del tiposuperior(float). En general: intse convierte endoubleyfloat charse convierte enint si hay un operandodouble, el otro se convierte adoubley el resultado esdoublePor 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: () Ejemplos parte_entera = 7/4; A la variableparte_enterase le asignar el resultado de la divisin pero truncado: 1 (int)(7.0/4.0) El resultado de esta expresin tambin es 1 7.0/4.0 El resultado de la divisin ser exacto, con todos los decimales 7.0/4 Se convierte el 4 a 4.0 y la divisin arroja decimales x = 7.0/4.0 El resultado de la divisin tendr decimales, pero si la variablexes de tipo entero al asignar el valor habr truncamiento. (float)1 Convierte 1 a tipofloat, resultando en 1.0

Estructura de un ProgramaUn programa es un conjunto deinstruccionesydatosque implementan la solucin a un problema. En el caso dellenguaje de programacin Clas instrucciones estn estructuradas como un conjunto defunciones, cada una de las cuales cumple con alguna tarea en particular.Existe una funcin principal (llamadamain( )), 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 devariables, las cuales son visibles (accesibles) en ciertas partes del programa, dependiendo del lugar en que fueron definidas. Para mayor detalle puede consultarse la seccin sobredeclaracin de variables.SintaxisA 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 #define typedef main() { } La directiva para la consideracin de libreras o bibliotecas de funciones predefinidas es #include. En la seccin de inclusin de bibliotecas se hace referencia a aquellos grupos de funciones que se requieran para un correcto funcionamiento del programa (es decir, aquellas que van a ser llamadas). Por ejemplo, si deseamos incluirstdio.hpara emplear las funciones de la biblioteca de entrada y salida estndar, se escribira:#include De esta forma el compilador tendr conocimiento de las funciones que contiene la biblioteca.Otras bibliotecas son:#include /* funciones bsicas */#include /* funciones matemticas bsicas */#include /* funciones para manejar cadenas */ La definicin deconstantes simblicas se realiza con #define y consiste en asignar a un identificador un valor que permanecer constante durante su uso en el programa. La definicin denuevos tipos de datos se estudiarn en profundidad ms adelante, por lo que no entraremos en su explicacin por ahora. En lase escribe la declaracin e implementacin de las funciones propias (es decir, escritas por nosotros mismos), y que van a ser empleadas a lo largo del programa. La funcinmain()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 programaargumentos desde la lnea de comandos del sistema operativo, los cuales sern pasados comoparmetros de entradaa la funcinmain(). El cuerpo de la funcin principal es un conjunto deinstruccionesque implementan la funcionalidad del programa (es decir, especifican lo que har el programa).

Ejemplo:Programa de ejemplo, compuesto por dos funciones para conversin de temperaturas, y una funcin principalmain(), que hace algunos llamados a las funciones para crear una pequea tabla de equivalencia de temperaturas. Equivalencia de temperaturas (Fahrenheit-Celsius)

Entrada y SalidaLa 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 coninstruccionesdestinadas 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 datoscon formato(bibliotecastdio.h).Para llevar a cabo salida con formato contamos con la instruccinprintf, 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 instruccinscanf, 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 instruccinprintf, comoscanfutilizan 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.

Salida con Formato:printfLa funcinprintf, de la biblioteca de entrada y salida estndar (stdio) permite desplegar datos en la pantalla, con la posibilidad de especificar el formato con que se desea que aparezcan.Sintaxis General: printf ( "cadena-de-formato", ) ;La cadena de formato debe ir delimitada por comillas dobles, y debe incluir una especificacin de conversin por cada argumento en la lista de argumentos. El texto que se incluya en la cadena de formato aparecer durante el despliegue, y cada especificacin de conversin ser reemplazada por el correspondiente argumento.La lista de argumentos consiste de una secuencia de expresiones que se desean desplegar. Las expresiones pueden ser variables, constantes u operaciones que deben resolverse antes del despliegue. Tambin es posible especificar llamados a funciones que devuelvan algn valor.Especificaciones de ConversinLas especificaciones de conversin definen la forma en que sern tratados y desplegados los argumentos deprintf. Cada especificacin de conversin empieza con el caracter especial % y termina con alguno de los caracteres de conversin que se detallan ms adelante. Adems, entre el smbolo % y el caracter de conversin pueden incluirse: Un signo menos, que indica que el campo debe ajustarse a la izquierda 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 aprintfla forma en que deber interpretar el argumento. Se mencionan a continuacin aquellos de mayor uso: d - Nmero entero en notacin decimal (base 10) c - Caracter s - Cadena de caracteres (string) e - Nmero con decimales, expresado en notacin exponencial o de punto flotante (mantisa y exponente) 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 imprimir un smbolo de % \n - Para provocar que el cursor cambie de lnea \t - Para producir una tabulacin en el despliegue \ASCII - Despliega el caracter con el cdigo ASCII suministradoPara una referencia ms amplia debe consultarse el libro"The C Programming Language"de Kernighan y Ritchie.Ejemplos: printf("El valor de la variable x es: %d\n", x); Desplegar:El valor de la variable x es: 100(si x contena un valor igual a 100), y avanzar a la siguiente lnea luego del despliegue

printf("El valor de dos + cinco es: %d\n", 2+5); Desplegar:El valor de dos + cinco es: 7y avanzar a la siguiente lnea luego del despliegue

printf("El area de un circulo con radio %.2f es %.2f\n", radio, area); Desplegar:El area de un circulo con radio 1.00 es 3.14(suponiendo los valores indicados para las variables) y avanzar a la siguiente lnea luego del despliegue

printf("Este es el numero 2 con formato %%5d: %5d", 2); Desplegar:Este es el numero 2 con formato %5d: ____2(en donde _ representa un espacio en blanco)

printf("Este es el numero 2 con formatos %%-5d y %%d: %-5d %d", 2, 2); Desplegar:Este es el numero 2 con formatos %-5d y %d: 2_____2(en donde _ representa un espacio en blanco)

printf("Este es el caracter %c cuyo codigo ASCII es %d", 'A', 'A'); Desplegar:Este es el caracter A cuyo codigo ASCII es 65Ejemplo: Diversos Formatos de ConversinEjemplo de impresin en pantalla (output). Imprime un valor de tipofloatutilizando varios formatos dentro deprintf. Ver el cdigo fuente Ejemplo de ejecucin

Entrada con Formato:scanfLa funcinscanf, de la biblioteca de entrada y salida estndar (stdio) permite capturar datos desde el teclado, con la posibilidad de especificar el formato para interpretarlos.Sintaxis General: scanf ( "cadena_de_control", ) ;La cadena de control, al igual que en el caso de la cadena de formato deprintf, 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 avariables, en las cuales se almacenarn las entradas dadas por el usuario, una vez interpretadas porscanf. La cadena de control puede contener: Espacios en blanco, tabuladores o finales de lnea, los cuales no se tomarn en cuenta.

Caracteres ordinarios (distintos de %), los cuales se espera que coincidan con el prximo caracter %, distinto de blanco del flujo de entrada.

Especificaciones de conversin, formadas por el caracter %, un nmero opcional que indica el tamao mximo del campo, y el caracter de conversin, de manera similar a como se defini para el caso deprintf.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 aint). h - similar al anterior, pero el argumento debe ser puntero ashort int. lx - similar a los anteriores, pero el argumento debe ser puntero along int. c - indica que se espera un caracter (el argumento debe ser un puntero achar). 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 afloat). La entrada puede darse en notacin de punto fijo (parte entera, punto, decimales), o de punto flotante (mantisa, E, exponente). lf - similar al anterior, pero el argumento debe ser puntero adouble.Ejemplos: scanf("%d", &edad); Espera un entero que ser almacenado en la variable edad.

scanf("%4d", &agno); 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 ascanf.

scanf("%d %f", &edad, &salario); 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).

scanf("%s", nombre); 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: Lectura de Nmeros EnterosEjemplo de entrada desde el teclado (input). Lee el valor de tres variables de tipoint. Al ingresarlas, el usuario las podr delimitar empleando espacios en blanco, tabulaciones, o incluso ingresndolas en diferentes lneas. Ver el cdigo fuente Ejemplo de ejecucin

Comentarios, Indentacin y Otros Aspectos VisualesComentariosCon el objetivo de hacer los programas ms legibles, es importante la incorporacin de comentarios que ayuden a comprender lo que hizo el programador.Es importante documentar dentro del programa cualquier aspecto que no quede claro de la simple lectura del cdigo. Los comentarios son IMPRESCINDIBLES.Con este fin, el lenguaje ofrece la posibilidad de incluir dentro del programa cualquier texto que pretenda comentar el cdigo escrito. Este texto puede abarcar una o varias lneas, y debe incluirse dentro de los delimitadores mostrados a continuacin.Sintaxis General: /* Comentario - No debe incluir la combinacion de caracteres slash-asterisco, pues se emplea para terminar el comentario */Ejemplos: /* Programa para calcular ... Escrito por ... */ int radio; /* Guarda el radio del circulo */ /* Funcion que calcula el area de un circulo */ float area(float radio) { ...Indentacin y otros aspectos visualesA pesar de que el lenguaje de programacin C ofrece una amplia libertad en cuanto a la forma en que pueden escribirse los programas,es necesario establecer algunas normas que ayuden a hacer los programas ms legibles, y por lo tanto ms fciles de comprender y modificar. Aunque no es posible ofrecer una lista exhaustiva de todas las decisiones de formato que un programador debe enfrentar al escribir sus programas, intentaremos establecer algunas pautas, y el resto lo dejaremos para ser percibido a lo largo del curso al estudiar los ejemplos.Ahora bien, las normas aqu mostradasno son absolutas, y reflejan nicamente las preferencias del autor. Existen muchas otras, quiz hasta mejores. Lo importante aqu es adoptar un estndar y respetarlo al mximo posible. De esta forma escribiremos programas correctos, no slo en cuanto a su funcionalidad, sino tambin en cuanto a su apariencia.Algunos consejos: Dnde poner los corchetes? funcion (argumentos) { ... } Cmo indentar el cdigo?

Actividades para el aprendizaje1. Explica la Estructura de un Programa CEn general, un programa en C consta de las siguientes partes: Directivas al preprocesador. Definicin de tipos de datos. Declaracin de variables. Definicin de funciones.Cualquier programa debe poseer una funcin, llamadamain, que es la funcin que toma el control cuando se corre el programa.El primer programaEl ejemplo siguiente muestra un programa completo en C, que imprime un texto en pantalla./* Mi primer programa en Lenguage C */#include

void main(){ printf("Hola mundo");}

Puntos a notar: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.2. Directivas al preprocesador: La etapa de compilacin se realiza en dos fases, una en la que un preprocesador atiende todas las directivas que contiene el cdigo fuente y recien despues la etapa de traduccin a cdigo objeto. Todas las directivas al proprocesador comienzan con el caracter '#', en particular la directiva#includeinstruye al preprocesador para que inserte el contenido del archivo que se pasa como argumento a la directiva para su posterior compilacin.3. Definicin de funciones: Todas las funciones se definen colocando primero el tipo de retorno (voidsignifica que la funcin no retorna nada como resultado de su ejecucin. Por defecto si no se coloca tipo de retorno, se asume que la funcin retorna un valor entero); al tipo de retorno le sigue el nombre (la funcinmainposee un significado especial, ya que es la funcin que toma el control cuando se ejecuta el programa); le siguen los argumentos separados com comas y encerrados entre parntesis (aunque la funcin no reciba argumentos); y por ltimo el cuerpo de la funcin encerrado entre llaves.4. El llamado a funciones se realiza colocando su nombre seguida por los argumentos encerrados entre parentesis. En el caso de que la funcin retorne algo como resultado, se puede utilizar en el lado derecho de una asignacin.5. Todas las sentencias terminan en el caracter ';'El cuerpo de la funcinmainen nuestro caso, consta nicamente de la invocacin de la funcinprintfcon un "string" constante como argumento.La accin de la funcinprintf(cuyo cdigo se encuentra en las bibliotecas estndar del lenguaje) es la de imprimir en el dispositivo estndar de salida (en general el monitor).

2. Explica la importancia de la funcin mainSu misin es marcar el inicio y fin de la ejecucin de un programa; es la funcin principal, la primera que se ejecuta; es la funcinmain. Su sintaxis "bsica" es:

int main(){ }

La funcinmaincontiene albloque de instrucciones principal de un programa, dentro de los caracteresabrir llave({) ycerrar llave(}).

Los parntesis "()" escritos despus demainsirven para indicar que el identificadormaines una funcin. Es importante comprender quemainno es una palabra reservada de C. Ningn identificador de funcin lo es.