C++ posee una gran variedad de instrucciones

Anuncio
Diego Alejandro Ríos
Sagastume
[email protected]
Estudiante de Ingeniería en
Ciencias y Sistemas - USAC
Palabras claves:
C++,C, asm ,reservadas,
volátil, virtual, operator, friend,
amigas
http://www.atmel.com/Microsite/atmel-studio/compiler-editor.aspx
C++ posee una gran variedad de instrucciones
especialmente diseñadas para ciertas tareas, los ciclos For
por ejemplo son especiales para la creación de bucles en
donde se conoce el número de iteraciones; los ciclos While
son ideales cuando se desconoce el número de iteraciones;
los Switch son la opción para cuando se posee varias
comparaciones con un mismo valor, en lugar de utilizar
múltiples condicionales If. Este lenguaje además posee
otras instrucciones y palabras reservadas cuando se
presentan ciertas situaciones, Throws para manejar errores,
Asm para incluir código ensamblador y otras no tan
conocidas como virtual, Volatile, etc. A lo largo del artículo
veremos éstas instrucciones y algunas situaciones en las
cuales nos pueden ser realmente útiles.
C++ es un poderoso lenguaje de programación el cual es
una evolución del lenguaje C. Cabe destacar ésta diferencia
ya que generalmente se tiende a confundir éstos 2
lenguajes. El lenguaje C fue mejorado para soportar el
paradigma orientado a objetos y nació C++, C++ soporta
toda la programación estructurada y además la
programación orientada a objetos, junto con todo lo que
esto conlleva: POO, herencia tanto simple como múltiple,
polimorfismo, sobrecarga, casteo, clases abstractas,
interfaces, etc. C++ está en casi todos los ámbitos de
nuestra vida, es difícil mostrar la cantidad de aplicaciones
que tiene, acá van algunas: aplicaciones en general,
creación de sistemas operativos, exploradores de archivos,
programación de microchips, virtualización, etc.
Cabe mencionar además que estas aplicaciones son muy
veloces debido a que C++ es un lenguaje compilado, no
interpretado, debido a eso genera aplicaciones nativas. Una
desventaja es que dichas aplicaciones no son
multiplataforma.
No ahondaremos en el cómo programar en C++, ya que no
es el objetivo del artículo. El objetivo principal es mostrar
algunas instrucciones avanzadas que pueden ser de gran
utilidad al momento de resolver ciertos problemas, así que
comencemos:
Primero algo de concepto, un lenguaje embebido es un
código de un lenguaje escrito en otro lenguaje de
programación, por ejemplo, batch escrito en java y lo que
nos ofrece C++, ensamblador en código C++. Estas
operaciones son realmente útiles al momento de trabajar
muy cerca del procesador, lo cual nos permite tener una
comunicación directa con el hardware de la máquina,
pudiendo modificar los registros del procesador, invocar
interrupciones, etc. Algunos compiladores permiten además
utilizar variables globales o locales en el trozo de lenguaje
ensamblador que se está insertando. En los apéndices se
muestra un manual de ensamblador en línea y el resultado
del siguiente ejemplo.
Es el operador que deseamos sobrecargar, no
todos los operadores son sobrecargables pero la mayoría si
lo son. Los operadores que no se pueden sobrecargar son:
#,##, selector de componente (.), operando de valores por
defecto (:), operadores de resolución de ámbito (::),
operador de puntero a miembro (.*), condicional ternario (?),
sizeof y typeid.
Ejemplo: Se muestra a continuación cómo hacer para que al
sumar 2 objetos, se resten y cómo hacer para que al restar
2 objetos se mande a un archivo. Vea el resultado en los
apéndices.
Son pocas las aplicaciones de esta instrucción, pero si
existen. Esto es muy utilizado al momento de programar
software a bajo nivel utilizando instrucciones de alto nivel.
Por ejemplo cuando necesitamos acceder a los registros del
procesador desde una aplicación gráfica, o al momento de
programar un sistema de archivos.
Una aplicación que he visto que se utiliza es al momento de
creación de sistemas operativos, en el libro de Sistemas
Operativos – Diseño e Implementación diseñan un sistema
operativo utilizando instrucciones tanto de alto nivel (C)
como de bajo nivel (Assembler).
¿Te has preguntado si sería divertido hacer que un lenguaje
en lugar de sumar, restara? o ¿en lugar de multiplicar,
guarde algo en un archivo? Bueno, la palabra reservada
operator nos permite realizar esto. Operator es una
instrucción en lenguaje C++ que nos permite sobrecargar
operadores y definirles un nuevo comportamiento
dependiendo de los tipos de datos que le mandemos. Su
sintaxis es la siguiente:
La sobrecarga de operadores tiene la funcionalidad de
hacernos la vida mucho más simple. Generalmente si
deseamos realizar operaciones con objetos o Structs en C,
tendríamos que hacer una función para realizar las acciones
(por ejemplo una suma) y llamarla cada vez que deseamos
realizar esa operación. Con los operadores sobrecargados
bastará simplemente con sobrecargar el operador para esas
instrucciones y esos objetos y olvidarnos del problema. La
sobrecarga es realmente útil para concatenar cadenas,
sumar vectores, operaciones con matrices, etc. Es una de
las instrucciones con mayor aplicación que en general nos
Es el tipo de datos que retornará el operador cuando ayudarán simplemente a escribir menos código.
se utilice.
Es la palabra reservada que sobrecarga el
operador.
Sabemos que los atributos declarados como privados son
imposibles de acceder por las funciones que no pertenecen
a la clase en donde se declaran; pero existe un tipo de
funciones llamadas funciones amigas las cuales pueden
acceder a estos atributos. Estas funciones son realmente
útiles al momento de crear estructuras de datos y en otras
situaciones en las que es necesario acceder a atributos
privados pero manteniendo uno de los principios de la POO,
el encapsulamiento. Se declaran como prototipos de
funciones en las clases y fuera de la clase se define su
comportamiento, como se muestra en el siguiente ejemplo
(Véase el resultado en los apéndices).
sean más veloces. Debemos saber que sin importar la
arquitectura del procesador en el que estemos, tenemos un
número limitado de registros, por lo que si el procesador ya
no tiene más registros, el compilador simplemente ignorará
la instrucción. No es fácil saber en qué registro coloca la
variable el compilador, se necesita un depurador y un
desensamblador para saber esto, lo cual no puede
mostrarse fácilmente en un artículo. Para finalidad de este
artículo, nos limitaremos a mostrar la instrucción y el lector
sabrá que esto existe para su utilización. Esto solamente se
puede aplicar a variables y su sintaxis es:
Este tipo de variables es muy útil en los ciclos de los
programas o en las instrucciones repetitivas ya que
podemos mantener la variable iteradora en un registro con
lo cual se vuelve mucho más rápido ya que no tiene que ir a
la memoria RAM para ver su valor. También en variables
acumuladoras o sumas es relativamente útil porque
aumenta la velocidad de procesamiento.
C++ nos ofrece varias instrucciones, muchas de ellas
desconocidas para la mayoría de desarrollares, con las que
podemos crear potentes programas.
Así como la sobrecarga nos ayuda a escribir menos código,
las funciones amigas nos ayudan a tener un código más
legible y sencillo de entender. A medida que el código de
nuestras clases va creciendo es mucho más complicado
entenderlo y manejarlo. Con las funciones amigas podemos
escribir una línea de código indicando esa función como
amiga y en otro archivo ir colocando la definición completa
de la función, esto nos ayudará a tener un código más
legible, dándonos la posibilidad de crear varios archivos
dependiendo de la versión del software, ya que es solo de ir
agregando más archivos en donde definimos las funciones.
Es posible incluir código ensamblador en programas C++
con el ensamblador en línea, pero la sintaxis del lenguaje
ensamblador varía dependiendo del compilador utilizado.
Existe una forma de acceder a los atributos privados de una
clase, esto es con las funciones amigas.
Operator es una de las instrucciones más potentes de C++,
pudiendo tener infinidad de aplicaciones.
El uso de instrucciones avanzadas como el ensamblador en
línea es muy útil pero se debe tener cuidado ya que puede
generar la desestabilización del sistema.
C++ nos ofrece la posibilidad de mantener una variable en
un registro del procesador, se puede hacer esto por muchas Universidad Politécnica de Catalunya, Barcelona.
razones pero preferiblemente para que nuestros programas
Ensamblador Linux.
http://studies.ac.upc.edu/FIB/PROSO/index_files/AnnexAsm.pdf
Fco. Javier Ceballos. Programación Orientada a Objetos
con C++. Tercera Edición. Alfaomega Ra-Ma Editorial,
Madrid, España. 2004.
Barry B. Brey. Microprocesadores Intel, Arquitectura,
Programación e Interfaz. Séptima Edición. Pearson
Education, México. 2006.
https://plus.google.com/communities/105337365133598564957/stream
/3d866784-5ed1-483f-93a4-fb5cb234d9ae
http://todoconk.com/2016/01/20/git-en-windows/
Daniel Alvarez Alvarez
[email protected]
Estudiante de Ingeniería en
Ciencias y Sistemas - USAC
Palabras claves:
GIT, Versionamiento, Trabajo en equipo,
Versionamiento de Código, Git Flow.
Git es la herramienta de software de control de versiones
diseñado por Linus Torvalds, pensando en la eficiencia y la
confiabilidad del mantenimiento de versiones de
aplicaciones cuando éstas tienen un gran número de
archivos de código fuente. Git sustituyó a subversión, el
cual también es una herramienta de control de versiones de
código, por sus características adicionales y que es más
fácil de utilizar.
equipo, puedo describir mi experiencia ya que a través de
mi experiencia laboral he trabajado en un ambiente de
trabajo sin control de versiones, en ambiente laborales con
la herramienta Subversión y con la herramienta de Git. Ya
que Git empezó a utilizarse como una herramienta
indispensable para equipos de desarrollo se han escrito
estándares para llevar un mejor control de cómo crear
branches y en que categoría debe llevarse cada branch a
estos estándares se les ha nombrado “Git Flow”. También,
como Git está diseñado para trabajos en equipo, nos ha
permitido trabajar con personas que inclusive no están
presentes en la misma oficina pero gracias a su gran control
de versiones el desarrollo no se ve afectado, para lograr
esta característica se debe trabajar con plataformas que
alojan nuestro proyecto como lo es GitHub.
En el siguiente artículo describo mi experiencia con esta Mi experiencia en el campo de desarrollo de software me ha
gran herramienta en un ámbito profesional y de trabajo en llevado a desarrollar proyectos tan pequeños en donde un
Descargar