Está en la página 1de 38

Para ver una copia completa de la licencia, acudir a la direccin http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.

es

(3)

(unidad 3) programacin bsica en lenguaje C


(3.1) esquema de la unidad
(3.1) esquema de la unidad _____________________________________________________________ 5 (3.2) historia del lenguaje C_____________________________________________________________ 6 (3.2.1) el nacimiento de C 6 (3.2.2) C y C++ 6 (3.2.3) caractersticas del C 7 (3.3) compilacin de programas en C ____________________________________________________ 8 (3.4) fundamentos de C _________________________________________________________________ 9 (3.4.1) estructura de un programa C 9 (3.5) compilacin de programas C ______________________________________________________ 10 (3.5.1) generacin bsica de programas en C 10 (3.5.2) Entornos de desarrollo integrado (IDEs) 12 (3.5.3) creacin de un programa C en DevCpp 13 (3.6) elementos de un programa en C___________________________________________________ (3.6.1) sentencias (3.6.2) comentarios (3.6.3) palabras reservadas (3.6.4) identificadores (3.6.5) lneas de preprocesador 18 18 18 18 19 19

(3.7) variables_________________________________________________________________________ 20 (3.7.1) introduccin 20 (3.7.2) declaracin de variables 20 (3.7.3) tipos de datos 20 (3.7.4) asignacin de valores 23 (3.7.5) literales 23 (3.7.6) mbito de las variables 24 (3.7.7) conversin de tipos 26 (3.7.8) modificadores de acceso 27 (3.8) entrada y salida por consola ______________________________________________________ 28 (3.8.2) funcin scanf 31

(5)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

(3.9) operadores_______________________________________________________________________ (3.9.1) operadores aritmticos (3.9.2) operadores relacionales (3.9.3) operadores lgicos (3.9.4) operadores de bits (3.9.5) operador de asignacin (3.9.6) operador ? (3.9.7) operadores de puntero & y * (3.9.8) operador sizeof (3.9.9) operador coma (3.9.10) operadores especiales (3.9.11) orden de los operadores (3.10) expresiones y conversin de tipos _________________________________________________ (3.10.1) introduccin (3.10.2) conversin (3.10.3) operador de molde o cast

31 31 32 33 33 33 34 34 35 35 35 35 37 37 37 38

(3.11) ndice de ilustraciones____________________________________________________________ 38

(3.2) historia del lenguaje C


(3.2.1) el nacimiento de C
Fue Dennis Ritchie quien en 1969 creo el lenguaje C a partir de las ideas diseadas por otro lenguaje llamado B inventado por Ken Thompson, quien en los aos 70 fue el encargado de desarrollar el lenguaje C. Ritchie lo invent para programar la computadora PDP-11 que utilizaba el sistema UNIX (el propio Ritchie creo tambin Unix). De hecho La historia de C est muy ligada a la de UNIX, este sistema siempre ha incorporado compiladores para trabajar en C. El lenguaje C se dise como lenguaje pensado para programar sistemas operativos, debido a sus claras posibilidades para ello. Pero su xito inmediato hizo que miles de programadores en todo el mundo lo utilizaran para crear todo tipo de aplicaciones (hojas de clculo, bases de datos,), aunque siempre ha ten ido una clara relacin con las aplicaciones de gestin de sistemas. Debido a la proliferacin de diferentes versiones de C, en 1983 el organismo ANSI empez a producir un C estndar para normalizar su situacin. En 1989 aparece el considerado como C estndar que fue aceptado por ISO, organismo internacional de estndares. Actualmente ste C es universalmente aceptado. Actualmente se sigue utilizando enormemente para la creacin de aplicaciones de sistemas (casi todas las distribuciones de Linux estn principalmente creadas en C) y en educacin se considera el lenguaje fundamental para aprender a programar.

(3.2.2) C y C++
Debido al crecimiento durante los aos 80 de la programacin orientada a objetos, en 1986 Bjarne Stroupstrup creo un lenguaje inspirado en Simula pero utilizando la sintaxis del lenguaje C. (6)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

C y C++ pues, comparten instrucciones casi idnticas. Pero la forma de programar es absolutamente diferente. Saber programar en C no implica saber programar en C++

(3.2.3) caractersticas del C


Se dice que el lenguaje C es un lenguaje de nivel medio. La razn de esta indicacin est en que en C se pueden crear programas que manipulan la mquina casi como lo hace el lenguaje Ensamblador, pero utilizando una sintaxis que se asemeja ms a los lenguajes de alto nivel. De los lenguajes de alto nivel toma las estructuras de control que permiten programar de forma estructurada. Al tener caractersticas de los lenguajes de bajo nivel se puede tomar el control absoluto del ordenador. Adems tiene atajos que gustan mucho a los programadores al tener una sintaxis menos restrictiva que lenguajes como Pascal por ejemplo), lo que le convierte en el lenguaje idneo para crear cualquier tipo de aplicacin. Sus caractersticas bsicas son:

Es un lenguaje que incorpora manejo de estructuras de bajo nivel


(punteros, bits), lo que le acerca a los lenguajes de segunda generacin

Es un lenguaje estructurado y modular. Lo que facilita su compresin y


escritura. No obstante al tratarse de un lenguaje muy libre y cercano a la mquina (hay quien dice que es un lenguaje de segunda generacin y media, haciendo referencia a su cercana al lenguaje ensamblador) es posible escribir cdigo muy poco estructurado (algo que no es recomendable y que estos apuntes no contemplan).

Permite utilizar todo tipo de estructuras de datos complejas (arrays, pilas,


colas, textos,...) lo que permite utilizar el lenguaje en todo tipo de situaciones.

Es un lenguaje compilado. El cdigo que se obtiene en C es muy rpido (gracias a ser compilado y a
no alejarse demasiado de los lenguajes de bajo nivel).

Permite crear todo tipo de aplicaciones

(7)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

(3.3) compilacin de programas en C

Ilustracin 1, proceso de compilacin de un programa C

Ya se ha explicado en unidades anteriores que la conversin del cdigo escrito en un lenguaje de programacin (cdigo fuente) puede ser traducido a cdigo mquina mediante un compilador o mediante un intrprete. En el caso del lenguaje C se utiliza siempre un compilador (es un lenguaje compilado). El proceso completo de conversin del cdigo fuente en cdigo ejecutable sigue los siguientes pasos (ver Ilustracin 1): (1) Edicin. El cdigo se escribe en un editor de texto o en un editor de cdigo preparado para esta accin. El archivo se suele guardar con extensin .c Preprocesado. Antes de compilar el cdigo, el preprocesador lee las instrucciones de preprocesador y las convierte al cdigo fuente equivalente. Compilacin. El cdigo fuente resultante en lenguaje C se compila mediante el software apropiado, obteniendo el cdigo en ensamblador equivalente. Ensamblado. El cdigo anterior se ensambla (utilizando software ensamblador, ya que el cdigo que este paso requiere es cdigo en ensamblador) para obtener cdigo mquina. ste cdigo an no es ejecutable pues necesita incluir el cdigo de las libreras utilizadas. ste es el cdigo objeto (con extensin obj) Enlazado. El cdigo objeto se une al cdigo mquina de las libreras y mdulos invocados por el cdigo anterior. El resultado es un archivo ejecutable (extensin .exe en Windows)

(2)

(3)

(4)

(5)

El cdigo enlazado es el que se prueba para comprobar si el programa funciona. La mayora de entornos de programacin tienen un cargador o lanzador que permite probar el programa sin abandonar el entorno. Desde el punto de vista del usuario de estos entornos, slo hay dos pasos: compilar (conseguir el cdigo (8)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

ejecutable) y ejecutar (cargar el cdigo mquina para que el ordenador lo ejecute)

(3.4) fundamentos de C
(3.4.1) estructura de un programa C
Un programa en C consta de una o ms funciones, las cuales estn compuestas de diversas sentencias o instrucciones. Una sentencia indica una accin a realizar por parte del programa. Una funcin no es ms que (por ahora) un nombre con el que englobamos a las sentencias que posee a fin de poder invocarlas mediante dicho nombre. La idea es: nombreDeFuncin(parmetros) { sentencias } Los smbolos { y } indican el inicio y el final de la funcin. Esos smbolos permiten delimitar bloques en el cdigo. El nombre de la funcin puede ser invocado desde otras sentencias simplemente poniendo como sentencia el nombre de la funcin. Como a veces las funciones se almacenan en archivos externos, necesitamos incluir esos archivos en nuestro cdigo mediante una sentencia especial include, que en realidad es una directiva de preprocesador. Una directiva de preprocesador es una instruccin para el compilador con el que trabajamos. El uso es: #include <cabeceraDeArchivoExterno> La directiva include permite indicar un archivo de cabecera en el que estar incluida la funcin que utilizamos. En el lenguaje C estndar los archivos de cabecera tienen extensin h. Los archivos de cabecera son los que permiten utilizar funciones externas (o libreras) en nuestro programa. Una de las libreras ms utilizadas en los programas, es la que permite leer y escribir en la consola del Sistema Operativo. En el caso de C esta librera est disponible al incluir la cabecera stdio.h

(9)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

el primer programa en C En todos los lenguajes de programacin, el primer programa a realizar es el famoso Hola mundo, un programa que escribe este texto en pantalla. En C++ el cdigo de este programa es: #include <stdio.h> int main() { printf("Hola mundo"); return 0; } En el programa anterior ocurre lo siguiente: (1) (2) (3) (4) La lnea include permite utilizar funciones de la librera stdio.h que es la que permite leer y escribir datos por la consola del Sistema Operativo La funcin main es la funcin cuyas instrucciones se ejecutan en cuanto el programa inicia su proceso. La instruccin printf( "Hola mundo") es la encargada de escribir el texto "Hola mundo" por pantalla La instruccin return 0 finaliza el programa e indica (con el valor cero) que la finalizacin ha sido correcta.

(3.5) compilacin de programas C


(3.5.1) generacin bsica de programas en C
Existen muchas posibilidades de generar cdigo ejecutable a partir de cdigo C. Al ser C un lenguaje tan estndar, adems la mayora de las soluciones son de cdigo abierto y gratuitas. En el caso de Linux se incluye un compilador llamado gcc. Es uno de los compiladores ms populares y de hecho los compiladores gratuitos de Windows estn basados en l. Para compilar un programa en C desde Linux basta:

Escribir el programa en un editor de texto (desde los incmodos vi o


emacs a los ms cmodos gedit o los entornos Anjuta o Geany).

Despus se puede ir a la lnea de comandos, acceder al directorio en el


que se creo el programa y ejecutar la orden: gcc nombreArchivo.c o nombreArchivoEjecutable

(10)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

Para probar el programa sera (desde la lnea de comandos):


./nombreArchivoEjecutable En el caso de Windows necesitamos instalar las herramientas necesarias para poder desarrollar programas en C al modo de Linux. Eso implica instalar software que incluya el compilador, ensamblador, etc. de C. La opcin ms interesante (y utilizada) para crear programas en C estndar es el software Mingw (www.mingw.org). Dicho software se puede utilizar para generar programas libremente ya que se est hecho bajo licencia GNU General Public License (la misma que utiliza el sistema Linux) lo que significa que el software se puede utilizar sin restricciones e incluso distribuir como parte de una aplicacin nuestra (sin embargo dicha aplicacin se distribuya con licencia GNU). MigW es un compilador compatible con gcc y su uso en Windows es idntico. Los pasos para utilizarle en Windows seran:

Descargar e instalar MingW desde la pgina www.mingw.org Aadir la carpeta de ejecutables de MingW al path de Windows
(normalmente los archivos ejecutables c:\Mingw\bin) lo cual se hace as: se instalan en la ruta

Pulsar el botn derecho sobre Mi PC y elegir Propiedades Ir al apartado Opciones avanzadas Hacer clic sobre el botn Variables de entorno Aadir a la lista de la variable Path la ruta a la carpeta de ejecutables de MingW

Escribir el programa en C en cualquier editor de cdigo (como el propio


editor de notas) y guardarle con extensin .c

Ir a la lnea de comandos de Windows y entrar en la carpeta en la que


creamos el programa.

Escribir:
gcc nombreArchivo.c o nombreArchivoEjecutable La sintaxis de MingW es la misma que la de Windows.

(11)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

(3.5.2) Entornos de desarrollo integrado (IDEs)


La programacin de ordenadores requiere el uso de una serie de herramientas que faciliten el trabajo al programador. Esas herramientas (software) son:

Editor de cdigo. Programa utilizado para escribir el cdigo.


Normalmente basta un editor de texto (el cdigo en los lenguajes de programacin se guarda en formato de texto normal), pero es conveniente que incorpore: Coloreado inteligente de instrucciones. Para conseguir ver mejor el cdigo se colorean las palabras claves de una forma, los identificadores de otra, el texto de otra, los nmeros de otra,.... Correccin instantnea de errores. Los mejores editores corrigen el cdigo a medida que se va escribiendo. Ayuda en lnea. Para documentarse al instante sobre el uso del lenguaje y del propio editor.

Compilador. El software que convierte el lenguaje en cdigo mquina. Lanzador. Prueba la ejecucin de la aplicacin Depurador. Programa que se utiliza para realizar pruebas sobre el
programa.

Organizador de ficheros. Para administrar todos los ficheros manejados


por las aplicaciones que hemos programado. Normalmente todas esas herramientas se integran en un nico software conocido como entorno de programacin o IDE (Integrate Development Environment, Entorno de desarrollo integrado), que hace ms cmodos todos los procesos relacionados con la programacin. Algunos de los de uso ms habitual:

Para Linux (todos ellos con licencia GNU):


KDevelop. Integrada en el gestor de ventanas KDE Anjuta. Uno de los ms populares, por su facilidad de manejo Geany. Quiz el sucesor del anterior. Eclipse. En realidad funciona tambin para Windows y est ms orientado al lenguaje Java, pero permite programar en C (y C++) y dada su impresionante popularidad merece la pena mencionarlo

(12)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

Para Windows:
Devcpp. Quiz el entorno de programacin ligero ms popular de la actualidad. Con licencia GNU. Utiliza el compilador MingW lo que permite programar fcilmente en C estndar (es en el que se han programado todos los ejemplos de los apuntes y el que se usa como ejemplo). WxDevCpp. Software basado en el anterior utilizando WxWidgets Code::blocks. Con la misma filosofa del anterior, una opcin similar que gana adeptos gana da. Est programa en C y C++ (devcpp est programado en Delphi) lo que le permite ejecutarse para cualquier plataforma. Visual Studio (.NET). Se trata del entorno de programacin desarrollado por Microsoft para su plataforma .NET, aunque permite crear cualquier tipo de aplicacin C/C++ (aunque el lenguaje no es 100% estndar). Hay versiones Express que no incorporan las funcionales de la versin profesional (que evidentemente es de pago) pero que es gratuita. Dicha versin funciona durante 30 das y luego pide registrarse al usuario para poder seguir utilizndola. Borland C++ Builder. Otro de los grandes entornos profesionales de programacin. Con el anterior quiz los mejores (aunque ste es ms respetuoso con el estndar).

(3.5.3) creacin de un programa C en DevCpp


Como ejemplo de uso de un entorno de desarrollo utilizaremos DevCpp. Para ello hay que descargarlo de http://www.bloodshed.net/devcpp.html. Una vez descargado, se instala en el ordenador. Al abrirle por primera vez nos pide crear una cach para acelerar la funcin de completar el cdigo al escribir (que no es imprescindible, pero s interesante). Tras esto tendremos delante la pantalla de inicio. Para crear el primer programa en C con el entorno hay que elegir (suponemos que el men est en castellano):

Archivo-Nuevo-Cdigo fuente Escribir el programa y guardarlo con extensin .c Pulsar la tecla F9


El resultado aparece en una ventana. Una cosa que nos ocurrir por ejemplo al crear el programa Hola Mundo, es que no le veremos porque en la ventana en la que se muestra el resultado, no se hace una pausa.

(13)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

Un truco es hacer esta versin del Hola mundo: #include <stdio.h> #include <stdlib.h> int main(void){ printf("Hola mundo\n"); system("pause"); return 0; }

La librera <stdlib.h> es necesaria para utilizar la instruccin system(pause) que permite hacer una pausa al final. opciones del entorno Dev Cpp Una de las primeras labores con nuestro editor es personalizar el funcionamiento. Algunas opciones interesantes son:

Ilustracin 2, Opciones principales del editor

Opciones principales de edicin. Se encuentran en HerramientasOpciones del editor-Principal. Algunas opciones elegibles en esa pantalla son: Tamao del tabulador. Espacio que dejamos cada vez que pulsamos la tecla tabulador (14)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

Resaltar llaves y parntesis concordantes. Para facilitar no olvidar cerrar llaves ni parntesis Sintaxis resaltada en los archivos. Permite ver el cdigo con diferentes colores segn el tipo de palabra que tengamos Tabuladores inteligentes. Permite que el programa deje espacios detectando si es lo apropiado para el cdigo (puede no funcionar muy bien a veces)

Opciones de visualizacin. Se trata de la segunda solapa del cuadro


anterior. Permite: Cambiar el tipo de letra y tamao del cdigo. Mostrar los nmeros de lnea (y la letra de stos)

Ilustracin 3, Opciones de visualizacin

Opciones de sintaxis. Permite elegir la forma de colorear el cdigo del


editor en funcin del tipo de palabra que sea (palabra clave, texto literal, funcin, etc.). Est en la tercera solapa

(15)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

Ilustracin 4, Opciones de sintaxis, coloreado del cdigo

Opciones de cdigo. Tienes dos posibilidades muy interesantes:


Elementos del men Insertar. Permite colocar una entrada en el men Insertar (que aparece al pulsar el botn derecho sobre la ventana de cdigo) y de ese modo hacer que al elegir una entrada del men se escriba automticamente el trozo de cdigo que deseemos. Es una de las opciones ms interesantes del programa. En el cdigo deseado podemos escribir el smbolo | para indicar donde quedar el cursor tras pegar el cdigo.

Ilustracin 5, Opciones del men Insertar

(16)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

Cdigo por defecto. Se trata de un apartado del cuadro que nos permite escribir el cdigo que deseemos para que sea el que utiliza el programa para colocarle al hacer un nuevo cdigo fuente. Es decir, cuando creemos un nuevo programa aparecer ese cdigo (deberemos asegurar que no tenga errores y colocar todo aquello que sea comn a cualquier programa.

Ilustracin 6, Ejemplo de cdigo por defecto

Opciones de compilacin. En el men Herramientas se pueden elegir


las opciones de compilacin, para controlar la forma en la que se compilar el programa. Permite cambiar el entorno utilizado para compilar (en lugar de MingW utilizar otro compilador, por ejemplo).

Opciones del entorno. Se refiere a opciones generales de


funcionamiento del programa. Se obtienen desde el men Herramientas. Podemos elegir el idioma del programa, el mximo nmero de ventanas que permite abrir, las carpetas en las que se guarda el programa, las extensiones de archivos asociadas al programa,

Atajos de teclado. Tambin en el men de herramientas, permite


seleccionar una tecla para asociarla a una tarea del programa.

(17)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

(3.6) elementos de un programa en C


(3.6.1) sentencias
Los programas en C se basan en sentencias las cuales siempre se incluyen dentro de una funcin. En el caso de crear un programa ejecutable, esas sentencias estn dentro de la funcin main. A est funcin le precede la palabra int. Ahora bien al escribir sentencias hay que tener en cuenta las siguientes normas: (1) (2) (3) Toda sentencia en C termina con el smbolo "punto y coma" (;) Los bloques de sentencia empiezan y terminan delimitados con el smbolo de llave ({ y }). As { significa inicio y } significa fin En C hay distincin entre maysculas y minsculas. No es lo mismo main que MAIN. Todas las palabras claves de C estn en minsculas. Los nombres que pongamos nosotros tambin conviene ponerles en minsculas ya que el cdigo es mucho ms legible as.

(3.6.2) comentarios
Se trata de texto que es ignorado por el compilador al traducir el cdigo. Esas lneas se utilizan para documentar el programa. Esta labor de documentacin es fundamental. De otro modo el cdigo se convierte en ilegible incluso para el programador que lo dise. Tan importante como saber escribir sentencias es utilizar los comentarios. Todava es ms importante cuando el cdigo va a ser tratado por otras personas, de otro modo una persona que modifique el cdigo de otra lo tendra muy complicado. En C los comentarios se delimitan entre los smbolos /* y */ /* Esto es un comentario el compilador har caso omiso de este texto*/ Como se observa en el ejemplo, el comentario puede ocupar ms de una lnea.

(3.6.3) palabras reservadas


Se llaman as a palabras que en C tienen un significado concreto para los compiladores. No se pueden por tanto usar esas palabras para poner nombre a variables o a funciones. La lista de palabras reservadas del C es sta: auto break case double else enum (18) int long register struct switch typedef

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

char const continue default do

extern float for goto if

return short signed sizeof static

union unsigned void volatile while

A estas palabras a veces los compiladores aaden una lista propia. Como C distingue entre maysculas y minsculas, el texto GoTo no es una palabra reservada.

(3.6.4) identificadores
Son los nombres que damos a las variables y a las funciones de C. Lgicamente no pueden coincidir con las palabras reservadas. Adems puesto que C distingue entre las maysculas y las minsculas, hay que tener cuidado de usar siempre las minsculas y maysculas de la misma forma (es decir, nombre, Nombre y NOMBRE son tres identificadores distintos). El lmite de tamao de un identificador es de 32 caracteres (aunque algunos compiladores permiten ms tamao). Adems hay que tener en cuenta que los identificadores deben de cumplir estas reglas:

Deben comenzar por una letra o por el signo de subrayado (aunque comenzar
por subrayado se suele reservar para identificadores de funciones especiales del sistema).

Slo se admiten letras del abecedario ingls, no se admite ni la ni la tilde ni


la diresis, nmeros y el carcter de subrayado

(3.6.5) lneas de preprocesador


Las sentencias que comienzan con el smbolo # y que no finalizan con el punto y coma son lneas de preprocesador (o directivas de compilacin). Son indicaciones para el preprocesador, pero que en el lenguaje C son sumamente importantes. La ms utilizada es #include Que permite aadir utilizar funciones externas en nuestro cdigo, para lo que se indica el nombre del archivo de cabecera que incluye a la funcin (o funciones) que queremos utilizar.

(19)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

(3.7) variables
(3.7.1) introduccin
Las variables sirven para identificar un determinado valor que se utiliza en el programa. En C es importante el hecho de tener en cuenta que una variable se almacena en la memoria interna del ordenador (normalmente en la memoria RAM) y por lo tanto ocupar una determinada posicin en esa memoria. Es decir, en realidad identifican una serie de bytes en memoria en los que se almacenar un valor que necesita el programa. Es decir si saldo es un identificador que se refiere a una variable numrica que en este instante vale 8; la realidad interna es que saldo realmente es una direccin a una posicin de la memoria en la que ahora se encuentra el nmero 8.

(3.7.2) declaracin de variables


En C hay que declarar las variables antes de poder usarlas. Al declarar lo que ocurre es que se reserva en memoria el espacio necesario para almacenar el contenido de la variable. No se puede utilizar una variable sin declarar. Para declarar una variable se usa esta sintaxis: tipo identificador; Por ejemplo: int x; Se declarara x como variable que podr almacenar valores enteros. En C se puede declarar una variable en cualquier parte del cdigo, basta con declararla antes de utilizarla por primera vez. Pero es muy buena prctica hacer la declaracin al principio del bloque o funcin en la que se utilizar la variable. Esto facilita la comprensin del cdigo. Tambin es buena prctica poner un pequeo comentario a cada variable para indicar para qu sirve. A veces basta con poner un identificador claro a la variable. Identificadores como a, b o c por ejemplo, no aclaran la utilidad de la variable; no indican nada. Identificadores como saldo, gastos, nota,... son mucho ms significativos.

(3.7.3) tipos de datos


Al declarar variables se necesita indicar cul es el tipo de datos de las variables los tipos bsicos permitidos por el lenguaje C son:
tipo de datos char rango de valores posibles 0 a 255 (o caracteres simples 1 del cdigo ASCII) tamao en bytes

(20)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

tipo de datos int

float double void

rango de valores posibles -32768 a 32767 (algunos compiladores consideran este otro rango: -2.147.483.648 a 2.147.483.647 3.4E-38 a 3.3E+38 1.7E-308 a 1.7E+308 sin valor

tamao en bytes 2 (algunos 4)

4 8 0

Hay que tener en cuenta que esos rangos son los clsicos, pero en la prctica los rangos (sobre todo el de los enteros) depende del computador, procesador o compilador empleado. tipos enteros Los tipos char e int sirven para almacenar enteros y tambin valen para almacenar caracteres. Normalmente los nmeros se almacenan en el tipo int y los caracteres en el tipo char; pero la realidad es que cualquier carcter puede ser representado como nmero (ese nmero indica el cdigo en la tabla ASCII). As el carcter A y el nmero 65 significan exactamente lo mismo en lenguaje C. tipos decimales En C los nmeros decimales se representan con los tipos float y double. La diferencia no solo est en que en el double quepan nmeros ms altos, sino en la precisin. Ambos tipos son de coma flotante. En este estilo de almacenar nmeros decimales, la precisin es limitada. Cuntos ms bits se destinen a la precisin, ms preciso ser el nmero. Por eso es ms conveniente usar el tipo double aunque ocupe ms memoria. tipos lgicos En C estndar el uso de valores lgicos se hace mediante los tipos enteros. Cualquier valor distinto de cero (normalmente se usa el uno) significa verdadero y el valor cero significa falso. Es decir en el cdigo: int x=1; Se puede entender que x vale 1 o que x es verdadera. Ejemplo: int x=(18>6); printf("%d",x); /*Escribe 1, es decir verdadero */

(21)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

En C++ se aadi el tipo bool (booleano o lgico) para representar valores lgicos, las variables bool pueden asociarse a los nmeros cero y uno, o mejor a las palabras true (verdadero) y false (falso). Ejemplo: bool b=true; //Eso es el equivalente C++ del C int b=1; En C para conseguir el mismo efecto se utilizan trucos mediante la directiva #define (cuyo uso se explica ms adelante) modificadores de tipos A los tipos anteriores se les puede aadir una serie de modificadores para que esos tipos varen su funcionamiento. Esos modificadores se colocan por delante del tipo en cuestin. Son:

signed. Permite que el tipo modificado admita nmeros negativos. En la


prctica se utiliza slo para el tipo char, que de esta forma puede tomar un rango de valores de -128 a 127. En los dems no se usan ya que todos admiten nmeros negativos

unsigned. Contrario al anterior, hace que el tipo al que se refiere use el rango
de negativos para incrementar los positivos. Por ejemplo el unsigned int tomara el rango 0 a 65535 en lugar de -32768 a 32767

long. Aumenta el rango del tipo al que se refiere. short. El contrario del anterior. La realidad es que no se utiliza.
Las combinaciones que ms se suelen utilizar son:
tipo de datos signed char unsigned int long int (o long a secas) long long rango de valores posibles -128 a 127 0 a 65335 -2147483648 a 2147483647 -9.223.372.036.854.775.809 a 9.223.372.036.854.775.808 (casi ningn compilador lo utiliza, casi todos usan el mismo que el long) 3.37E-4932 a 3,37E+4932 tamao en bytes 1 2 4 8

long double

10

Una vez ms hay que recordar que los rangos y tamaos depende del procesador y compilador. Por ejemplo, el tipo long double no suele incorporarlo casi ningn compilador (aunque s la mayora de los modernos). An as conviene utilizar esas combinaciones por un tema de mayor claridad en el cdigo.

(22)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

(3.7.4) asignacin de valores


Adems de declarar una variable. A las variables se las pueden asignar valores. El operador de asignacin en C es el signo =. Ejemplo: x=3; Si se utiliza una variable antes de haberla asignado un valor, ocurre un error. Pero es un error que no es detectado por un compilador. Por ejemplo el cdigo: #include <stdio.h> int main(){ int a; printf("%d",a); return 0; } Este cdigo no produce error, pero como a la variable a no se le ha asignado ningn valor, el resultado del printf es un nmero sin sentido. Ese nmero representa el contenido de la zona de la memoria asociada a la variable a, pero el contenido de esa zona no le hemos preparado, por ello el resultado ser absolutamente aleatorio. Hay que destacar que se puede declarar e inicializar valores a la vez: int a=5; E incluso inicializar y declarar varias variables a la vez: int a=8, b=7, c; Tambin es vlida esta instruccin: int a=8, b=a, c; La asignacin b=a funciona si la variable a ya ha sido declarada (como es el caso)

(3.7.5) literales
Cuando una variable se asigna a valores literales (17, 2.3,etc.) hay que tener en cuenta lo siguiente:

Los nmeros se escriben tal cual (17, 34, 39) El separador de decimales es el punto (18.4 se interpreta como 18 coma 4) Si un nmero entero se escribe anteponiendo un cero, se entiende que est
en notacin octal. Si el nmero es 010, C entiende que es el 8 decimal (23)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

Si un nmero entero se escribe anteponiendo el texto 0x (cero equis), se


entiende que es un nmero hexadecimal. El nmero 0x10 significa 16.

En los nmeros decimales se admite usar notacin cientfica: 1.23e+23 (eso


significa (1,23 1023)

Los caracteres simples van encerrados entre comillas simples, a Los textos (strings) van encerrados entre comillas dobles Hola Los enteros se pueden almacenar como caracteres A o como enteros cortos.
Es ms A es lo mismo que 65. Eso vale tanto para los tipos char como para los int. secuencias de escape En el caso de los caracteres, hay que tener en cuenta que hay una serie de caracteres que son especiales. Por ejemplo como almacenamos en una variable char el smbolo de la comilla simple, si la propia comilla simple sirve para delimitar, es decir: char a=;/*Error*/ Eso no se puede hacer ya que el compilador entiende que hay una mala delimitacin de caracteres. Para resolver este problema y otros se usan los caracteres de escape, que representan caracteres especiales. Todos comienzan con el signo \ (backslash) seguido de una letra minscula, son:
cdigo \a \b \n \r \t \ \ \\ significado Alarma (beep del ordenador) Retroceso Nueva lnea Retorno de carro Tabulador Comilla simple Comilla doble Barra inclinada invertida o backslash

(3.7.6) mbito de las variables


Toda variable tiene un mbito. Esto es la parte del cdigo en la que una variable se puede utilizar. De hecho las variables tienen un ciclo de vida: (1) (2) En la declaracin se reserva el espacio necesario para que se puedan comenzar a utilizar (digamos que se avisa de su futura existencia) Se la asigna su primer valor (la variable nace) (24)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

(3) (4)

Se la utiliza en diversas sentencias (no se puede utilizar su contenido sin haberla asignado ese primer valor. Cuando finaliza el bloque en el que fue declarada, la variable muere. Es decir, se libera el espacio que ocupa esa variable en memoria. No se la podr volver a utilizar.

variables locales Son variables que se crean dentro de un bloque (se entiende por bloque, el cdigo que est entre { y }). Con el fin del bloque la variable es eliminada. La mayora son locales a una determinada funcin, es decir slo se pueden utilizar dentro de esa funcin. Ejemplo: void func1(){ int x; x=5; } void func2(){ int x; x=300; } Aunque en ambas funciones se usa x como nombre de una variable local. En realidad son dos variables distintas, pero con el mismo nombre. Y no podramos usar x dentro de la funcin func2 porque estamos fuera de su mbito. Otro ejemplo: void func(){ int a; a=13; { int b; b=8; }/*Aqu muere b*/ a=b; /*Error! b est muerta*/ }/*Aqu muere a*/ En la lnea a=b ocurre un error de tipo Variable no declarada, el compilador ya no reconoce a la variable b porque estamos fuera de su mbito.

(25)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

variables globales Son variables que se pueden utilizar en cualquier parte del cdigo. Para que una variable sea global basta con declararla fuera de cualquier bloque. Normalmente se declaran antes de que aparezca la primera funcin: #include <stdio.h> int a=3; //La variable a es global int main(){ printf("%d",a); return 0; } En C no se permite declarar en el mismo bloque dos variables con el mismo nombre. Pero s es posible tener dos variables con el mismo nombre si estn en bloques distintos. Esto plantea un problema, ya que cuando se utiliza la variable surge una duda: qu variable utilizar el programa, la ms local o la ms global? La respuesta es que siempre se toma la variable declarada ms localmente. Ejemplo: #include <stdio.h> int a=3; int main(){ int a=5; { int a=8; printf("%d",a); //escribe 8. No hay error } return 0; } En el cdigo anterior se han declarado tres variables con el mismo nombre (a). Cuando se utiliza la instruccin printf para escribir el valor de a, la primera vez escribe 8, la segunda vez escribe 5 (ya que ese printf est fuera del bloque ms interior). Es imposible acceder a las variables globales si disponemos de variables locales con el mismo nombre. Por eso no es buena prctica repetir el nombre de las variables.

(3.7.7) conversin de tipos


En numerosos lenguajes no se pueden asignar valores entre variables que sean de distinto tipo. Esto significara que no podemos asignar a una variable char valores de una variable int. En C no existe esta comprobacin, al ser un lenguaje ms libre. Lo que significa que los valores se convierten automticamente (en realidad el tipo de (26)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

valor es el mismo, es la interpretacin del valor lo que cambia). Pero eso tambin significa que puede haber problemas indetectables, por ejemplo este programa: #include <stdio.h> int main(){ char a; int b=300; a=b; printf("%d %d",a,b); } /* Escribe el contenido de a y de b. Escribe 44 y 300 */ En ese programa el contenido de a debera ser 300, pero como 300 sobrepasa el rango de las variables char, el resultado es 44. Es decir, no tiene sentido, esa salida est provocada por el hecho de perder ciertos bits en esa asignacin. En la conversin de double a float lo que ocurre normalmente es un redondeo de los valores para ajustarles a la precisin de los float.

(3.7.8) modificadores de acceso


Los modificadores son palabras que se colocan delante del tipo de datos en la declaracin de las variables para variar su funcionamiento (al estilo de unsigned, short o long) modificador extern Se utiliza al declarar variables globales e indica que la variable global declarada, en realidad se inicializa y declara en otro archivo. Ejemplo
Archivo 1 int x,y; int main(){ x=12; y=6; } void funcion1(void){ x=7; } Archivo 2 extern int x,y; void func2(void){ x=2*y; }

El segundo archivo utiliza las variables declaradas en el primero modificador auto En realidad las variables toman por defecto este valor (luego no hace falta utilizarle). Significa que las variables se eliminan al final del bloque en el que fueron creadas.

(27)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

modificador static Se trata de variables que no se eliminan cuando el bloque en el que fueron creadas finaliza. As que si ese bloque (normalmente una funcin), vuelve a invocarse desde el cdigo, la variable mantendr el ltimo valor anterior. Si se utiliza este modificador con variables globales, indica que esas variables slo pueden utilizarse desde el archivo en el que fueron creadas. modificador register Todos los ordenadores posee una serie de memorias de pequeo tamao en el propio procesador llamadas registros. Estas memorias son mucho ms rpidas pero con capacidad para almacenar muy pocos datos. Este modificador solicita que una variable sea almacenada en esos registros para acelerar el acceso a la misma. Se utiliza en variables char o int a las que se va a acceder muy frecuentemente en el programa (por ejemplo las variables contadoras en los bucles). Slo vale para variables locales. register int cont; for (cont=1;cont<=300000;cont++){ ... modificador const Las variables declaradas con la palabra const delante del tipo de datos, indican que son slo de lectura. Es decir, constantes. Las constantes no pueden cambiar de valor, el valor que se asigne en la declaracin ser el que permanezca (es obligatorio asignar un valor en la declaracin). Ejemplo: const float pi=3.141592; modificador volatile Se usa para variables que son modificadas externamente al programa (por ejemplo una variable que almacene el reloj del sistema).

(3.8) entrada y salida por consola


Aunque este tema ser tratado con detalle ms adelante. Es conveniente conocer al menos las funciones printf y scanf que permiten entradas y salidas de datos de forma muy interesante. funcin printf La funcin printf permite escribir datos en la consola de salida (en la pantalla). Si lo que se desea sacar es un texto literal se utiliza de esta manera: printf(Hola); (28)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

Lgicamente a veces se necesitan sacar el contenido de las variables en la salida. Para ello dentro del texto que se desea mostrar se utilizan unas indicaciones de formato, las cuales se indican con el signo% seguido de una letra minscula. Por ejemplo: int edad=18; ... printf(Tengo %d aos,edad); /*escribe tengo 18 aos*/ El cdigo %d sirve para recoger el valor de la variable que se indique entendiendo que esa variable tiene valores enteros. Esa variable va separada del texto por una coma. Si se usan ms variables o valores, stos se separan con comas entre s. Ejemplo: int edad=18, edadFutura=19; printf(Tengo %d aos, el ao que viene %d,edad,edadFutura); /*Escribe: Tengo 18 aos, el ao que viene 19 */ Adems del cdigo %d, hay otros que se pueden utilizar:
cdigo %d %i %c %f %e %g %o %x %s %u %li o %ld %p %% significado Entero Entero Un carcter Punto flotante (para double o float) Escribe en notacin cientfica Usa %e o %f, el ms corto de los dos Escribe nmeros enteros en notacin octal Escribe nmeros enteros en notacin hexadecimal Cadena de caracteres Enteros sin signo Enteros largos (long) Escribe un puntero Escribe el signo %

(29)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

Ejemplo: char c=H; int n=28; printf(Me gusta la letra %c y el nmero %d, %s,c,n,adis); /* Escribe: Me gusta la letra H y el nmero 28, adis */ Mediante printf, tambin se pueden especificar anchuras para el texto. Es una de sus caractersticas ms potentes. Para ello se coloca un nmero entre el signo % y el cdigo numrico (i, d, f,...). Ese nmero indica anchura mnima. Por ejemplo: int a=127, b=8, c=76; printf(%4d\n,a); printf(%4d\n,b); printf(%4d\n,c); /* Sale: 127 8 76 */ En el ejemplo se usan 4 caracteres para mostrar los nmeros. Los nmeros quedan alineados a la derecha en ese espacio, si se desean alinear a la izquierda, entonces el nmero se pone en negativo (%-4d). Si se coloca el nmero delante del nmero, el espacio sobrante se rellena con ceros en lugar de con espacios. Ejemplo: int a=127, b=8, c=76; printf(%04d\n,a); printf(%04d\n,b); printf(%04d\n,c); /* Sale: 0127 0008 0076 */ Tambin se pueden especificar los decimales requeridos (para los cdigos decimales, como f por ejemplo). De esta forma el cdigo %10.4f indica que se utiliza un tamao mnimo de 10 caracteres de los que 4 se dejan para los decimales. (30)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

(3.8.2) funcin scanf


Esta funcin es similar a la anterior. slo que sta sirve para leer datos. Posee al menos dos parmetros, el primero es una cadena que indica el formato de la lectura, el segundo (y siguientes) son las zonas de memoria en las que se almacenar el resultado. Por ejemplo, para leer un nmero entero por el teclado y guardarlo en una variable de tipo int llamada a, se hara: scanf(%d,&a); El smbolo &a, sirve para tomar la direccin de memoria de la variable a. Esto significa que a contendr el valor ledo por el teclado. Este otro ejemplo: scanf(%d %f,&a,&b); Lee dos nmeros por teclado. El usuario tendr que colocar un espacio entre cada nmero. El primero se almacenar en a y el segundo (decimal) en b. Otro ejemplo: scanf(%d,%d,&a,&b); En la lectura de textos se pueden especificar formatos ms avanzados. Pero eso lo veremos en el tema 5.

(3.9) operadores
Se trata de uno de los puntos fuertes de este lenguaje que permite especificar expresiones muy complejas gracias a estos operadores.

(3.9.1) operadores aritmticos


Permiten realizar clculos matemticos. Son:
operador + * / % ++ -significado Suma Resta Producto Divisin resto (mdulo) Incremento Decremento

La suma, resta, multiplicacin y divisin son las operaciones normales. Slo hay que tener cuidado en que el resultado de aplicar estas operaciones puede ser un (31)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

nmero que tenga un tipo diferente de la variable en la que se pretende almacenar el resultado. El signo - tambin sirve para cambiar de signo (-a es el resultado de multiplicar a la variable a por -1). El incremento (++), sirve para aadir uno a la variable a la que se aplica. Es decir x++ es lo mismo que x=x+1. El decremento funciona igual pero restando uno. Se puede utilizar por delante (preincremento) o por detrs (postincremento) de la variable a la que se aplica (x++ ++x). Esto ltimo tiene connotaciones. Por ejemplo: int x1=9,x2=9; int y1,y2; y1=x1++; y2=++x2; printf(%i\n,x1); printf(%i\n,x2); printf(%i\n,y1); printf(%i\n,y2);

/*Escribe 10*/ /*Escribe 10*/ /*Escribe 9!!! */ /*Escribe 10*/

La razn de que y1 valga 9, est en que la expresin y1=x1++, funciona de esta forma: y1=x1; x1=x1+1; Mientras que en y2=++x2, el funcionamiento es: x2=x2+1; y2=x2; Es decir en x2++ primero se asigno y luego se incremento. Si el incremento va antes se realiza al contrario.

(3.9.2) operadores relacionales


Son operadores que sirven para realizar comparaciones. El resultado de estos operadores es verdadero o falso (uno o cero). Los operadores son:
operador > >= < <= == != significado Mayor que Mayor o igual que Menor que Menor o igual que Igual que Distinto de

(32)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

(3.9.3) operadores lgicos


Permiten agrupar expresiones lgicas. Las expresiones lgicas son todas aquellas expresiones que obtienen como resultado verdadero o falso. Estos operadores unen estas expresiones devolviendo tambin verdadero o falso. Son:
operador && || significado Y (AND) O (OR) NO (NOT)

Por ejemplo: (18>6) && (20<30) devuelve verdadero (1) ya que la primera expresin (18>6) es verdadera y la segunda (20<30) tambin. El operador Y (&&) devuelve verdadero cuando las dos expresiones son verdaderas. El operador O (||) devuelve verdadero cuando cualquiera de las dos es verdadera. Finalmente el operador NO (!) invierte la lgica de la expresin que le sigue; si la expresin siguiente es verdadera devuelve falso y viceversa. Por ejemplo !(18>15) devuelve falso (0).

(3.9.4) operadores de bits


Permiten realizar operaciones sobre los bits del nmero, o nmeros, sobre los que operan. Es decir si el nmero es un char y vale 17, 17 en binario es 00010001. Estos operadores operan sobre ese cdigo binario. En este manual simplemente se indican estos operadores:
operador & | ~ ^ >> << significado AND de bits OR de bits NOT de bits XOR de bits Desplazamiento derecho de los bits Desplazamiento izquierdo de bits

(3.9.5) operador de asignacin


Ya se ha comentado que el signo = sirve para asignar valores. Se entiende que es un operador debido a la complejidad de expresiones de C. Por ejemplo: int x=5,y=6,z=7; x=(z=y++)*8; printf("%d",x); //Escribe 48 En C existen estas formas abreviadas de asignacin. Esto sirve como abreviaturas para escribir cdigo. As la expresin: x=x+10; (33)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

Se puede escribir como: x+=10; Se permiten estas abreviaturas:


operador += -= *= /= %= significado Suma y asigna Resta y asigna Multiplica y asigna Divide y asigna Calcula el resto y asigna

Adems tambin se permiten abreviar las expresiones de bit: &=, |=, ^=, >>=, <<=

(3.9.6) operador ?
Permite escribir expresiones condicionales. Su uso es el siguiente: Expresin_a_valorar?Si_verdadera:Si_falsa Ejemplo: x=(y>5?A:B); Significa que si la variable y es mayor de 5, entonces a x se le asigna el carcter A, sino se le asignar el carcter B. Otro ejemplo: printf(%s,nota>=5?Aprobado:Suspenso); En cualquier caso hay que utilizar este operador con cautela. Su dominio exige mucha prctica.

(3.9.7) operadores de puntero & y *


Aunque ya se le explicar ms adelante con detalle, conviene conocerle un poco. El operador & sirve para obtener la direccin de memoria de una determinada variable. No tiene sentido querer obtener esa direccin salvo para utilizar punteros o para utilizar esa direccin para almacenar valores (como en el caso de la funcin scanf). El operador * tambin se utiliza con punteros. Sobre una variable de puntero, permite obtener el contenido de la direccin a la que apunta dicho puntero.

(34)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

(3.9.8) operador sizeof


Este operador sirve para devolver el tamao en bytes que ocupa en memoria una determinada variable. Por ejemplo: int x=18; printf(%i,sizeof x); /*Escribe 2 (o 4 en algunos compiladores)*/ Devuelve 2 o 4, dependiendo del gasto en bytes que hacen los enteros en la mquina y compilador en que nos encontremos.

(3.9.9) operador coma


La coma , sirve para poder realizar ms de una instruccin en la misma lnea. Por ejemplo: y=(x=3,x++); La coma siempre ejecuta la instruccin que est ms a la izquierda. Con lo que en la lnea anterior primero la x se pone a 3; y luego se incrementa la x tras haber asignado su valor a la variable y (ya que es un postincremento). No es un operador muy importante y puede dar lugar a fallos; especialmente habra que evitarlo cuando se est empezando a programar.

(3.9.10) operadores especiales


Todos ellos se vern con ms detalle en otros temas. Son:

El operador . (punto). Este operador permite hacer referencia a campos de


un registro. Un registro es una estructura de datos avanzada que permite agrupar datos de diferente tipo.

El operador flecha -> que permite acceder a un campo de registro cuando


es un puntero el que seala a dicho registro.

Los corchetes [], que sirven para acceder a un elemento de un array. Un


array es una estructura de datos que agrupa datos del mismo tipo

(Molde) o (cast). Que se explica ms adelante y que sirve para conversin de


tipos.

(3.9.11) orden de los operadores


En expresiones como: x=6+9/3; Podra haber una duda. Qu vale x? Valdra 5 si primero se ejecuta la suma y 9 si primero se ejecuta la divisin. La realidad es que valdra 9 porque la divisin (35)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

tiene preferencia sobre la suma. Es decir hay operadores con mayor y menor preferencia. Lgicamente el orden de ejecucin de los operadores se puede modificar con parntesis. Por ejemplo: x=(6+9/3; y=(x*3)/((z*2)/8); Como se observa en el ejemplo los parntesis se pueden anidar. Sin parntesis el orden de precedencia de los operadores en orden de mayor a menor precedencia, forma 16 niveles. Los operadores que estn en el mismo nivel significa que tienen la misma precedencia. En ese caso se ejecutan primero los operadores que estn ms a la izquierda. El orden es (de mayor a menor precedencia): (1) (2) ( ) [ ] . -> Lo forman los siguientes:

NOT de expresiones lgicas: ! NOT de bits: ~ Operadores de punteros: * & Cambio de signo: sizeof (cast) Decremento e incremento: ++ -(3) (4) (5) (6) (7) (8) (9) (10) (11) Aritmticos prioritarios: / * % Aritmticos no prioritarios (suma y resta): + Desplazamientos: >> << Relacionales sin igualdad: > < >= <= Relacionales de igualdad: == != & ^ | && (36)

1er curso de administracin de sistemas informticos autor: Jorge Snchez www.jorgesanchez.net

(12) (13) (14) (15)

|| ?: = *= /* += -= %= >>= <<= |= &= ^= , (coma)

(3.10) expresiones y conversin de tipos


(3.10.1) introduccin
Operadores, variables, constantes y funciones son los elementos que permiten construir expresiones. Una expresin es pues un cdigo en C que obtiene un determinado valor (del tipo que sea).

(3.10.2) conversin
Cuando una expresin utiliza valores de diferentes tipos, C convierte la expresin al mismo tipo. La cuestin es qu criterio sigue para esa conversin. El criterio, en general, es que C toma siempre el tipo con rango ms grande. En ese sentido si hay un dato long double, toda la expresin se convierte a long double, ya que ese es el tipo ms grande. Si no aparece un long double entonces el tipo ms grande en el que quepan los datos. El orden de tamaos es: (1) (2) (3) (4) (5) (6) long double double float unsigned long long int

Es decir si se suma un int y un float el resultado ser float. En una expresin como: int x=9.5*2; El valor 9.5 es double mientras que el valor 2 es int por lo que el resultado (19) ser double. Pero como la variable x es entera, el valor deber ser convertido a entero finalmente.

(37)

fundamentos de programacin
(Unidad 3) programacin bsica en lenguaje C

(3.10.3) operador de molde o cast


A veces se necesita hacer conversiones explcitas de tipos. Para eso est el operador cast. Este operador sirve para convertir datos. Su uso es el siguiente, se pone el tipo deseado entre parntesis y a la derecha el valor a convertir. Por ejemplo: x=(int) 8.3; x valdr 8 independientemente del tipo que tenga, ya que al convertir datos se pierden decimales. Este ejemplo (comprar con el utilizado en el apartado anterior): int x=(int)9.5*2; Hace que x valga 18, ya que al convertir a entero el 9.5 se pierden los decimales.

(3.11) ndice de ilustraciones


Ilustracin 1, proceso de compilacin de un programa C ................................................................. 8 Ilustracin 2, Opciones principales del editor ...................................................................................... 14 Ilustracin 3, Opciones de visualizacin ................................................................................................ 15 Ilustracin 4, Opciones de sintaxis, coloreado del cdigo.................................................................16 Ilustracin 5, Opciones del men Insertar.............................................................................................16 Ilustracin 6, Ejemplo de cdigo por defecto ...................................................................................... 17

(38)

También podría gustarte