miércoles, 26 de noviembre de 2014

arreglos

10 Tipos de variables II: Arrays

^
Empezaremos con los tipos de datos estructurados, y con el más sencillo de ellos: los arrays.
Nota: siguiendo con los términos en inglés, array es otro que no se suele traducir. El término arreglo no es en realidad una traducción, sino un anglicismo (un palabro, más bien, un término que no existe en español). Podríamos traducir array como colecciónselección, o tal vez mejor, como formación. En este curso, de todos modos, usaremos el término array.
Los arrays permiten agrupar datos usando un único identificador. Todos los elementos de un array son del mismo tipo, y para acceder a cada elemento se usan índices.
Sintaxis:
<tipo> <identificador>[<núm_elemen>][[<núm_elemen>]...];
Los corchetes en negrita no indican un valor opcional: deben aparecer, por eso están en negrita. La sintaxis es similar que para las cadenas, de hecho, las cadenas no son otra cosa que arrays de caracteres (tipo char).
Desde el punto de vista del programador, un array es un conjunto de datos del mismo tipo a los que se puede acceder individualmente mediante un índice.
Por ejemplo, si declaramos un objeto de este modo:
    int valor;
El identificador 'valor' se refiere a un objeto de tipo int. El compilador sólo obtendrá memoria para almecenar un entero, y el programa sólo podrá almacenar y leer un único valor en ese objeto en cada momento.
Por el contrario, si declaramos un array:
    int vector[10];
El compilador obtendrá espacio de memoria suficiente para almacenar 10 objetos de tipo int, y el programa podrá acceder a cada uno de esos valores para leerlos o modificarlos. Para acceder a cada uno de los valores se usa un índice, que en este caso podrá tomar valores entre 0 y 9. Usando el valor del índice entre corchetes, por ejemplo: vector[0] o vector[4].
Es importante también tener en cuenta que el espacio de memoria obtenido para almacenar los valores de un array será contiguo, esto es, toda la memoria usada por un array tendrá direcciones consecutivas, y no estará fragmentada.
Otro detalle muy importante es que cuando se declaran arrays, los valores para el número de elementos deben ser siempre constantes enteras. Nunca se puede usar una variable para definir el tamaño de un array.
Nota: aunque la mayor parte de los compiladores permiten usar variables para definir el tamaño de un array, la norma no lo contempla. El hecho de que funcione no debe tentarnos a la hora de declarar arrays, nada nos asegura que en otros compiladores o en futuras versiones del que ahora usemos se mantenga ese funcionamiento.
Se pueden usar tantas dimensiones (índices) como queramos, el límite lo impone sólo la cantidad de memoria disponible.
Cuando sólo se usa un índice se suele hablar de vectores, cuando se usan dos, de tablas. Los arrays de tres o más dimensiones no suelen tener nombres propios.
Ahora podemos ver que las cadenas de caracteres son un tipo especial de arrays. Se trata en realidad de arrays de una dimensión de objetos de tipo char.
Los índices son números enteros, y pueden tomar valores desde 0 hasta <número de elementos>-1. Esto es muy importante, y hay que tener mucho cuidado, porque no se comprueba si los índices son válidos. Por ejemplo:
int Vector[10];
Creará un array con 10 enteros a los que accederemos como Vector[0] a Vector[9].
Como índice podremos usar cualquier expresión entera.
C++ no verifica el ámbito de los índices. Para poder hacerlo, el compilador tendría que agregar código, ya que los índices pueden ser variables, su valor debe ser verificado durante la ejecución, no durante la compilación. Esto está en contra de la filosofía de C++ de crear programas compactos y rápidos. Así que es tarea nuestra asegurarnos de que los índices están dentro de los márgenes correctos.
Si declaramos un array de 10 elementos, no obtendremos errores al acceder al elemento 11, las operaciones de lectura no son demasiado peligrosas, al menos en la mayoría de los casos. Sin embargo, si asignamos valores a elementos fuera del ámbito declarado, estaremos accediendo a zonas de memoria que pueden pertenecer a otras variables o incluso al código ejecutable de nuestro programa, con consecuencias generalmente desastrosas.
Ejemplo:
int Tabla[10][10];
char DimensionN[4][15][6][8][11];
...
DimensionN[3][11][0][4][6] = DimensionN[0][12][5][3][1]; 
Tabla[0][0] += Tabla[9][9];
Cada elemento de Tabla, desde Tabla[0][0] hasta Tabla[9][9] es un entero. Del mismo modo, cada elemento de DimensionN es un carácter.

Inicialización de arrays

^
Los arrays pueden ser inicializados en la declaración.
Ejemplos:
float R[10] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12}; 
float S[] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12}; 
int N[] = {1, 2, 3, 6}; 
int M[][3] = { 213, 32, 32, 32, 43, 32, 3, 43, 21}; 
char Mensaje[] = "Error de lectura";
char Saludo[] = {'H', 'o', 'l', 'a', 0};
Cuando se inicializan los arrays en la declaración no es obligatorio especificar el tamaño para la primera dimensión, como ocurre en los ejemplos de las líneas 2, 3, 4, 5 y 6. En estos casos la dimensión que queda indefinida se calcula a partir del número de elementos en la lista de valores iniciales. El compilador sabe contar y puede calcular el tamaño necesario de la dimensión para contener el número de elementos especificados.
En el caso 2, el número de elementos es 10, ya que hay diez valores en la lista.
En el caso 3, será 4.
En el caso 4, será 3, ya que hay 9 valores, y la segunda dimensión es 3: 9/3=3.
Y en el caso 5, el número de elementos es 17, 16 caracteres más el cero de fin de cadena.

Operadores con arrays

^
Ya hemos visto que se puede usar el operador de asignación con arrays para asignar valores iniciales.
El otro operador que tiene sentido con los arrays es sizeof.
Aplicado a un array, el operador sizeof devuelve el tamaño de todo el array en bytes. Podemos obtener el número de elementos, si lo necesitamos, dividiendo ese valor entre el tamaño de uno de los elementos.
int main()
{
   int array[231];
   int nElementos;
   
   nElementos = sizeof(array)/sizeof(int);
   nElementos = sizeof(array)/sizeof(array[0]);
   return 0;
}
Las dos formas son válidas, pero la segunda es, tal vez, más general.
La utilidad de esta técnica es, como mucho, limitada. Desde el momento en que se deben usar constantes al declarar los arrays, su tamaño es siempre conocido, y por lo tanto, su cálculo es predecible.

Algoritmos de ordenación, método de la burbuja

^
Una operación que se hace muy a menudo con los arrays, sobre todo con los de una dimensión, es ordenar sus elementos.
Tenemos una sección dedicada a los algoritmos de ordenación, pero ahora veremos uno de los más usados, aunque no de los más eficaces. Se trata del método de la burbuja.
Este método consiste en recorrer la lista de valores a ordenar y compararlos dos a dos. Si los elementos están bien ordenados, pasamos al siguiente par, si no lo están los intercambiamos, y pasamos al siguiente, hasta llegar al final de la lista. El proceso completo se repite hasta que la lista está ordenada.
Lo veremos mejor con un ejemplo:
Ordenar la siguiente lista de menor a mayor:
15386181
Empezamos comparando 15 y 3. Como están mal ordenados los intercambiamos, la lista quedará:
31586181
Tomamos el siguiente par de valores: 15 y 8, y volvemos a intercambiarlos, y seguimos el proceso...
Cuando lleguemos al final la lista estará así:
38615118
Empezamos la segunda pasada, pero ahora no es necesario recorrer toda la lista. Si observas verás que el último elemento está bien ordenado, siempre será el mayor, por lo tanto no será necesario incluirlo en la segunda pasada. Después de la segunda pasada la lista quedará:
36811518
Ahora es el 15 el que ocupa su posición final, la penúltima, por lo tanto no será necesario que entre en las comparaciones para la siguiente pasada. Las sucesivas pasadas dejarán la lista así:
36181518
31681518
13681518
Nota: para mayor información sobre algoritmos de ordenación puedes consultar la sección dedicada en nuestra página:http://c.conclase.net/orden/ realizada por Julián Hidalgo.

Funciones

3 Funciones I: Declaración y definición

^
Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman ciertos valores de entrada, llamados parámetros y proporcionan un valor de salida o valor de retorno; aunque en C++, tanto unos como el otro son opcionales, y pueden no existir.
Tal vez parezca un poco precipitado introducir este concepto tan pronto en el curso. Sin embargo, las funciones son una herramienta muy valiosa, y como se usan en todos los programas C++, creo que debemos tener, al menos, una primera noción de su uso. A fin de cuentas, todos los programas C++ contienen, como mínimo, una función.

Prototipos de funciones

^
En C++ es obligatorio usar prototipos. Un prototipo es una declaración de una función. Consiste en una presentación de la función, exactamente con la misma estructura que la definición, pero sin cuerpo y terminada con un ";". La estructura de un prototipo es:
[extern|static] <tipo_valor_retorno> [<modificadores>] <identificador>(<lista_parámetros>); 
En general, el prototipo de una función se compone de las siguientes secciones:
  • Opcionalmente, una palabra que especifique el tipo de almacenamiento, puede ser extern o static. Si no se especifica ninguna, por defecto seráextern. No te preocupes de esto todavía, de momento sólo usaremos funciones externas, lo menciono porque es parte de la declaración.
  • El tipo del valor de retorno, que puede ser void, si no necesitamos valor de retorno. En C, si no se establece, será int por defecto, aunque en general se considera una mala técnica de programación omitir el tipo de valor de retorno de una función. En C++ es obligatorio indicar el tipo del valor de retorno.
  • Modificadores opcionales. Tienen un uso muy específico, de momento no entraremos en este particular, lo veremos en capítulos posteriores.
  • El identificador de la función. Es costumbre, muy útil y muy recomendable, poner nombres que indiquen, lo más claramente posible, qué es lo que hace la función, y que permitan interpretar qué hace el programa con sólo leerlos. Cuando se precisen varias palabras para conseguir este efecto se puede usar alguna de las reglas más usuales. Una consiste en separar cada palabra con un "_". Otra, que yo prefiero, consiste en escribir la primera letra de cada palabra en mayúscula y el resto en minúsculas. Por ejemplo, si hacemos una función que busque el número de teléfono de una persona en una base de datos, podríamos llamarla "busca_telefono" o "BuscaTelefono".
  • Una lista de declaraciones de parámetros entre paréntesis. Los parámetros de una función son los valores de entrada (y en ocasiones también de salida). Para la función se comportan exactamente igual que variables, y de hecho cada parámetro se declara igual que una variable. Una lista de parámetros es un conjunto de declaraciones de parámetros separados con comas. Puede tratarse de una lista vacía. En C es preferible usar la forma "func(void)" para listas de parámetros vacías. En C++ este procedimiento se considera obsoleto, se usa simplemente "func()".
Por ejemplo:
int Mayor(int a, int b);
Un prototipo sirve para indicar al compilador los tipos de retorno y los de los parámetros de una función, de modo que compruebe si son del tipo correcto cada vez que se use esta función dentro del programa, o para hacer las conversiones de tipo cuando sea necesario.
En el prototipo, los nombres de los parámetros son opcionales, y si se incluyen suele ser como documentación y ayuda en la interpretación y comprensión del programa. El ejemplo de prototipo anterior sería igualmente válido si se escribiera como:
int Mayor(int, int);
Esto sólo indica que en algún lugar del programa se definirá una función "Mayor" que admite dos parámetros de tipo int y que devolverá un valor de tipoint. No es necesario escribir nombres para los parámetros, ya que el prototipo no los usa. En otro lugar del programa habrá una definición completa de la función.
Normalmente, los prototipos de las funciones se declaran dentro del fichero del programa, o bien se incluyen desde un fichero externo, llamado fichero de cabecera, (para esto se usa la directiva #include, que veremos en el siguiente capítulo).
Ya lo hemos dicho más arriba, pero las funciones son extern por defecto. Esto quiere decir que son accesibles desde cualquier punto del programa, aunque se encuentren en otros ficheros fuente del mismo programa.
En contraposición las funciones declaradas static sólo son accesibles dentro del fichero fuente donde se definen.

Definición de funciones

^
Al igual que hemos visto con las variables, las funciones deben declararse, para lo que usaremos los prototipos, pero también deben definirse.
Una definición contiene además las instrucciones con las que la función realizará su trabajo, es decir, su código.
La sintaxis de una definición de función es:
[extern|static] <tipo_valor_retorno> [modificadores] <identificador>(<lista_parámetros>)
{
   [sentencias]
}
Como vemos, la sintaxis es idéntica a la del prototipo, salvo que se elimina el punto y coma final, y se añade el cuerpo de función que representa el código que será ejecutado cuando se llame a la función. El cuerpo de la función se encierra entre llaves "{}".
La definición de la función se hace más adelante o más abajo, según se mire, es decir, se hace después que el prototipo. Lo habitual es hacerlo después de la función main.
Una función muy especial es la función main, de la que ya hablamos en el capítulo primero. Se trata de la función de entrada, y debe existir siempre, ya será la que tome el control cuando se ejecute el programa. Los programas Windows usan la función WinMain como función de entrada, aunque en realidad esta función contiene en su interior la definición de una función main, pero todo esto se explica en otro lugar.
Existen reglas para el uso de los valores de retorno y de los parámetros de la función main, pero de momento la usaremos como int main() o intmain(void), con un entero como valor de retorno y sin parámetros de entrada. El valor de retorno indicará si el programa ha terminado sin novedad ni errores retornando cero, cualquier otro valor de retorno indicará un código de error.

Estructura de un programa C++

^
La estructura de un programa en C o C++ quedaría así:
[directivas del pre-procesador: includes y defines]
[declaración de variables globales]
[prototipos de funciones]
[declaraciones de clases]
función main 
[definiciones de funciones]
[definiciones de clases]
También se puede omitir el prototipo si se hace la definición antes de cualquier llamada a la función, es decir, en la zona de declaración de prototipos. Esto se puede hacer siempre, sin embargo no es muy recomendable como veremos a lo largo del curso.
Para no dejar las cosas "a medias", podemos ver una posible definición de la función "Mayor", que podría ser la siguiente:
int Mayor(int a, int b)
{
   if(a > b) return a; else return b;
}

Estructuras más complejas

Los programas complejos se escriben normalmente usando varios ficheros fuente. Estos ficheros se compilan separadamente y se enlazan todos juntos. Esto es una gran ventaja durante el desarrollo y depuración de grandes programas, ya que las modificaciones en un fichero fuente sólo nos obligarán a compilar ese fichero fuente, y no el resto, con el consiguiente ahorro de tiempo.
La definición de las funciones y clases puede hacerse dentro de los ficheros fuente o también pueden enlazarse desde bibliotecas compiladas previamente.
En C++ es obligatorio el uso funciones prototipo, y aunque en C no lo es, resulta altamente recomendable.

Tipos de variables

2 Tipos de variables I

^
Conceptualmente, desde el punto de vista de un programador, una variable es una entidad cuyo valor puede cambiar a lo largo de la ejecución de un programa.
En el nivel más bajo, una variable se almacena en la memoria del ordenador. Esa memoria puede ser un conjunto de semiconductores dentro de un circuito integrado, ciertos campos magnéticos sobre una superficie de un disco, ciertas polarizaciones en una memoria de ferrita, o cualquier cosa que aún no se haya inventado. Afortunadamente, no deberemos preocuparnos por esos detalles.
teclado binario
Teclado para programación en binario.
En un nivel más lógico, una variable ocupa un espacio de memoria reservado en el ordenador para contener sus valores durante la ejecución de un programa. Cada variable debe pertenecer a un tipo determinado, y ese tipo determina, por una parte, el tamaño del espacio de memoria ocupado por la variable, y por otra, el modo en que se manipulará esa memoria por el ordenador.
No olvides, si es que ya lo sabías, que la información en el interior de la memoria del ordenador se almacena siempre de forma binaria, al menos a bajo nivel. El modo en que se interpreta la información almacenada en la memoria de un ordenador es, en cierto modo, arbitraria; es decir, el mismo valor puede codificar una letra, un número, una instrucción de programa, etc. No hay nada diferente en una posición de memoria que contenga una instrucción de programa o una letra de un texto; si observamos una posición de memoria cualquiera, no habrá modo de saber qué significa el valor que contiene. Es mediante el tipo como le decimos al compilador el modo en que debe interpretarse y manipularse cierta información binaria almacenada en la memoria de un ordenador.
De momento sólo veremos los tipos fundamentales, que son: voidcharintfloat y double, en C++ se incluye también el tipo bool. También existen ciertos modificadores, que permiten ajustar ligeramente ciertas propiedades de cada tipo; los modificadores pueden ser: shortlongsigned y unsigned, y pueden combinarse algunos de ellos. También veremos en este capítulo los tipos enumerados, enum.

Sobre la sintaxis

^
A partir de ahora mostraremos definiciones de la sintaxis para las diferentes sentencias en C++.
Estas definiciones nos permiten conocer las diferentes opciones para cada tipo de sentencia, las partes obligatorias, las opcionales, dónde colocar los identificadores, etc.
En este curso las definiciones de sintaxis se escribirán usando un rectángulo verde. Las partes opcionales se colocan entre corchetes [ ], los valores separados con | indican que sólo puede escogerse uno de esos valores. Los valores entre <> indican que debe escribirse obligatoriamente un texto que se usará como el concepto que se escribe en su interior.
Por ejemplo, veamos la siguiente sintaxis, que define una sentencia de declaración de variables de tipo char:
[signed|unsigned] char <identificador>[,<identificador2>[,<identificador3>]...];
Significa que se puede usar signed o unsigned, o ninguna de las dos, ya que ambas están entre [ ], y separadas con un |.
El subrayado de signed indica que se trata de la opción por defecto. En este caso, si no se usa signed ni unsigned, el compilador elige la opción signed.
A continuación de char, que debe aparecer de forma obligatoria, debe escribirse un texto, que tiene ser una única palabra que actuará como identificador o nombre de la variable. Este identificador es el que usaremos para referirnos a la variable en el programa. En un programa C++ siempre llamaremos a las cosas por su nombre.
Opcionalmente, podemos declarar más variables del mismo tipo, añadiendo más identificadores separados con comas. Podemos añadir tantos identificadores como queramos.
Para crear un identificador hay que tener en cuenta algunas reglas, ya que no es posible usar cualquier cosa como identificador.
  • Sólo se pueden usar letras (mayúsculas o minúsculas), números y ciertos caracteres no alfanuméricos, como el '_', pero nunca un punto, coma, guión, comillas o símbolos matemáticos o interrogaciones.
  • El primer carácter no puede ser un número.
  • C++ distingue entre mayúsculas y minúsculas, de modo que los identificadores numero y Numero son diferentes.
Finalmente, la declaración termina con un punto y coma.
Las palabras en negrita son palabras reservadas de C++. Eso significa que son palabras que no se pueden usar para otras cosas, concretamente, no se pueden usar como identificadores en un programa C++. Es decir, están reservadas para usarse del modo en que se describe en la sintaxis, y no se pueden usar de otro modo.
Serán válidos estos ejemplos:
signed char cuenta, cuenta2, total;
unsigned char letras;
char caracter, inicial, respuesta;
signed char _letra;

Tipos fundamentales

^
En C sólo existen cinco tipos fundamentales y los tipos enumerados, C++ añade un séptimo tipo, el bool, y el resto de los tipos son derivados de ellos. Los veremos uno por uno, y veremos cómo les afectan cada uno de los modificadores.

Tipo "char" o carácter:

[signed|unsigned] char <identificador>[,<identificador2>[,<identificador3>]...];
Es el tipo básico alfanumérico, es decir que puede contener un carácter, un dígito numérico o un signo de puntuación. Desde el punto de vista del ordenador, todos esos valores son caracteres. En C++ este tipo siempre contiene un único carácter del código ASCII. El tamaño de memoria es de 1 byte u octeto. Hay que notar que en C un carácter es tratado en todo como un número, de hecho, habrás observado que puede ser declarado con y sin signo. Si no se especifica el modificador de signo, se asume que es con signo.
Nota: sé que esto sorprende, inquieta y despista a muchos lectores, así que probablemente necesite alguna explicación más detallada. De modo que he añadido un pequeño apéndice que explica cómo es posible que un número y una letra se puedan representar con el mismo tipo:Apéndice A.
Este tipo de variables es apto para almacenar números pequeños, como los dedos que tiene una persona, o letras, como la inicial de mi nombre de pila.
El tipo char es, además, el único que tiene un tamaño conocido y constante. Para el resto de los tipos fundamentales que veremos, el tamaño depende de la implementación del compilador, que a su vez suele depender de la arquitectura del procesador o del sistema operativo. Sin embargo el tipo char siempre ocupa un byte, y por lo tanto, podemos acotar sus valores máximo y mínimo.
Así, el tipo char con el modificador signed, puede tomar valores numéricos entre -128 y 127. Con el modifiador unsigned, el rango está entre 0 y 255.
El hecho de que se trate de un tipo numérico entero nos permite usar variables de char para trabajar con valores pequeños, siempre que lo consideremos necesario.
El motivo por el que este tipo también puede contener un caracter es porque existe una correspondencia entre números y caracteres. Esa correspondencia recibe el nombre de código ASCII.
Según este código, por ejemplo, al número 65 le corresponde el carácter 'A' o al número 49 el '1'.
El código ASCII primitivo usaba sólo 7 bits, es decir, podía codificar 128 caracteres. Esto era más que suficiente para sus inventores, que no usaban acentos, eñes, cedillas, etc. El octavo bit se usaba como bit de paridad en transmisiones de datos, para la detección de errores.
Después, para internacionalizar el código, se usó el octavo bit en una tabla ASCII extendida, que puede codificar 256 caracteres.
Pero como esto también es insuficiente, se han creado otras codificaciones de caracteres multibyte, aunque esto queda fuera de las posibilidades de char.

Introduccion a C++

Programación Basica en C++

Bien he tenido la idea de crear esto desde hace mucho mucho tiempo, sin embargo hasta ahora lo empezaré, el objetivo es crear un minicurso fundamental de como programar usando herramientas de software libre o de código abierto. Bien tutoriales como este hay miles, pero es una pequeña contribución de mi parte, este curso es útil como comienzo, sin embargo internet y sobre todo los libros siempre serán nuestros mejores amigos =)


Introducción

C++ es un lenguaje inspirado en C, por Bjarne Stroustrup en los 80's. Es un lenguaje de alto nivel que como C permite el uso de muchas características de bajo nivel, es un lenguaje orientado a objetos, y está estandarizado desde ya bastante tiempo.

Más información http://es.wikipedia.org/wiki/C%2B%2B

Consejos antes de empezar
  • Google e internet son excelentes herramientas sabiéndolas aprovechar
  • Para programar un conocimiento adecuado de inglés es indispensable, hay mucha más documentación en inglés que en español.
  • Este curso es un pequeñisimo tutorial introductorio, espero sirva de ayuda como otros en la red.
Bien continuando, para esto usaremos herramientas GNU/Linux, Linux es un núcleo, GNU una serie de herramientas entre ellas el compilador GCC que usaremos en el curso, y demas librerias que juntas conforman los sistemas operativos Linux GNU/Linux(el nombre del sistema operativo es una discusión épica que no nos importa en este momento) Hay muchas distribuciones del sistema operativo Linux y GNU debido a que es construido por diversos grupos de desarrolladores basándose a filosofías y necesidades específicas.

Antes de continuar es bastante útil conocer más de GNU, Linux, software libre y código abierto

http://www.obtengalinux.org/
http://es.wikipedia.org/wiki/C%C3%B3digo_abierto
http://es.wikipedia.org/wiki/Software_libre
http://es.wikipedia.org/wiki/Linux

Bien, podemos usar cualquier distro que queramos, es mejor empezar con distros de fácil instalación si se desea después se puede aprender a usar las distros difíciles(o más bien tardadas) de instalar como Slackware. Distros recomendables Fedora, LinuxMint, GnewSense, Ubuntu. Para este tuto yo uso Fedora que usa paquetes RPM y yum. Lo único que variará será como instalar algunas cosas la mayoría de hecho ya están instaladas cuando usas el Sistema Operativo.


Herramientas a usar

Necesitamos para programar en C++( y de hecho muchos otros lenguajes) ciertas herramientas, en Windows estás vienen juntas en un sólo programa lo que se llama IDE, en Linux también hay IDE's, sin embargo lo más común es que vengan de forma separadas estas herramientas.
  • Sistema Operativo!! (Linux para nuestro caso)
  • Editor de Texto(gedit, vim, emacs, anjuta, bluefish, para nuestro tuto usaremos gedit)
  • Compilador de C++(lo más importante de hecho, pues traducirá nuestro código a lenguaje entendible por la máquina, usaremos GCC)
  • IDE's completas(NetBeans, Eclipse, más adelante veremos el uso básico de estas)
  • Otras Herramientas(depuradores, analizadores, subversion, etc)
Bien primero elegimos la distro deseada, yo uso Fedora, fuera de la instalación de algunas herramientas no varía la distro que uses lo demás. Gedit viene de defecto instalado, sino podemos instalarlo usando yum install gedit, apt-get install gedit. Nota. este no es un curso básico de Linux, sino de C++ en Linux, así que es bueno un conocimiento previo de Linux.
También ocuparemos el compilador GCC, lo mismo para instalarlo yum install gcc, apt-get install gcc. Por el momento no ocuparemos más.

Para programar abriremos gedit, y aquí escribiremos nuestro código, para compilar desde consola usaremos el comando "g++ nombrearchivo.cpp -o nombrearchivo.out" y una vez compilado para ejecutar usaremos "./nombrearchivo.out" o "sh nombrearchivo.out"(para esto último puede pedir usar al root, usar sudo o su -c).


Primer Programa

Como C++ es un lenguaje estandarizado,  la mayoría que lo que se escribe en otros compiladores(borlandc ++, dev c++, etc) se usará asi en GCC. El primer programa clásico "HolaMundo". Abrimos gedit y empezamos a escribir nuestro código.

Código

// Estás líneas sirven para comentar
/* Tal como estas de apertura y cierre */

#include // Para flujos de entrada/salida básicos de C++

using namespace std; /*espacio de nombre estándar, esto nos incluye cout, es un poco más detallado explicar los namespaces */

int main()
{

    cout<<"Hola!\n"; /*cout, c out, salida básica de C++, para el flujo de salida se usa el operador '<<'  y "Hola!n"  es nuestra cadena de salida, con el caracter de salto de línea '\n'*/
                                     
    return 0;    /* es una buena práctica de programación que las funciones main en C++ devuelvan un valor,  para detectar errores por ejemplo */
}


(click para agrandar) 


Tal como en C, las líneas se acaban en ';' , las funciones, estructuras y clases abren y cierran con '{}',  hay diferencia entre mayúsculas y minúsculas, y las llamadas al preprocesador se usa '#'. Nota, tal como otros compiladores, GCC puede compilar código de C, pero esto es porque el compilador lo permite, en realidad un código de C no debería ser compilado por un compilador de C++.

La extensión debe ser 'cpp', podemos nombrar nuestro archivo como querramos, aqui lo guardamos como hola.cpp

Para compilar en una consola usamos el comando

g++ hola.cpp -o hola.out

Esto es para indicar al compilador que guarde el archivo compilado como hola.out(un "ejecutable" en Linux, la extensión .out de hecho puede usarse la que se quiera, es por estandarizar)

Para ejecutarlo en una terminal usamos es comando

./hola.out

'./' sirve para ejecutar el archivo
Si hemos hecho todo bien veremos una salida como eta


Consejo de programación en Linux

Quizás hayan notado que el gedit en la imagen hay una pequeña consola abajo, gedit como otros editores en linux, permiten el uso de complementos
asi que para activar ese complemento lo instalamos primero

su -c 'yum install gedit-plugins'

Una vez hecho esto, abrimos gedit vamos a Editar/Preferencias y ahi la pestaña Complementos, ahi buscamos y activamos Terminal Empotrado. Despues en Ver/Barra inferior y voila, asi no tenemos que tener una terminal abierta, basta con nuestro gedit abierto.

Bueno hasta aquí llega la primera parte de este curso, como verán lo más básico, Saludos hasta entoncés.

Curso Excel

21 de diciembre de 2009

Cómo crear un hipervínculo en Excel a un archivo?


Un hipervínculo es un vínculo de un documento que abre una página interna, externa o un archivo específico.

Un destino puede ser una página web, la apertura de un archivo, una imagen, una dirección electrónica o un programa.


Cuando un texto o una imagen contiene un hipervínculo a visitar, el puntero del mouse toma la forma de mano que indica "Hacer clic".


Cómo crear un hipervínculo a un archivo?

1. En una hoja de cálculo, haga clic sobre una celda en la que desea crear el hipervinculo. Por ejemplo:


Nota: También puede seleccionar una imagen o un elemento de gráfico para crear el hipervínculo

2. Haga clic en la pestaña "Insertar" y luego clic en "Hipervínculos" del grupo "Vínculos"




3. En la siguiente ventana, haga clic en la opción "Archivo o página existente"





4. En la opción "Buscar en" busque y seleccione el archivo que desea vincular y termine haciendo clic en el botón "Aceptar"



Tiene la opción de crear vínculos a páginas web visitadas o archivos que recientemente haya abierto.



5. Si desea mostrar información útil que se vea al pasar el puntero del mouse sobre el vínculo, haga clic en el botón "Info de pantalla"



6. En la nueva ventana escriba el texto en el campo "Información en pantalla"



Resultado del ejemplo


Déjenos sus dudas en los comentarios.


Si te gustó, suscríbete al Feed RSS de Ideas de Excel  y recibe nuestras actualizaciones
--> Leer más...

14 de diciembre de 2009

Formatos de archivos que admite Excel


Excel 2007 permite trabajar con múltiples formatos, abrirlos y guardarlos.


Para guardar un libro de Excel en otro formato diferente, haga clic en el botón de Office.
Haga clic en la opción "Guardar como"

En la nueva ventana, la opción "Guardar como tipo", muestra una lista desplegable con los tipos de archivos disponibles a guardar.


Cada vez que guarde un archivo con otro formato, es posible que pierda formato de celdas o característica.







Puede pegar datos desde el Portapapeles de Microsoft Office en Excel mediante los comandos Pegar o Pegado especial (ficha Inicio, grupo Portapapeles, botón Pegar) si los datos del Portapapeles de Office están en uno de los formatos siguientes:


Los siguientes formatos de archivo ya no se admiten en Office Excel 2007. No puede abrir o guardar archivos en estos formatos.


Más información | Microsoft Office online


Si te gustó, suscríbete al Feed RSS de Ideas de Excel  y recibe nuestras actualizaciones
--> Leer más...

9 de diciembre de 2009

Funciones de Fechas


Excel  permite agregar de una forma rápida la fecha actual.

Ejemplo: Escriba en una celda en blanco la función “=hoy()”  Devuelve la  fecha del día configurada en su equipo


Esta función le permite realizar diferentes  operaciones que incluya contar o aumentar una fecha en especial o combinar  varias fórmulas en una.

Ejemplos:

1. Digite en una celda en blanco la siguiente función:
=dia(hoy()) Esta función devuelve como resultado el día del mes actual.

2. Digite en una celda en blanco la siguiente función:
=mes(hoy()) esta función devuelve como resultado el mes actual del año del 1 al 12

3. Otra de las características que pueden ser muy útiles con la función HOY es calcular la edad de una persona conociendo el año de nacimiento. Digite en una celda en blanco la siguiente fórmula tomando como fecha de nacimiento 1982=año(hoy())-1982 



Calcular el número de días entre dos fechas

Excel permite calcular los días laborales, esta función puede ser muy útil al momento de calcular o liquidar una nómina.

Ejemplo:

1. Una hoja en blanco.

2. Digite las siguientes fechas.

3. Digité a partir de la celda A4 las funciones como lo muestra la imagen.


Con la función resta (-), podrá encontrar la cantidad de días.

La función “días.lab” permite encontrar los días laborales entre dos fechas específicas sin contar los fines de semana e iniciando a partir del día indicado en la fecha inicial.

Para descontar los días festivos, debe aplicar la misma función “días.lab” incluyendo al final el día festivo.

Si te gustó, suscríbete al Feed RSS de Ideas de Excel  y recibe nuestras actualizaciones
--> Leer más...

7 de diciembre de 2009

Cómo trabajar con los grupos de BIABLE?


Un Grupo es un conjunto de elementos que tienen una característica en común dentro de un tipo de información.

Cuando se habla de Grupos Locales en BIABLE, se hace referencia al conjunto de elementos con una característica en común dentro de una misma conexión o compañía.

Al referirse a Grupos Globales toma elementos con una característica en común dentro de 2 o más conexiones o compañías diferentes.


Un grupo no debe tener el mismo nombre que uno de sus elementos que lo contengan.

Un grupo puede ser consultado con las diferentes funciones de valores.

Puede descargar el manual completo para trabajar con los grupos, haciendo clic aqui 



Si te gustó, suscríbete al Feed RSS de Ideas de Excel  y recibe nuestras actualizaciones
--> Leer más...

30 de noviembre de 2009

Aproveche las ventajas de Excel 2007 con la interfaz de Excel 2003


Uno de los principales cambios a los cuales se enfrenta el usuario al trabajar con la versión de Office 2007 desarrollada por Microsoft®, es el entorno gráfico.

Con las versiones anteriores los usuarios utilizaban un sistema de menús, barras de herramientas, paneles de tareas y cuadros de diálogo para realizar su trabajo. Éstos se han sustituido por la cinta de opciones, un dispositivo que presenta los comandos organizados en un conjunto de fichas. Las fichas de la cinta de opciones muestran los comandos más importantes de cada una de las áreas de tareas de las aplicaciones, además que mantiene el área de trabajo despejada.

Algunos usuarios pueden confundirse con estos cambios y al momento de realizar su trabajo es posible que se les dificulte encontrar las opciones. Debido a esto, Visión Tecnológica ha desarrollado un complemento para Microsoft Excel® 2007 que simula el menú y las barras de herramientas más usadas en la versiones anteriores de Excel: Formato y Herramientas; con la finalidad de que el usuario aproveche todas las ventajas que ofrece el nuevo Excel® 2007 y tenga a la mano las herramientas y opciones de la versión 2003 y anteriores en un mismo entorno.

El complemento adiciona una ficha que muestra el entorno clásico de Excel® 2003 con los comandos más comunes.



Si requiere información de instalación, haga clic aqui


Si te gustó, suscríbete al Feed RSS de Ideas de Excel  y recibe nuestras actualizaciones
--> Leer más...

23 de noviembre de 2009

Funciones de Texto | Capitulo 2


Para esta ocasión, veremos las funciones de texto:CONCATENARDERECHA y una función de BIABLE:NombreDato

CONCATENAR
Esta función permite enlazar dos o más cadenas de  texto escritas en diferentes celdas, le enseñaremos dos maneras de concatenar  un texto:

  • Ejemplo largo:
1. Escriba en una nueva hoja de cálculo lo siguiente:



2. Ubicado en la celda C2 haga clic en insertar función

3. Seleccione la categoría TEXTO

4. Haga clic en la función CONCATENAR



5. Posteriormente aparecerá una ventana de argumentos

6. En el campo texto1 haga clic en la celda A2 para nuestro ejemplo

7. En el campo texto2 haga clic en la  celda B2 para nuestro ejemplo

8. Luego haga clic en Aceptar



9.  Notará que el texto quedará agrupado en una misma  celda


Si desea incluir espacios en blanco puede  asignarlo como si fuese un texto dando un espacio entre comillas dobles (").




  • Ejemplo corto:

Continuando con el mismo ejemplo, vamos a realizar  la función CONCATENAR sin insertar la función con asistente.

1. Escriba en una nueva hoja de cálculo lo siguiente



2. Ubíquese en la celda C2  y digite la siguiente sintaxis =A2&B2 . Presione Enter

DERECHA

Esta función devuelve el último carácter o caracteres de una  cadena de texto, según el número de caracteres que el usuario especifica

Sintaxis
DERECHA(texto;núm_de_caracteres)
Núm_de_caracteres especifica el  número de caracteres que desea extraer conDERECHA

Ejemplo

1. Digite en una nueva hoja de cálculo lo siguiente:



2. Ubíquese en la  celda B2

3. Haga clic en  insertar función y seleccione en la categoría TEXTO la funciónEXTRAE



4. En el campo texto haga clic en la celda A2 para nuestro ejemplo

5. En el campo "Posición Inicial", indique a partir de qué carácter va a  tomar la subcadena, contando de izquierda a derecha. Para nuestro ejemplo escriba 1

6. En el campo "Núm_de_Caracteres", indique cuántos caracteres va a tomar. Para nuestro ejemplo escriba 5 y haga clic en Aceptar



7. El resultado de este ejercicio es extraer la palabra Sofía



Función NombreDato en BIABLE

Esta  función permite identificar el nombre del dato contable que se esta usando.

1. Por favor  digite los siguientes datos en Excel



2. Ubíquese en la  celda B2 

3. Haga clic en  insertar función y seleccione la categoría “Visión Tecnologica” y haga clic a la opción NombreDato.



4. En el campo "Operación" haga clic en la celda A2 y  luego clic en Aceptar.



5. Ahora desplace la  función hacia abajo




Si te gustó, suscríbete al Feed RSS de Ideas de Excel  y recibe nuestras actualizaciones
--> Leer más...

10 de noviembre de 2009

Funciones de Texto | Capitulo 1


*Sabia Usted que Excel al igual que Word permite cambiar un texto de minúscula a mayúscula o viceversa?

Veamos Como:

1. Escriba la siguiente lista de nombres en una hoja en blanco de Excel



2. Ubíquese en la celda “ B1”

3. Haga clic en "Insertar función"



4. Ubicado en el cuadro de diálogo, seleccione la categoría TEXTO

5. Ubique la función MAYUSC

6. Haga clic en Aceptar



7. En el cuadro de diálogo de Función, haga clic en la celda A1 para nuestro ejemplo



8. Haga clic en Aceptar

9. Desplace la celda hacia abajo.



10. Seleccione la columna B1 hasta B6

11. Copie la selección (Ctrl + C)



12. Ubíquese en la celda A1

13. Presione el clic derecho

14. Haga clic en la opción Pegado Especial



15. Seleccione la opción Valores

16. Haga clic en Aceptar

De esta manera toda la columna A quedará en valores y no tendrá vinculado ninguna función, permitiendo así eliminar o borrar el contenido de la columna B



La función Minusc funciona de la misma forma.