martes, 27 de mayo de 2014

Operadores, Constantes & Variables

Operadores

C es un lenguaje muy rico en operadores incorporados, de hecho, C dota de un mayor significado a los operadores mas que los otros lenguajes de computadora. C define cuatro clases de operadores: 
  • Aritméticos 
  • Relacionales 
  • Lógicos 
  • A nivel bits 

El operador de asignación

En C se pude usar el operador de asignación en cualquier expresión válida. Este no es el caso de la mayoría de los demás lenguajes (Pascal, Basic, Fortran), que tratan el operador de asignación como un caso especial de sentencia . La forma general del operador de asignación es: 

nombre_de_variable=expresión; 

donde la expresión puede ser tan simple como una constante o tan compleja como se requiera. El lenguaj C utiliza únicamente un signo de igualdad para señalar la asignación 

Asignación Múltiple

C permite asignar a muchas variables el mismo valor utilizando asignaciones multiples en una sola sentencia. Por ejemplo el siguiente fragmento asigna el valor 0 a las variables x,a,w: 

x = a =  w = 0; 

 Operadores Aritméticos

Operador                       Accion 
-                                      Resta, también menos monario 
+                                     Suma
*                                     Multiplicación 
/                                      División
%                                   División Modular 
--                                     Decremento
++                                   Incremento

Los operadores +,-,*,/ operan en C como en la mayoría de los lenguajes de computadora. Pueden aplicarse a casi todos los tipos de datos predefinidos en C. Cuando se aplica / a un entero o a un carácter, cualquier resto es truncado. Por ejemplo 5/2 sera 2 en una división de números enteros. 
En el lenguaje C, el operador % de división en modulo, obtiene el resto de una división entera. Por ello, % no puede ser aplicado a los datos de tipo flotante. 

Incremento y Decremento 
C contiene dos operadores muy útiles que generalmente en otros lenguajes de computadora no están presentes. 
El operador ++ añade 1 a su operando y -- le resta 1. En otras palabras: 
x = x + 1;  es la misma expresión que  ++ x;  y   x = x - 1; es igual que  - - x; , el orden entre el operando y el operador no tiene importancia, es lo mismo escribir  ++ x;  ó  x + +; 

La mayoría de los compiladores de C generan un código objeto muy rápido y eficiente para las operaciones de incremento y decremento, por esta razón, se deben usar los operadores siempre que sea posible. 
Los operadores del mismo nivel de precedencia (jerarquía) son evaluados por el compilador de izquierda a derecha: Por supuesto, se pueden utilizar paréntesis para alterar el orden de evaluación, estos fuerzan a que una operación o un conjunto de operaciones tengan un nivel de precedencia mayor. 

La precedencia (jerarquía) de los operadores aritméticos es la siguiente: 
mayor             ++ -- 
                       - 
                      * / % 
menor             + - 

Operadores Lógicos y Relacionales 

Operadores relacionales 
Operador                          Acción 
>                                       Mayor que 
>=                                    Mayor o igual que 
<                                       Menor que 
<=                                    Menor o igual que 
= =                                   Igual 
! =                                    Diferente de 

Operadores lógicos 
Operador                          Acción 
& &                                   (Y) 
| |                                       (O) 
!                                         (NO)  

En el termino operador relacional  la palabra relacional se refiere a la relación entre unos valores y otros. En el termino operador lógico, la palabra lógico se refiere a las formas en que esas relaciones pueden conectarse entre si. 
La clave de los conceptos  de operadores lógicos y relacionales es la idea de Cierto-TRUE o Falso-FALSE. En C, es cierto cualquier valor distinto de cero. Falso es 0. Las expresiones que utilizan los operadores relacionales y lógicos devuelven el valor 1 en caso de cierto y 0 en caso de falso. 
La tabla de verdad para los operadores lógicos se muestra aquí usando unos y ceros. 

p       q          p&&q       p||q      !p 
0       0              0             0         1 
0       1              0             1         1 
1       1              1             1         0 
1       0              0             1         0 

Tanto los operadores relacionales como los lógicos tienen un nivel de precedencia menor que los operadores aritméticos. Esto significa que la expresión 10 > 1+12 se evalúa como si se hubiera escrito 
10> (1+12), el resultado en cualquier caso es Falso.  
La precedencia de los operadores relacionales y lógicos es la siguiente: 

mayor            ! 
                       >   >=   <    <=  
                      ==    != 
                      &&
menor            | | 

Como en el caso de las expresiones aritméticas, se pueden usar paréntesis para alterar el orden  natural de evaluación en una expresión racional o lógica. 

El operador ? 
C contiene un operador muy potente y conveniente que puede usarse para sustituir ciertas sentencias de la forma if-then-else. El operador ternario ? toma la forma 
Exp 1 ? Exp 2 : Exp 3 

donde Exp1, Exp2 y Exp 3 son expresiones, el operador ? actúa de la siguiente forma: evalúa Exp 1. Si es cierta, evalúa Exp2 y toma ese valor para la expresión. Si Exp1 es falsa, evalúa Exp3 tomando su valor para la expresión. Por ejemplo, en : 
x = 10 
y  = x > 9 ?  100 : 200; 
a y se le asigna el valor de 100. Si x hubiera valido menos que 9, y habría recibido el valor de 200.   




Constantes 


Las constantes en C se refieren a valores fijos que no pueden ser alterados por el programa. Pueden ser cualquier tipo de datos básicos, la forma en que se representa cada constante depende de su tipo.
Ejemplos: 
const float pi = 3.1416; 
const char vocales[ ] = “a,e,i,o,u”; 




Constantes en Cadena 

C soporta otro tipo de constante: la cadena. Una cadena es una secuencia de caracteres encerrados en dobles comillas. Por ejemplo, "esto es una prueba", es una cadena, pero aunque C permite definir constantes de cadena, no tiene formalmente un tipo de datos cadena. No deben confundirse las cadenas con los caracteres. Una constante de carácter ira entre comillas irá entre comillas simples, como 'a', sin embargo, "a" es una cadena que contiene solo una letra. 

Variables

Una variable es una posición de memoria con nombre que se usaba para mantener un valor que pude ser modificado por el programa. Todas la variables en C han de ser declaradas antes de poder usarlas. La forma general de declaración es: 
      tipo lista_de_variables; 
Aquí, tipo debe ser un tipo de dato válido de C con cualquier modificador y lista_de_variables puede consistir en uno o mas nombres de identificadores separados por comas. 
El nombre de una variable en C no tiene nada que ver con su tipo. 

Donde se declaran las variables 

Existen tres sitios básicos donde se pueden declarar variables: dentro de las funciones, en la definición de parámetros de funciones y fuera de todas las funciones. Estas variables son respectivamente, las variables locales, los parámetros formales y las variables globales. 

Variables Locales   
Las variables que se declaran dentro de una función, se denominan variables locales. Este tipo de variables no son reconocidas fuera de su propio bloque de código, recordando que un bloque de código comienza con unas llaves abiertas y concluye con unas cerradas. 
Las variables locales sólo existen mientras se está ejecutando el bloque de código en el que son declaradas. Es decir, la variable local se crea al entrar en el bloque y se destruye al salir de el. 

Parámetros formales 
Si una función va a usar argumentos, debe declarar las variables que van a aceptar los valores de los argumentos. Esas variables son los parámetros formales de la función. Se comportan como cualquier otra variable local de la función. 

Variables Globales 
Las variables globales se conocen a lo largo de todo el programa y se pueden usar en cualquier parte del código. Ademas mantienen su valor durante toda la ejecución del programa. Las variables globales se crean al declararlas en cualquier parte fuera de la función. Pueden ser accedidas por cualquier expresión independientemente de la función en la que se encuentre la expresión. 

Inicialización de variables 

Colocando el signo igual y una constante después del nombre de una variable, se puede dar en C, a la mayoría de las variables, un valor a la vez que se declaran. La forma general de la inicialización es la siguiente: 

            tipo nombre_de_variable= constante 















Expresiones en C

Proceso de Programación 

1. Definición y análisis del problema. 

2. Diseño de algoritmos. 
- diagrama de flujo; 
- pseudocódigo. 

3. Codificación del programa. 

4. Depuración y verificación del programa. 

5. Documentación. 

6. Mantenimiento.
   

Los cinco tipos de datos básicos 

Existen 5 tipos de datos atómicos en C: carácter, entero, coma flotante, coma flotante de doble precisión y sin valor (char, int, float, double y void, respectivamente). 
Normalmente un carácter es 1 byte y un entero a menudo es de 2 bytes, el estándar ANSI  estipula únicamente el rango mínimo para cada tipo de dato, pero no su tamaño en bytes.
Los valores del tipo char se usan normalmente para guardar valores definidos en el juego de caracteres ASCII. El rango de los tipos float y double  normalmente se dan en dígitos de precisión. El tipo void, o bien declara explicitamente una función como que no devuelve valor alguno o crea puntos genéricos.  

La siguiente tabla muestra todos los tipos de datos definidos por el estándar ANSI 

TIPO                                  Tamaño aprox en bits                         Rango Minimo
  • char                                          8                                           -127 a 127 
  • unsigned char                            8                                           0 a 255 
  • signed char                                8                                            -127 a 127
  • int                                             16                                         -32 767 a 32 767 
  • unsigned int                              16                                           0 a 65 535
  • signed int                                  16                                            -32 767 a 32 767 
  • short int                                   16                                            -32 767 a 32 767 
  • unsigned  short int                      8                                            0 a 65 535
  • signed short int                           8                                             -32 767 a 32 767
  • float                                          32                                            seis dígitos de precisión
  • double                                      64                                            diez dígitos de precisión


Componentes de un programa 

Instrucción: Unidad ejecutable más pequeña 
de un programa. Las instrucciones controlan el  
flujo u orden de ejecución. 
  • Ejemplos: print, scanf, do, while, for, else 
Identificador: Son nombres dados a constantes,  variables, tipos y funciones de un programa. Se forman con la combinación de letras, números y otros símbolos. El primer carácter debe ser una letra. 

  • Ejemplos: pi, vocales, x, i, etc. 

Constante: Es un identificador al que se le asigna un valor fijo; es decir, no cambia durante la ejecución del programa. Puede ser un número, un carácter o una lista de caracteres. 

  • Ejemplos: const float pi = 3.1416;   const char vocales[ ] = “a,e,i,o,u”; 
Variable: Es un identificador que puede cambiar durante la ejecución de un programa.

  • Ejemplos: int x = 0, y = 0, i = 1;   x = x + y; i = i + 1; 





El Lenguaje C

Origenes de C 

El lenguaje C fue inventado en implementado por primera vez por Dennis Ritchie, utilizando Unix como sistema operativo. C es el resultado de un proceso de desarrollo comenzando con un lenguaje anterior denominado BCPL, que fue desarrollado por Martin Richards e influencio otro lenguaje denominado B, inventado por Ken Thompson. En los años 70, el lenguaje B llevo al desarrollo de C.

C como lenguaje de nivel medio 

A menudo, se denomina al lenguaje C como lenguaje de computadora de nivel medio. Esto no significa que sea menos potente o menos evolucionado que otros lenguajes como BASIC O PASCAL. Se le denomina así porque C presenta elementos de lenguajes de alto nivel con el funcionalismo del lenguaje ensamblador.
Como lenguaje de nivel medio, C permite la manipulacion de bits, bytes y direcciones- los elementos basicos con que funciona una computadora.
C es especial en cuanto que permite la manipulacion directa de bits, bytes, palabras y punteros. Esto lo hace particularmente adecuado para la programacion de sistemas, en la que estas operaciones son muy comunes. Otro aspecto importante es que C solo contiene 32 palabras clave (27 del estandar de Ritchie y 5 añadidas por ANSI), que constituyen las ordenes que conforman el lenguaje C, en comparacion con Basic, por ejemplo, que tiene 159 palabras clave.

Forma de un programa en C

En la siguiente lista se muestran las 32 palabras clave que, junto con la sintaxis formal del lenguaje C, conforman el lenguaje de programacion C.

  • 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
  • unsiged
  • void 
  • volatile
  • while

Todas estas palabras claves están en minúsculas. En C las mayúsculas y las minúsculas son diferentes: else es una palabra clave; ELSE no. Una palabra clave no debe ser usada para otro propósito en un programa C, es decir, no debe servir como nombre de una variable o una función. 
Todos los programas en C consisten en una o mas funciones. La única función que debe estar siempre presente es la denominada main(), siendo la primera función que es llamada cuando comienza la ejecución del programa.