Está en la página 1de 39

EL LENGUAJE C

1. 2. 3. 4. 5.

CARACTERSTICAS GENERALES ESTRUCTURA DE UN PROGRAMA EN C ELEMENTOS DE C T I P O S D E D AT O S . VA R I A B L E S Y C O N S TA N T E S OPERADRES Y EXPRESIONES

EL LENGUAJE C
CARACTERSTICAS GENERALES

Caractersticas generales

Origen.

Fue desarrollado en 1972 por Dennis Ritchie y Brian Kernighan en los Laboratorios Bell Se implement sobre un DEC PDP-11 usando el SO Unix La idea era crear un lenguaje de propsito general que facilitara la programacin y realizacin de tareas reservadas al ensamblador. En 1983 aparece C++ (orientado a objetos). En 1989 aparece el estndar ANSI C. En 1990 aparece el estndar ISO C (actual estndar de C); WG14 se convierte en el comit oficial del estndar ISO C. Se trata de un lenguaje de propsito general muy adecuado para programacin de SO (sitemas Unix estn en C) Lenguaje relativamente pequeo: solo ofrece sentencias de control sencillas y funciones. La E/S no forma parte del lenguaje, sino que se proporciona a travs de una biblioteca de funciones. Permite la agrupacin de instrucciones. Programacin estructurada. Permite la separacin de un programa en mdulos que admiten compilacin independiente. Diseo modular. Distingue entre maysculas y minsculas Se considera un lenguaje de nivel medio pues, aunque es de alto nivel, mantiene caractersticas del ensamblador Es un lenguaje compilado Permite generar programas de fcil modificacin Su mayores ventajas son la portabilidad y la compatibilidad Es un lenguaje muy flexible Produce cdigo veloz y eficiente La modularidad tiende a incrementar el tiempo de compilacin Es poco legible y bastante crptico, lo que da lugar a un cdigo poco comprensible

Caractersticas generales

Ventajas

Inconvenientes

El Lenguaje C - Caractersticas generales

Entornos de programacin

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. Intrprete o compilador. El software que convierte el lenguaje en cdigo mquina. 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. En el caso de C hay multitud de entornos (a veces llamados simplemente compiladores), algunos interesantes son: Turbo C/C++.

Ahora gratis desde el enlace http://community.borland.com/article/images/21751/tcpp101.zip Ms orientado a C++, versin ms moderna del anterior (y de pago). Compilador C de Microsoft que ya dej de fabricar Uno de los mejores entornos de programacin en C o C++. De libre distribucin y que posee un amigable entorno grfico. (http://www.bloodshed.net/devcpp.html)

Borland C/C++.

Microsoft C/C++.

Dev C/C++.

El Lenguaje C - Caractersticas generales

Compilacin de un programa en C

Edicin. En esta primera fase, el programador debe convertir el algoritmo que haya diseado en instrucciones escritas en C. Para ello, se debe hacer uso de un editor de textos (o con la herramienta equivalente de un IDE), con el cual se obtendr el cdigo fuente del programa. Dicho cdigo fuente se guarda en un archivo con extensin .c (en C) o .cpp (en C++). Preproceso. El preproceso sirve para realizar modificaciones en el cdigo fuente obtenido en la fase de edicin Antes de compilar el cdigo, el preprocesador lee las instrucciones de preprocesador (directivas de compilacin) del programa y las convierte al cdigo fuente equivalente. Compilacin. El compilador traducir ese cdigo fuente (modificado) a cdigo mquina, obteniendo el cdigo objeto (un fichero que normalmente tiene extensin .obj) Enlazado. El cdigo objeto se une al cdigo compilado de las libreras y mdulos invocados por el cdigo del programa. El resultado es un archivo ejecutable (extensin .exe en Windows)

EDITOR

edicin

Cdigo fuente (.c)

PREPROCESADOR

preproceso

Cdigo fuente modificado

COMPILADOR

compilacin

Cdigo objeto (.obj)

Otros cdigos objeto

ENLAZADOR

enlace

Cdigo ejecutable (.exe)

El Lenguaje C - Caractersticas generales

EL LENGUAJE C
ESTRUCTURA DE UN PROGRAMA EN C

Estructura de un programa en C

Todo programa en C est compuesto por dos grandes bloques: Cabecera: Directivas de compilacin Definicin de variables globales Declaraciones de funciones Cuerpo: Funciones: Instrucciones (sentencias) y bloques de instrucciones

Cabecera

El nico elemento obligatorio de la cabecera son las directivas de compilacin, al menos la que hace referencia a la inclusin de la biblioteca estndar de entrada y salida estndar de datos (stdio).

Cuerpo

Est compuesto por una o ms funciones. Una funcin es un programa que puede ser invocado (llamado) desde otro programa. Existe una funcin que est presente en todos los programas escritos en lenguaje C: es la funcin main es la funcin principal, la primera que se ejecuta contiene el bloque de instrucciones principal de un programa su misin es marcar el inicio y fin de la ejecucin de cada programa

El Lenguaje C - Caractersticas generales

Estructura de un programa en C
/*Programa en lenguaje C: Ejemplo1. DOCENA.C*/ #include <stdio.h> main () { int docena; docena = 12; printf ("Una docena son %d unidades\n", docena); }

El bloque de instrucciones de una funcin se encierra dentro de los caracteres abrir llave { y cerrar llave }. Los parntesis "()" escritos despus del nombre de una funcin sirven para indicar que el identificador es de una funcin. El bloque de instrucciones o sentencias de una funcin est formado por:

Instrucciones simples o elementales: son aquellas que representan a las acciones ms pequeas (elementales) que se pueden ejecutar en un programa. siempre van seguidas de un carcter punto y coma (;), el cual indica que la instruccin ha terminado. Instrucciones compuestas: Consisten en un bloque o agrupacin de instrucciones que realizan determinada tarea y va comprendido entre llaves, { indica el comienzo del bloque y } indica el final.

instruccion;

{ instruccion1; instruccion2; ............ instruccionN; }

El Lenguaje C - Caractersticas generales

Estructura de un programa en C

Directivas de compilacin:

Son instrucciones dirigidas al preprocesador del compilador para controlar el citado proceso; generalmente permiten realizar modificaciones en el cdigo fuente antes de la compilacin (prepoceso) Van precedidas por el carcter # No terminan con el carcter ; Principales directivas #include Permite que el compilador inserte automticamente cdigo de otros ficheros fuente (biblotecas de funciones) #define Se usa para definir constantes simblicas y macros Otras permiten realizar compilacin condicional (#if, #else, #elif,...) y para casos especiales (#error, #line, #pragma) Ficheros de cabecera (header) Son los ficheros referenciados por medio de #include Tipos: Ficheros de cabecera de las bibliotecas estndar:

Contienen constantes, macros y declaraciones de las funciones estndar del sistema Tienen extensin .h Hacen referencia a ficheros que contienen el cdigo fuente de las funciones estndar del sistema Las funciones de la biblioteca estndar de C son un conjunto de funciones (subprogramas) que acompaan a todos los compiladores de lenguaje C, y sirven para realizar un gran nmero de tareas.

Ficheros de cabecera de las bibliotecas no estndar incluidas en algunos compiladores. Ficheros de cabecera creados por los usuarios

El Lenguaje C - Caractersticas generales

Estructura de un programa en C

Tiene dos posibles sintaxis: #include <Nombre_Fichero>

Bibliotecas estndar ms importantes


<assert.h>
<ctype.h> <errno.h> <float.h> <limits.h>
Contiene la macro assert, que facilita la depuracin de errores
Funciones de manejo de caracteres Define los cdigos de error Define valores en coma flotante que dependen de la implementacin Define varios lmites que dependen de la implementacin Funciones especficas del pas y del idioma Biblioteca de funciones matemticas Saltos no locales Define valores de seales Listas de argumentos de longitud variable Define algunas constantes comnmente utilizadas Declaraciones de los flujos estndar de E/S Declaraciones diversas Manejo de cadenas de caracteres Funciones de hora del sistema

Indica el preprocesador que el fichero debe buscarse en un directorio estndar del sistema Suele ser el que contiene las libreras estndar del preprocesador (directorio include)

#include Nombre_Fichero

Indica el preprocesador que el fichero debe buscarse inicialmente en el directorio actual (o en el indicado en el nombre del fichero en caso de haber puesto una ruta con el nombre) De no encontrarse el fichero, lo busca en el directorio estndar

<locale.h>
<math.h> <setjmp.h> <signal.h> <stdarg.h> <stddef.h> <stdio.h> <stdlib.h> <string.h> <time.h>

En ambos casos, si no se encuentra el fichero, se genera un mensaje de error

El Lenguaje C - Caractersticas generales

10

EL LENGUAJE C
ELEMENTOS DE UN PROGRAMA EN C

Elementos de C

Bsicamente el C est compuesto por los siguientes elementos: Comentarios: Sirven para incrementar la legibilidad de los programas. No se pueden anidar. Dentro de un comentario no puede aparecer el smbolo /*

/* Este es un comentario que ocupa ms de una lnea */ // Este comentario ocupa una sola lnea

auto break case char const continue default do

double else enum extern float for goto if

int long register return short signed sizeof static

struct switch typedef union unsigned void volatile while

Palabras reservadas Son las denominadas palabras clave, reservadas o instrucciones del lenguaje No pueden ser utilizadas por ningn otro elemento del programa El lenguaje C consta de un total de 32 palabras reservadas Todas van escritas en minsculas

Identificadores Son nombres usados para referenciar una variable o una funcin en un programa Est constituido por una secuencia sin espacios de letras, dgitos y guin bajo (_) El identificador no puede empezar por un dgito Su longitud mxima vara segn el compilador, pero lo ms usual son 32 caracteres Se diferencia entre maysculas y minsculas Variables , Constantes y tipos de datos Operadores y expresiones

El Lenguaje C - Caractersticas generales

12

EL LENGUAJE C
T I P O S D E D AT O S . V A R I A B L E S Y C O N S TA N T E S

Tipos de datos
Tipos de datos
Entero

Palabras clave
int
Simple precisin Doble precisin

Numricos

Bsicos
Carcter
Vaco

Real

float double

char
void

Derivados

Puntero
Estticos Tabla Lista

Complejos

Pila Dinmicos Cola rbol Grafo Estructura

Estructurados

Compuestos

Unin Enumeracin Campos de bit

Definidos por el usuario

typedef

El Lenguaje C - Caractersticas generales

14

Tipos de datos

Al escribir los programas en C, hay que prestarle mucha atencin al tipo de datos: De que forma se almacenan Que rangos de valores pueden tomar En lenguaje C no existen datos de tipo lgico Se pueden simular con datos de tipo entero, considerndose el valor cero (0) como falso, y cualquier otro valor entero como verdadero (para ello, generalmente, se emplea el valor uno (1)). Los datos estructurados y definidos por el usuario resultan de combinaciones de datos bsicos y derivados Los datos derivados (punteros) contienen direcciones de memoria en las que estn almacenados datos de cualquiera de los otros tipos C es un lenguaje de tipado dbil, esto es, se pueden declarar variables como de un tipo y darle usos propios de un tipo distinto. Ejemplo: Se puede declarar una variable de tipo carcter y darle uso como su fuese un entero muy pequeo Los tipos de datos bsicos de C:

El Lenguaje C - Caractersticas generales

15

Tipos de datos

Tipo de datos entero :


Se define con la palabra clave int Permite representar nmeros enteros con signo El rango de sus valores depende del tamao de palabra del P y del SO donde se va a ejecutar el programa Mquinas de 32 bits: int tiene 32 bits (4 bytes) Su rango va de 2147483648 a 2147483647

Tipo de datos real (simple precisin): Se define con la palabra clave float

Usa 32 bits Permite representar nmeros reales en formato de coma flotante de precisin simple Signo: 1 bit Mantisa: 23 bits Exponente: 8 bits Los valores se almacenen en memoria en formato de coma flotante, pero pueden ir expresados en el programa en dos notaciones Coma fija (3.5487601) Exponencial (2.54e-2)

El Lenguaje C - Caractersticas generales

16

Tipos de datos

Tipo de datos real (doble precisin) : Se define con la palabra clave double

Usa 64 bits Permite representar nmeros reales en formato de coma flotante de precisin doble

Signo: 1 bit Mantisa: 52 bits Exponente: 11 bits

Los valores se almacenen en memoria en formato de coma flotante pero, al igual que los float, pueden ir expresados en el programa en dos notaciones

Coma fija Exponencial

Tipo de datos carcter :

Se define con la palabra clave char

Usa 8 bits: rango de valores de -128 a 127 Permite representar Caracteres alfanumricos, normalmente ASCII En un uso menos habitual se puede usar para enteros con valores incluidos dentro del rango Caracteres con cdigos ASCII entre 128 y 255 Como el bit de mayor peso est a 1, se representan internamente en binario como si fueran nmeros negativos Si se hace uso de ellos como caracteres el ordenador traducir el Byte por el carcter correspondiente Si se trabaja con ellos como si fueran nmeros enteros, sus valores sern negativos y estarn entre -128 y -1

El Lenguaje C - Caractersticas generales

17

Tipos de datos

Tipo de datos vaco


Se define con la palabra reservada void Significa que el dato es nulo, por lo que no ocupa espacio en memoria Se usa en dos situaciones nicamente Para indicar que una funcin no retorna ningn dato Para indicar que una funcin no tiene argumentos Para definir un puntero genrico (no se conoce el tipo de dato al que va a apuntar) Ejemplos void ImprimeDatos(int x); int DevuelveNatural(void); void *punt;

El Lenguaje C - Caractersticas generales

18

Tipos de datos. Modificadores

Permiten modificar el rango por defecto de un tipo de datos Se ponen precediendo al tipo de dato Hay cuatro signed unsigned short long

Se permiten las siguientes combinaciones signed int (equivale a int) unsigned int short int signed short int (equivale a short int) unsigned short int long int (equivale a int) * signed long int (equivale a int)* unsigned long int (equivale a unsigned int)* signed char (equivale a char) unsigned char long double

El Lenguaje C - Caractersticas generales

19

Definicin de variables

Definir o declarar una variable es reservar espacio en memoria para poder almacenar el dato y hacer uso del mismo en un programa. Una declaracin asocia un tipo de datos determinado a una o ms variables; cada variable tiene un identificador o nombre que permite acceder a l. Deben declararse todas las variables antes de su uso. Segn dnde se definan, existen dos tipos de variables Variables locales

Variables globales

Se definen dentro de las funciones (o dentro dun bloque de instrucciones) Slo son accesibles desde la funcin (o bloque) en la que se declaran

Definidos fuera de las funciones Son accesibles desde cualquier funcin

Sintaxis: Slo son obligatorios el tipo de dato y el identificador Opcionalmente, una variable puede ser inicializada al mismo tiempo que se define. Pueden declararse varias variables iguales (mismo tipo) separando sus identificadores por medio de , . La definicin de variables es unha instruccin por lo que debe acabar en ; Tipo_de_dato Identificador [= <Valor inicial>];

Ejemplos int j;

int n, x=24, y; float area=2.54e+2; float iva=0.16, h=-0.25E+3, cal; double area=2.54e+2; double num_e=2.7182818284590452, c; char letra; char car=k, s;

Para asignar (inicializar) un carcter a una variable tipo char, se puede hacer poniendo elcarcter encerrado entre comillas simples, o indicando el cdigo ASCII correspondiente en decimal, octal o hexadecimal: char c=a; o char c=97; o char c=0x61; (en hexadecimal) o char c=0141; (en octal)

El Lenguaje C - Caractersticas generales

20

Definicin de variables

Declaracin de variable: tipo Nombre (opcionalmente =valor) Asignacin: variable = expresin


/* ejemplo 2.- multiplica dos pantalla */ #include <stdio.h> main() { int multiplicador; /*defino int multiplicando; /*defino int res; /*defino resultado nmeros enteros y muestra el resultado por

multiplicador como un entero */ multiplicando como un entero */ como un entero*/

multiplicador = 1000; /*les asigno valores*/ multiplicando = 2; res = multiplicador*multiplicando; printf("Resultado = %d",res); /*muestro resultado en pantalla*/ }

/* ejemplo 3.- .- multiplica dos nmeros enteros y muestra el resultado por pantalla utiliza definicin mltiple de variables*/ #include <stdio.h> main() { int multiplicador, multiplicando; /*defino mltiples variables*/
multiplicador = 1000; /*les asigno valores*/ multiplicando = 2; printf("Resultado = %d", multiplicador*multiplicando); /*muestro el resultado por pantalla*/ }

El Lenguaje C - Caractersticas generales

21

Constantes

Una constante puede ser de tipo entero, real, carcter, de cadena. Se pueden referenciar en un programa : Por su valor (constantes literales) Por un nombre (identificador)

Para expresar una constante con un nombre, la constante debe ser declarada previamente En C, para representar a las constantes, se utilizan constantes simblicas: Una constante simblica representa (sustituye) a una secuencia de caracteres, en vez de representar a un valor (dato almacenado en memoria). Para declarar una constante simblica, en lenguaje C, se utiliza la directiva del preprocesador #define : #define nombre_constante secuencia_de_caracteres Ejemplos

#define #define #define #define

PI 3.141592 NUMERO_E 2.718281 PI 3.141592, NUMERO_E 2.718281 NOMBRE Pedro Alvarez

Tambien se puede definir una costante por medio de la definicin de una variable , indicando que su valor no puede ser alterado, usando el modificador const: #define PI 3.141592 const Tipo_de_dato Identificador = Valor;

Ejemplos
const int x = 25; const float iva = 0.16, PI = 3.1416;

main() { float area, radio; ... }

El Lenguaje C - Caractersticas generales

22

Constantes

Constantes literales numricas:


Las constantes numricas enteras son, por defecto, de tipo int, y las constantes numricas reales son de tipo double. Estos valores por defecto pueden cambiarse aadiendo al final de las constantes u o U, l o L, f F. ejemplos

1235U, 43000U (entero sin signo) 1950000UL, 25UL (entero tipo long sin signo) 0.27182e+1F, 3.1416F (real tipo float) -195e+25L (real tipo lonf double)

Los valores enteros se pueden expresar, adems de en decimal, en: Octal Se debe usar como primer dgito del nmero el 0 : 026, -0710 Hexadecimal Se deben preceder los dgitos y letras por 0x o por 0X : -0X12B4A, 0xA2 En las constantes de tipo real debe aparecer el carcter punto (.), o el carcter (e) o (E) seguido del exponente, del cual tambin puede indicarse su signo con los caracteres (+) y (-). Los signos del exponente y del nmero en s, por omisin, son positivos ejemplos

8.12 000.333 (Los ceros a la izquierda no son significativos) +1111.809 -3200. (Tambin se puede escribir -3200.0) .56 (Tambin se puede escribir 0.56)

400.e-3 2000E+2 +65.65E+2 3040e2 .7e2

El Lenguaje C - Caractersticas generales

23

Constantes

Constantes tipo carcter:

Las constantes char se indican poniendo un carcter encerrado entre comillas:

a, B, 4, ?

Cuando se escribe una secuencia (cadena) de caracteres, en lugar de poner cada carcter entre comillas simples, se pone el total de caracteres entre comillas dobles

Los datos no se imprimieron por pantalla \tNo lo hizo\n\tLo hice yo (vanse las secuencias de escape)

A diferencia de otros lenguajes, con las constantes char se pueden realizar operaciones aritmticas (tngase en cuenta que el dato est almacenado como numero entero de 8 bits, con lo que se le puede realizar cualquier operacin aritmtica) A + 2 equivale a C (65+2) A + 32 equivale a a (65+32) D + 5 equivale a y (68+53) Se pueden representar asimismo caracteres no imprimibles, existiendo tres notaciones Octal Escrito entre comillas simples se escribe la notacin del carcter correspondiente en octal precedida de \0

\007 (pitido), \040 (espacio en blanco)

Hexadecimal Escrito entre comillas simples se escribe la notacin del carcter correspondiente en octal precedida de \x
\x20 (espacio en blanco)

Secuencias de escape Se preceden por \ ciertos smbolos representativos

El Lenguaje C - Caractersticas generales

24

Tipos de datos

Tipo de datos carcter : secuencias de escape

Cdigo
\a \b \f \n

Valor
0x07 0x08 0x0C 0x0A

Smbolo
BEL BS FF LF Pitido

Significado
Retroceso (backspace) Salto de formato (formfeed) Nueva lnea

\r
\t \v \\

0x0D
0x09 0x0B 0x5c

CR
HT VT \

Retorno de carro
Tabulador horizontal Tabulador vertical Barra invertida (backslash)

\
\ \0 \?

0x27
0x22 0x00 0x3F

Comilla simple (apstrofo)


Comilla doble Carcter nulo (\000) Interrogacin

El Lenguaje C - Caractersticas generales

25

Tipos de datos. Modificadores de acceso


Preceden a la definicin de un dato y son opcionales Se usan para controlar la forma en que se modifican los datos Hay dos: const, volatile Pueden usarse ambos a la vez, yendo const siempre el primero Especifica que un dato tiene un valor constante y, por lo tanto, no puede ser modificado durante la ejecucin del programa A la constante se le reserva un espacio de almacenamiento en memoria y se referencia en el programa por medio de su identificador En la declaracin la constante es inicializada a un valor que se hace permanente Pueden usarse en los parmetros de una funcin para indicar que dichos parmetros no pueden ser modificados

const

Ejemplos const int x = 25; const float iva = 0.16, PI = 3.1416; SumaTotal (const int datos);

volatile

Indica al compilador que el valor de una variable puede ser modificado de forma no especificada en el programa Esto puede ocurrir cuando la direccin de memoria de una variable se pasa a rutinas del sistema que puedan modificarla

Ejemplos volatile float R; volatile int p;

El Lenguaje C - Caractersticas generales

26

Tipos de datos. Clases de almacenamiento


Especifica la forma en que se almacenar el dato Hay cuatro especificaciones auto Es la opcin por defecto si no se indica clase de almacenamiento extern Se utiliza al declarar variables globales e indica que la variable global declarada, en realidad se inicializa y declara en otro archivo. 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. register Este modificador solicita que una variable sea almacenada en los registros internos del procesador 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. Se vern en detalle en el tema de funciones.

Sintaxis general de definicin de una variable:

<ClaseDeAlmacenamiento> <ModificadorDeAcceso> <ModificadorDeTipo> Tipo_de_dato Identificador [= <Valor inicial>]

El Lenguaje C - Caractersticas generales

27

EL LENGUAJE C
OPERADORES Y EXPRESIONES

Tipos de operadores

Un operador indica el tipo de operacin a realizar sobre los operandos (datos) que acta. Los operandos pueden ser: Constantes (expresadas por su valor o con un nombre (identificador)). Variables. Llamadas a funciones. Elementos de formaciones (arrays). Una expresin es una combinacin de operandos y operadores y, en funcin del resultado de evaluar la expresin, puede ser: De carcter (devuelve un carcter representable por el ordenador). Aritmtica (devuelve un nmero entero o real). De cadena (devuelve una cadena). Lgica (devuelve un valor lgico: verdadero o falso)

Tipos de operadores Indicadores de expresin Aritmticos Relacionales y lgicos Para tratamiento de bits Asignacin

Coma Tamao De conversin de tipo (casting) Para punteros y estructuras Condicional

Indicadores de expresin Usados para indicar la prioridad de las operaciones a realizar Parntesis ( ): determina la mxima prioridad en un expresin, empezando por los ms internos Ejemplo: ((a/(b+c)))/(m+n)*(p+q) Corchetes [ ] Sirven para encerrar los ndices de los arrays. Ejemplo: A[15]

El Lenguaje C - Caractersticas generales

29

Operadores aritmticos
Tipo Operador Signo negativo Smbolo

++ + * /

Se usan para efectuar operaciones de tipo aritmtico Los hay de dos tipos Unarios/Monarios Trabajan con un nico operando Binarios Trabajan con dos operandos

Monarios

Incremento Decremento Suma Resta

Binarios

Producto Divisin

% Mdulo Incremento (++) Se usa para aumentar el valor de su operando en 1 El operador puede ir antes o despus del operando: En ambos casos el operando ve aumentado su valor en 1, lo que cambia es cundo asignamos operando y operador a otra variable Operador como sufijo Primero se hace la asignacin, luego se incrementa la variable Ejemplo x=15; y=x++; (equivale a y=x; x=x+1;) (y=15, x=16)

Operador como prefijo Primero se incrementa la variable, luego se hace la asignacin Ejemplo x=10; y=++x; (equivale a x=x+1; y=x;) (y=11, x=11)

Decremento (--) Es igual en todo al incremento, excepto en que, en lugar de aumentar, se reduce en 1 el valor del operando

El Lenguaje C - Caractersticas generales

30

30

Operadores aritmticos

Divisin (/) Permite realizar la divisin entre dos operandos. Su funcionamiento depende del tipo de los operandos. Si ambos son enteros, el operador da como resultado un cociente entero (siempre queda un valor de resto). Ejemplo: 9/5 da como resultado 1 Si alguno de ellos no es entero, el operador calcula la divisin real. Ejemplo: 15.6/3 da como resultado 5.2 Mdulo (%) Permite hallar el resto de una divisin en la que ambos operandos son enteros. No se puede usar en ningn otro caso. El resto obtenido tambin es entero. Ejemplo: 9%5 da como resultado 4 Precedencia de los operadores aritmticos La prioridad va de arriba a abajo en la tabla. En el caso de encontrarse dos smbolos con el mismo nivel de prioridad se empieza por el que se est ms a la izquierda en la expresin. Smbolo Prioridad

++

* / %
+

El Lenguaje C - Caractersticas generales

31

Operadores relacionales y lgicos


Se utilizan para efectuar operaciones comparativas y lgicas, obtenindose como resultado un valor verdadero o falso En realidad, el resultado obtenido es numrico y puede tomar dos valores Resultado falso: 0 Resultado verdadero: 1 A la hora de evaluar cualquier expresin lgica se toma como verdadero cualquier valor que no sea 0. && y || se evalan de izquierda a derecha. ! se evala de derecha a izquierda.

Operadores relacionales Operador Significado

<
<= > >= == !=

Menor que
Menor o igual que Mayor que Mayor o igual que Igual Distinto

Ejemplos

Operadores lgicos 0 && 1 = 0 (Falso) 10 && 15 = 1 (Verdadero) 0 || 3 = 1 (Verdadero) !(5+3<4) || -5 = 1 (Verdadero) 3==2 && 8!=5 = 0 (Falso) Operador Significado AND, y, Conjuncin OR, o, Disyuncin NOT, no, Negacin

&& || !

El Lenguaje C - Caractersticas generales

32

Operadores para tratamiento de bits


Se usan para llevar a cabo operaciones a nivel de bit Los operandos usados deben ser de tipo char Int

Operador | & ^ ~ >> <<


Bit A 0 0

Descripcin OR (O) AND (Y) XOR (O exclusivo) Complemento a uno o negacin Desplazamiento a la derecha Desplazamiento a la izquierda

Desplazamiento de bits a la derecha (>>) Los bits desaparecen por la derecha Se introducen 0s por la izquierda Desplazamiento de bits a la izquierda (<<) Los bits desaparecen por la izquierda Se introducen 0s por la derecha

Bit B 0 1 0

~A 1 1 0

A&B 0 0 0

A|B 0 1 1

A^B 0 1 1

Ejemplos con datos de 8 bits:


5 & 3 = 1 1 1 0 1 1 0 10 | 2 = 10 ~7 = 248 (00000111 => 11111000) 10 ^ 7 = 13 202 >> 3 = 25 (11001101 se desplaza 3 bits a la derecha => 00011001) 102 << 2 = 152 (01100110 => 10011000 , debera dar 408, pero slo hay 8 bits => Se pierde el ms significativo)

El Lenguaje C - Caractersticas generales

33

Operadores de asignacin

Se utilizan para asignar a una variable el resultado de una expresin. Forma general: identificador = expresin ; Una asignacin es una sentencia, por lo que debe finalizar con ; Hay dos tipos: Simple Compuesto Simple

Se usa el smbolo = A la variable escrita a la izquierda se le asigna el valor resultante de la expresin situada a la derecha Ejemplos
Media = Suma/n; beneficio = ingresos gastos; 1 a j se le asigna 5 2 a i se le asigna el valor de j

En asignaciones mltiples, hai que tener en cuenta que las asignaciones se efectan de derecha a izquierda:

En i = j = 5;

Compuesto Usa dos smbolos concatenados : El primero es un smbolo de operacin de entre los siguientes: + * / % << >> & ^ |, y el segundo es el de la asignacin simple (=) Ejemplos x *= 5; equivale a x = x * 5;
suma += b; m += y - 3; area /= s; equivale a equivale a equivale a suma = suma + b; m = m + y - 3; area = area/s;

El Lenguaje C - Caractersticas generales

34

Operador coma y operador de tamao

Operador coma (,) Se usa para separar dos expresiones dentro de una expresin total. Lo que se realiza es una secuencia de operaciones, primero la de la izquierda y, a continuacin, la de la derecha. Se usa en dos situaciones Para asignar el resultado de una expresin que previamente requiere hallar el resultado de otra expresin. Se evala primero la expresin de la izquierda y la de la derecha se convierte en el valor de la expresin total Ejemplo: a = (n=10, 3*n+x); equivale a n = 10; a = 3*n + x; Para realizar varias operaciones en un bucle de tipo for: Ejemplo: for (i=0, j=20; i<j+5; i++) equivale a j=20; for (i=0; i<j+5; i++) Operador de tamao (sizeof) Se utiliza para obtener el tamao en Bytes de un dato o de un especificador de tipo de dato. Sintaxis: Con especificador de tipo: El especificador se pone entre parntesis sizeof(double); Con datos: El parntesis es opcional y se usa el identificador del dato int x; sizeof(x); int n=14; sizeof n;

El Lenguaje C - Caractersticas generales

35

De conversin de tipo y operador condicional

Conversin de tipo Usado para convertir el tipo de dato de un operando utilizado en una expresin. Sintaxis: (tipo)operando Es importante notar que el tipo del dato permanece inalterado: nicamente se convierte para la expresin en la que se lleva a cabo la conversin. Ejemplo El valor de c tras la asignacin es 1, cociente de dividir 9 entre 5 . int b = 9; El valor de a tras la asignacin es 1.8, resultado de convertir el float a, c; valor de b a real y luego dividir por 5. c = b/5; b sigue siendo 9 y de tipo entero. a = (float)b/5; Operador condicional Se usa para realizar una instruccin alternativa doble mediante una condicin. Es un operador ternario, esto es, precisa 3 operandos, que pueden ser expresiones. Sintaxis: Variable = Expresin1 ? Expresin2 : Expresin3

abs = (x<0) ? x : x;

Equivale a
Si(x<0) abs = x; Sino abs = x; FinSi

Se evala la Expresin1. Si es cierta se evala la Expresin2 y su resultado se toma como resultado de la expresin total. En caso contrario, se toma como resultado el resultante de calcular la Expresin 3

Operadores para punteros y estructuras Ambos tipos de operadores se vern en los temas referentes a punteros y estructuras

El Lenguaje C - Caractersticas generales

36

Orden de prioridad entre los operadores


Prioridad Operador Significado Prioridad Operador Significado

( ) [ ] . -> ! ~ ++ -* & (tipo) Sizeof * / % + >> <<

Parntesis y llamada a funcin Subndice de tabla Campo de estructura. Punto Campo de estructura. Flecha NOT lgico Complemento a 1 Signo menos Incremento Decremento Indireccin para punteros Direccin de una variable Conversin de tipo Tamao Multiplicacin Divisin (real y entera) Mdulo (Resto de divisin entera) Suma Resta Desplazamiento a la derecha Desplazamiento a la izquierda

< <= > >= == != & ^ | && || ?:

Menor Menor Mayor Mayor

que o igual que que o igual que

7 8 9 10 11 12 13 14 15

Igual a Distinto de AND a nivel de bit XOR a nivel de bit OR a nivel de bit AND lgico OR lgico Condicional Asignacin Coma

= += -= *= /= %= <<= >>= &= ^= |=


,

El Lenguaje C - Caractersticas generales

37

Expresiones y conversiones de tipo


Una expresin es un conjunto de operandos enlazados por medio de operadores. Tras efectuar una operacin se obtiene un determinado resultado cuyo tipo depender del tipo de los operandos. Se presentan dos posibilidades: Operandos del mismo tipo: El resultado ser del mismo tipo que los operandos Tipo Operando A Tipo Operando B Operandos de distinto tipo: char Conversin de tipo a partir de los tipos de los operandos int
short int char short int int char short int int long int char short int int long int float long double signed *

Tipo resultado int

Existen dos clases de conversiones de tipo: Conversiones de tipo en la evaluacin de una expresin Tienen lugar cuando se realizan operaciones con datos de tipos distintos Conversiones de tipo en las asignaciones Se producen cuando a una variable de un tipo se le asigna un valor de un tipo diferente Conversin de tipo en expresiones: Cuando se tienen dos operandos con tipos distintos se promociona el tipo de menor nivel al de mayor, para evitar que se produzca prdida de informacin.

long int

long int

float

float

double

double

* unsigned *

long double unsigned *

* Significa cualquier tipo

El Lenguaje C - Caractersticas generales

38

Expresiones y conversiones de tipo

Conversiones de tipo en asignaciones: El tipo del resultado situado a la derecha de la asignacin se convierte al tipo de la variable. Se puede dar una de las dos siguientes situaciones: Promocin del tipo El tipo de la variable es de mayor nivel que el del resultado. No hay prdida de informacin en la asignacin. Ejemplos: float a=375; int b=H; long int c=-45; double d=9.6; Prdida de informacin El tipo de la variable es de menor nivel que el del resultado. Al hacer la asignacin se pierde informacin significativa. Ejemplos: char e=450; short int f=520745; int g=75.45; float h=1.58e-62;

El Lenguaje C - Caractersticas generales

39

También podría gustarte