Mostrando entradas con la etiqueta C. Mostrar todas las entradas
Mostrando entradas con la etiqueta C. Mostrar todas las entradas

24 jul 2013

Elementos Básicos de C++

1. Introducción
En este articulo se tratarán los Elementos Básicos del Lenguaje C/C++. Definiremos conceptos básicos como tipos de datos, variables, constantes, operadores, etc. Lo que aquí se trata no agola el tema pues por ejemplo no consideramos la totalidad de operadores de C++; pero, si lo suficiente para el desarrollo de este lenguaje a nivel básico. Este es el punto de partida para poder programar en C++.

2. Identificadores
Los identificadores son nombres usados para identificar a las variables, las constantes, las funciones, etc.
Existen reglas para construir identificadores válidos y son las siguientes:
  • El primer carácter debe ser una letra o el carácter de subrayado _.
  • Los caracteres siguientes pueden ser letras, números o símbolos de subrayado.
  • La longitud máxima es de 32 caracteres.
  • Las letras mayúsculas y las letras minúsculas se tratan como distintas. Así credito, Credito y CREDITO son tres identificadores distintos.
  • No puede ser igual a ninguna palabra reservada.
Ejemplo 1:
Son identificadores válidos los siguientes:

montoTotal, monto_total, Suma, num_emp, numero_empleados, edad1, edad2, etc.

Son identificadores inválidos los siguientes:

1sueldo   (No puede comenzar con un número)
premio!   (! no es un carácter válido)
monto...total  (... no son caracteres válidos)
monto total   (El espacio en blanco de separador no es un carácter válido)
do   (No puede ser una palabra reservada)

3. Tipos de Datos
Los tipos de datos se utilizan para crear variables. Entre los tipos básicos de C++ tenemos tipos para números enteros, números reales y caracteres.

Tipos de datos
Tipos de datos
Representación Tipo Longitud en byte Rango
Carácter char
unsigned char
1
1
-128 a 127
0 a 255
Enteros int
short int
unsigned int
long
unsigned long
2
2
2
4
4
-32768 a 32767
-32768 a 32767
0 a 65535
-2147483648 a 2147483647
0 a 4294967295
Reales float
double
long double
4
8
10
3.4E±38
1.7E±308
3.4E-4932 a 1.1E+4932
*1 byte = 8 bits

4. Palabras Reservadas o Palabras Clave
Las palabras reservadas son palabras que junto con la sintaxis formal del lenguaje C++, conforman el lenguaje de programación C++. Todas las palabras reservadas de C++ están en minúsculas. En C++ las mayúsculas y las minúsculas se tratan como diferentes, así por ejemplo, else es una palabra clave, pero ELSE no lo es.

Palabras reservadas
Palabras reservadas
asm
auto
break
case
catch
char
class
const
continue
default
delete
do
double
else
enum
extern
float
for
friend
goto
if
inline
int
long
new
operator
private
protected
public
register
return
short
signed
sizeof
static
struct
switch
template
this
throw
try
typedef
union
unsigned
virtual
void
volatile
while

5. Variables
5.1 ¿Qué es una variable?
Es una localización o posición en la memoria del computador que guarda información a ser procesada por la computadora. Una variable tiene un nombre (o identificador) y un tipo. El nombre identifica la posición de memoria asignada y el tipo especifica si la variable contendrá un numero entero, un numero real, un carácter, etc.

5.2 ¿Cómo se crea una variable?
Antes de poder usar una variable esta tiene que crearse en la memoria del computador. Para esto se debe informar al compilador el nombre de la variable y su tipo (esto se denomina declarar y definir una variable). La forma general como se hace esto es escribiendo:

      tipo nombre;

donde:
  • tipo es el tipo de dato elegido para la variable (entre char, int, float, double, etc).
  • nombre es el nombre elegido para la variable.
Una variable también puede ser inicializada al momento de su declaración. Así:

      tipo nombre = valor_inicial;

Donde valor_inicial es el valor inicial de la variable

Si varias variables comparten el mismo tipo, se puede declarar a todas ellas en simultaneo escribiendo:

      tipo variable1, variable2, variable3;

Ejemplo 2:
//Esto declara una variable de tipo int llamada edad
int edad;

//Esto declara e inicializa una variable de tipo float llamada sueldo
float sueldo = 0.0;

//Esto declara tres variables de tipo int e inicializa el valor de dos de ellas
int contador = 0, edad, suma = 0;

5.3 ¿Cómo declarar variables de cadena de caracteres?
Para declarar una variable de cadena de caracteres use la forma general siguiente:

      char cadena[tamaño];

donde:
  • cadena es el nombre arbitrario elegido para la variable de cadena.
  • tamaño es el tamaño de la cadena (debe ser uno más que el número total de caracteres)
En C++ el fin de una cadena se marca con un carácter especial llamado nulo y cuyo símbolo es '\0'. Esto significa que el tamaño elegido para una variable de cadena debe ser uno más que la longitud máxima de la cadena a contener (para poder incluir un espacio para el nulo). En la mayoría de los casos el nulo es puesto automáticamente por el compilador.

Una cadena también puede ser inicializada al momento de su declaración. Así:

      char cadena[tamaño] = "cadena_inicial";

Donde cadena_inicial es la cadena inicial

Nota:También puede declarar una cadena de tamaño indefinido siempre en cuando la inicialize a una cadena inicial. El compilador toma entonces la cadena inicial para calcular el tamaño de la variable de cadena. Siga para esto la siguiente forma general:
      char cadena[] = "cadena_inicial";

Ejemplo 3:
//Esto declara una variable de cadena llamada mensaje de tamaño 80
char mensaje[80];
//Esto declara e inicializa una cadena
//El tamaño que fija el compilador será de 5 (considerando el '\0' final)
char color[] = "Azul";
6. Constantes
Existen dos tipos de constantes: constantes literales y constantes nombradas o declaradas

6.1 Constantes literales
C++ permite a los programadores utilizar diferentes tipos de constantes (valores literales) que deben estar dentro del rango de tipos al cual corresponden.

   a. Contantes enteras
120            -300
80              -56

Se puede especificar constantes enteras largas (doble precisión) situando la l (o L) al final de la constante entera.

50000L            -600l

   b. Constantes reales
12.00            0.45          1.1e+2            1.1E2            4.5E-6

Se pueden especificar constantes reales de simple precisión (sufijo f o F) y de larga precisión (sufijos l o L) al final de la constante real.

12.00f           0.45f           3.556L           -5.678l            4.5E-6

   c. Constantes de carácter
Una constante de carácter se representa como el carácter encerrado entre comillas simples.
'a'           'k'           't'          '\n'          '$'

   d. Constantes de cadena
Una constante de cadena es una secuencia de caracteres encerrada entre comillas dobles.

"esta es una constante de cadena"
"Algoritmos Computacionales"

6.2 Constantes declaradas
En C++ se pueden declarar las denominadas "variables constantes" usando el calificador const. Las variables constantes también se conocen como variables nombradas o variables de sólo lectura. Para convertir una variable en constante debe anteponerse al tipo la palabra reservada const y además la variable debe ser inicializada al valor constante en el momento de su declaración. La forma general de declarar una variable constante es:

      const tipo nombre = valor_constante;

donde:
  • tipo es el tipo de la variable (elegido entre int, float, char, double, etc). Si se omite el tipo, se considera de tipo int.
  • nombre es el nombre arbitrario elegido para la variable.
  • valor_constante es el valor constante asignado a la variable (esto es obligatorio).
Ejemplo 4:
//Esto declara una constante de tipo float llamada PI
const float PI = 3.1416;

//Esto declara una constante de tipo int llamada TAM_MAX
const int TAM_MAX = 50;


20 may 2013

Librerías o Bibliotecas para C++

Librerías o Bibliotecas para C++
Junto con los compiladores de C y C++, se incluyen ciertos archivos llamados bibliotecas o comúnmente archivos de librería. Las bibliotecas contienen el código objeto de muchos programas que permiten hacer cosas comunes, como leer el teclado, escribir en la pantalla, manejar números, realizar funciones matemáticas, etc. Las bibliotecas están clasificadas por el tipo de trabajos que hacen, hay bibliotecas de entrada y salida, matemáticas, de manejo de memoria, de manejo de textos y como imaginarás existen muchísimas librerías disponibles y todas con una función especifica.

Contenedores 

<bitset>
Provee la clase contenedora especializada std::bitset, un arreglo de bits.
<deque>
Provee la plantilla clase contenedora std::deque, una cola doblemente enlazada.
<list>
Provee la plantilla clase contenedora std::list, una lista doblemente enlazada.
<map>
Provee las plantillas clases contenedoras std::map y std::multimap, un arreglo asociativo y un arreglo asociativo múltiple respectivamente.
<queue>
Provee la clase adaptadora contenedora std::queue, una cola de datos.
<set>
Provee las plantillas clases contenedoras std::set y std::multiset, contenedores asociativos ordenados.
<stack>
Provee la clase adaptadora contenedora std::stack, una pila de datos.
<vector>
Provee la plantilla clase contenedora std::vector, un arreglo dinámico.

General 

<algorithm>
Provee la definición de muchos algoritmos.
<functional>
Provee varios objetos funcionales, diseñados para ser utilizados por los algoritmos estándares.
<iterator>
Provee clases y plantillas para trabajar con iteradores.
<locale>
Provee las clases y plantillas para trabajar con locales.
<memory>
Provee facilidades para el manejo de memoria en C++, incluyendo la clase plantilla std::auto_ptr.
<stdexcept>
Contiene las clases estándares de excepción así como std::logic_error y std::runtime_error, ambas derivadas destd::exception.
<utility>
Provee la clase plantilla std::pair, para trabajar con pares (tuplas de dos miembros) de objetos.

Strings

<string>
Provee las clases y plantillas estándares de C++ para trabajar con cadena de caracteres.

Flujos y Entrada/Salida

<fstream>
Provee facilidades para la entrada y salida basada en archivos.
<ios>
Provee varios tipos y funciones básicas para la operación de flujos de entrada y salida.
<iostream>
Provee los elementos fundamentales para la entrada y salida en C++.
<iosfwd>
Provee las declaraciones hacia adelante de varias clases plantillas de E/S.
<iomanip>
Provee facilidades para manipular el formateo de salida, así como la base utilizada cuando se formatean enteros y los valores precisión o punto flotante.
<istream>
Provee la clase plantilla std::istream y otras clases para la entrada de datos.
<ostream>
Provee la clase plantilla std::ostream y otras clases para la salida de datos.
<sstream>
Provee la clase plantilla std::sstream y otras clases para la manipulación de cadena de caracteres.
<streambuf>

Numéricas 

<complex>
Provee la clase plantilla std::complex y funciones asociadas al trabajo con números complejos.
<numeric>
Provee algoritmos para el procesamiento numérico.
<valarray>
Provee la clase plantilla std::valarray, una clase arreglo optimizada para el procesamiento numérico.

Soporte del Lenguaje

<exception>
Provee varios tipos y funciones relacionadas al manejo de excepciones, incluyendo std::exception, la clase base para todas las excepciones arrojadas por la biblioteca estándar.
<limits>
Provee la clase plantilla std::numeric_limits, utilizada para describir las propiedades de los tipos numéricos fundamentales.
<new>
Provee los operadores new y delete y otras funciones y tipos que componen los elementos fundamentales para el manejo de memoria en C++.
<typeinfo>
Provee las facilidades para trabajar con información de tipo en tiempo de ejecución en C++.
<assert.h>Contiene la macro assert (aserción), utilizada para detectar errores lógicos y otros tipos de fallos en la depuración de un programa.
<complex.h>Conjunto de funciones para manipular números complejos (nuevo en C99).
<cstring>Contiene las funciones strlen, strstr, strchr, strcat.
<ctype.h>Contiene funciones para clasificar caracteres según sus tipos o para convertir entre mayúsculas y minúsculas independientemente del conjunto de caracteres (típicamente ASCII o alguna de sus extensiones).
<errno.h>Para analizar los códigos de error devueltos por las funciones de biblioteca.
<fenv.h>Para controlar entornos en coma flotante (nuevo en C99).
<float.h>Contiene la definición de constantes que especifican ciertas propiedades de la biblioteca de coma flotante, como la diferencia mínima entre dos números en coma flotante (_EPSOLON), el número máximo de dígitos de precisión (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX).
<inttypes.h>Para operaciones de conversión con precisión entre tipos enteros (nuevo en C99).
<iso646.h>Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1).
<limits.h>Contiene la definición de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se pueden representar (_MIN, _MAX).
<locale.h>Para la función setlocale() y las constantes relacionadas. Se utiliza para seleccionar el entorno local apropiado (configuración regional).
<math.h>Contiene las funciones matemáticas comunes.
<setjmp.h>Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no locales.
<signal.h>Para controlar algunas situaciones excepcionales como la división por cero.
<stdarg.h>posibilita el acceso a una cantidad variable de argumentos pasados a una función.
<stdbool.h>Para el tipo booleano (nuevo en C99).
<stdint.h>Para definir varios tipos enteros (nuevo en C99).
<stddef.h>Para definir varios tipos de macros de utilidad.
<stdio.h>Proporciona el núcleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable función printf).
<stdlib.h>Para realizar ciertas operaciones como conversión de tipos, generación de números pseudo-aleatorios, gestión de memoria dinámica, control de procesos, funciones de entorno, de señalización (??), de ordenación y búsqueda.
<string.h>Para manipulación de cadenas de caracteres.
<tgmath.h>Contiene funcionalidades matemáticas de tipo genérico (type-generic) (nuevo en C99).
<time.h>Para tratamiento y conversión entre formatos de fecha y hora.
<wchar.h>Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos (2 o más bytes por carácter), necesario para soportar caracteres de diferentes idiomas (nuevo en NA1).
<wctype.h>Para clasificar caracteres anchos (nuevo en NA1).

Fuente: Wikipedia.


19 may 2013

Ejemplo de Arreglo de Estructuras y Cadenas

Ejemplo de Arreglo de Estructuras y Cadenas


Descarga el .cppAqui puedes descargar el .cpp Descarga .cppNo olvides de compartir
structs.cpp 5.6kb Descargar