una persona que no tiene idea de informatica ni programación lo que ve es esto:
una interacion de un objeto con un humano, el humano le pregunta a la computadora y ella responde a sus mandatos, pero en si que hay dentro de todo este sistema?
primero que todo, hay una representacion de unos y ceros llamado lenguaje de maquina que se deriva de los voltajes altos y bajos que se generan en el hardware
lo que hace un programador es escribir un archivo en un lenguaje como el c++ , este se llama el codigo fuente, lo compila, osea el computador lo pasa a unos y ceros y este genera un archivo objeto, ahora bien hay un interprete que entiende todo esos garabatos generados en el archivo objeto y varios de estos se empaquetan en un archivo formando un programa utilizado por el ser humano
Despues de entender esto uno se pregunta ¿ que clases de programación existen?
se puede dividir inicialmente en tres de acuerdo a su evolución
programación de procesamiento
programación estructurada
programación orientada a objetos
el primero en un archivo se programaba con una serie de procedimiento haciendo uso de funciones
pero cada vez esto era muy grande, entonces se solucionó dividendola en partes y uno hacia el llamado de otro según se necesitará
osea es donde apareció el concepto de modulo “modular”
luego se dieron cuenta que habia funciones iguales que se copiaban uno y otra vez en dichos modulos, entonces se preguntó en ese entonces por que no reutilzar funciones para distintas situaciones , entonces apareció la programación orientada a objetos.
ya entendido esto la pregunta como comenzar y la respuesta es crear el archivo con codigo fuente y este se puede realizar de dos formas
1 utilizando un IDE “un entorno de desarrollo integrado”
2 en un archivo de texto plano con extension .cpp en el caso de c plus plus
luego de generado el codigo se compila, como yo uso el segundo y utilizo linux lo puedo hacer desde consola con el siguiente comando
g++ nombre.cpp -o nombrearchivo
el compilador que yo utlizó es g++
este a mi me genera un archivo objeto llamado a.out, ” usualmente es .obj” pero como en el comando yo especifique que en vez de llamarlo asi lo llamara con el nombre que yo digo con -o, ahora bien este se puede ejecutar pues es como si fuera programación de procesamiento , pero si son varios los archivos objetos se es el caso de programación estrucutrada y se pueden enlazarce con el “conector”
luego de saber estos conceptos ahora si voy a generar un archivo con codigo fuente pero antes hay que saber como se compone:
- directivas de preprocesamiento
- declaraciones globales
- funciones definidas por el usuario
- funcion main
yo sigo este orden aunque en cada uno puede ir comentarios para entender el programa
las DIRECTIVAS
le indica al compilador que primero revice algo antes de compilarlo
puede suceder:
revisar sintaxis
incluir funciones de otros archivos, es lo que llaman biblioteca y esta puede ser creadas o venir por defecto.
una libreria que se utiliza mucho es <iostream>
la calocamos asi:
#include <iostream>;
esta permite utilizar la funcion de lectura y escritura con cin y cout
DECLARACIONES GLOBALES
son definiciones de variables y constantes que pueden ser utilizadas por cualquier funcion dentro del programa
su sintaxis
tipo var1,var2…;
tip var1=valor;
const tipo var1=valor;
por ejemplo
int edad;
double contador=0.0;
char nombre[30];
const double PI=3.1416;
FUNCIONES DEFINIDAS POR EL USUARIO y main
tipo nombre (parametros)
{
estatutos;
retorno;
}
un ejemplo que he sacado del curso de SENA virtual
double promedio(int a, int b, int c)
{
return (a+b+c)/3.0;
}
int main()
{
cout <<”el promedio es “<< promedio(4,5,7);
return 0;
}
se retorna a cero por que en la función le dijimos que el tipo era de caracter entero y se espera que devuelva un entero, pero igual funciona si le coloca 1,2,3,4 cualquier entero.
comentarios
su sintaxis puede ser
se comienza con // cuando el comentario es corto
o se puede delimitar un parrafo con /* parrafo */
un ejemplo sencillo que realice del diario de peter class
en la declaraciones globales se mencionó sobre variables y constantes
hablando un poquito en profuncidad resalto la clasificación que le da el señor Jesus Conde de septimo continente la cual tiene la siguiente licencia ![]()
en las constantes:
las literales son las que tienen un valor escrito directamente por ejemplo
const double PI=3.1416;
las constantes simbolicas seria como si ese valor se la asignaramos a una variables y colocasemos esta varibles como constante
PI= 3.14.16;
const numPI = PI;
las constantes emnumeradas nos permite tener un grupo asociadas a una variable
enum colorprimarios {amarillo,azul,rojo};
podemos mezclar
yo la llamaría enumeradas asociativas
enum colorprimario {amarillo=1,azul=2,rojo=3};
despues de las declaraciones globales nos vemos envuelto en las funciones pueden ser creadas por el usuario pero en si siempre hay una, la funcion main
antes de ver esto voy a ver unos conceptos la cuales son:
las decisiones y los ciclos
tanto en programación como en la vida real cada instante esta rodeada de decisiones si vamos al supermercado decidimos marcas, precios, desde que nos levantamos según la hora decidimos que hacer…
aunque a veces esto es tan repetitivo que se vuelve un ciclos.
en la decision esta el estatuto IF
su sintaxis es:
if (condicion)
estatuto;
else
estatuto;
si son varios estatutos se cierra entre llaves
un ejemplo de SENA virtual es:
if (promedio >= 70)
cout << “aprovado”;
else
cout <<”desaprobado”;
pero puede haber varias opciones y por tal estan los if anidados
if (num > 0)
cout << “el numero es positivo”;
else
if (num ==0)
cout <<”el numero es cero”;
else
cout <<”el numero es negativo”;
pero que pasa si queremos varias acciones para un solo valor no como hasta ahora se ha dicho que de una acción se desprender varios valores
se podria repetir el if o para mejor practicidad utilizar la etiqueta swith
ejemplo que pasaria si desearamos colocar rangos de 10 en 10 el promedio y darle un valor
se podria colacar
if (promedio < = 10 )
cout <<”muy mal”
if (promedio >10< =20)
cout << “todavia vamos mal”
….
…
o utilizar swith
la cual su sintaxis es
swith (variable)
{
case valor1:accion1; break;
case valor2:accion2; break;
…
….
defaut:acciondefecto;
};
esta encuentra una que sea cierta, si es asi se ejecuta y el break termina el proceso, si no llega al defaut y ejecuta esa accion.
CICLOS
while
while do
for
while sintaxis
while (condicion)
{
estatutos;
}
se ejecuntan los estatutos mientras la condicion se cumple
ejemplo
se compila
while do sintaxis
do
{
estatutos;
}while(condicion);
for (inicializacion; condicion; accion)
{
estatutos;
}
un ejercicio muy interesante
se compila y se interpreta
declaración y funciones
aunque en un archivo se pueden crear todas las funciones definidas por nosotros, la esencia de la evolucion es la programación estrucutrada
la cual modulariza esto.
me gustaria resaltar esta parte de que dice el señor Jesus Conde en septimo continente.
en la funcion principal “main “de un archivo hace el llamado de otras funciones donde se han invocado en las directivas de preprocesamiento con include o tambien puede estar en el mismo archivo.
pero en si que es ?
en los cursos de SENA Virtual nos muestra un grafico interesante, me hace acordar cuando veia precalculo.
hay que tener en cuenta que parea hacer uso de una funcion esta tiene dos partes
declaracion de la funcion
llamada de la funcion
declaracion de una funcion
tipo nombre (lista de parametros)
{
declaración de variables locales
estatutos;
return valor;
}
llamada de la funcion
nombre (lista de parametros );
pero en este caso se dan los valores a los parametros
ejemplo
ummm pero ahora me surge un interrogante
variables globales
variables locales
y cual es su alcance?
las variables globales son declaradas con el proposito de ser util a cualquier funcion en el programa
las variables locales son declaradas con el proposito de ser util a una funcion en particular
dentro de estas hay un subtipo que es la varibles locales del for que como se imaginará solo es util a este ciclo en la funcion
en los cursos de SENA virtual lo muestran con un grafico interesante
PROGRAMACION ORIENTADA A OBJETOS
que es?
Cuando era niño tenia una caja donde ponía todas las “cosas “, que me parecía que podrían ser útil algún día, temperas, juguetes que había destapado y ya no servían, objetos que me parecían bonitos, etc hoy en día podría ser un cuarto útil donde colocamos todas esas mismas cosas pero mas acorde a nuestra edad, baterías, pedazos de materiales que nos sobraron en algunos trabajos, etc
pero llega un memento que es tan grande esta caja que es difícil encontrar lo que uno quiere y por eso desde niño uno decide separar esto en clases y ponerlo en distintas cajas
pero la pregunta ahora es como?
y lo que en ese entonces decidí fue separarlos de acuerdo a su función y después de separarlos asi, separarlos de acuerdo a sus características, osea que si su función era la de pintar, luego fue separados por su color, clase (madera,pared, hoja etc)…..
ahora he separado algo así
bueno lo que hice fue crear clases de objetos de acuerdo a una funcionalidad, herramientas, cd, recuerdos, objetos electrónicos, objetos de computador , luego puedo crear de acuerdo a esta funcionalidad, por ej, cd de música, de información, etc, herramientas de mecánica, electrónica, mantenimiento de computador etc y si por algún motivo me encuentro algo que encaje en una de ellas lo coloco ahí o creo otra.
cuando veo esta caja que es como una interfaz se viene a la cabeza verbos como pintar, arreglar, modificar osea algo como
caja cd cd_informacion;
cd_informacion.instalar_sistema_operativo_xp();
esto es un mensaje que se le envía a la interfaz
de hecho no se que garabatos haya dentro del cd, solo con esto me permite encontrar una forma de instalar un sistema operativo, encontrando el cd apropiado y una receta.
en la programación orientada a objetos podemos diferenciar una clase por:
nombre de la clase
interfaz
datos ocultos “implementación”
luego se envía un mensaje que hace la petición de uno de sus métodos que se encuentran en la interfaz y cuyo código se encuentra en la implementación
” instancia”
“se envía el mensaje “
hay una opción que nos permite socializar y enviar mensajes antes de ser utilizadas, osea envía un mensaje apenas se instancia
” constructor “
su nombre es el mismo que el nombre de la clase y no tiene definido un valor de retorno
haciendo el curso de c++ en sena virtual puedo destacar lo siguiente:
la interfaz en el curso la mencionan como prototipo y su formato es la siguiente:
class NombreClase
{
public:
// declaración de atributos y métodos públicos
private:
// declaración de atributos y métodos privados
};
luego viene la implementación :
tipo retorno NombreClase :: NombreMetodo (párametros)
{
estatutos;
retorno;
}
luego se instancia o define la clase “se crean objetos según la interfaz de la clase”
NombreClase NombreObjeto; (el NombreObjeto es una variable)
se envia el mensaje: “se tiene acceso a la parte publica de la interfaz “
NombreObjeto.NombreMetodo (parámetros);
con el constructor se distanciaría y se colocaría parámetro si este tuviese parámetros
NombreClase NombreObjeto(parámetros);
ahora bien en los cursos del señor Jesús Conde destaco:
menciona dos elementos importantes en la interfaz de una clase que son:
variables miembro y funciones miembro que en el argot de oop sería atributos y métodos que en si son:
características, propiedades (atributos)
acciones (métodos)
la colecciones de funciones mas las colecciones de variables es lo que se llama declarar una clase, que en si es la interfaz de la clase
y es lo que mostré en la sintaxis del prototipo del curso de sena virtual, a esto se le llama encapsulación.
por defecto la interfaz en una clase “class ” es privada y en una estructura “struct” es publica a no ser que se especifique y es por tal que en el interfaz “prototipo” mostrado en la sintaxis hay dos partes una publica y otra privada
esto quiere decir que con la publica podemos trabajar fuera de la clase o estructura, osea cuando se hace la definición o se instancia y con la privada no, con esta solo se puede trabajar en la mismo clase o estructura, osea en la misma interfaz.
aquí ocurre algo interesante y es la forma en como acceder a los miembros privados de la interfaz desde afuera de la clase por ejemplo desde la función main(), “esto teniendo en cuenta que las atributos y métodos deben de ser privadas.”
y es lo que el señor Jesús Conde menciona como métodos accesores que es una función que esta en la parte publica de la interfaz y sirve de puente “interfaz “ entre los miembros privados y lo externo a la clase .
la otra parte de la clase es la implementación, que en si da el retorno de la declaración en la interfaz
un ejemplo que el autor da: “Caballo Janto” en c++
lo compilamos y lo ejecutamos y este es el resultado:
si hacemos uso de constructor
se espera que se coloque esto
NombreClase NombreObjeto(parámetros);
si no hacemos uso del constructor se espera
NombreClase NombreObjeto; (el NombreObjeto es una variable)
se envia el mensaje: “se tiene acceso a la parte publica de la interfaz “
NombreObjeto.NombreMetodo (parámetros);
cuando no cambia el valor o el retorno de los metodos de la interfaz se hace uso de const asi:
tipo retorno nombreMetodo() const;
es utilizado cuando se quiere obtener un valor, no modificarlo, por eso no tiene parametros
es interesante ver que tambien se puede implementar los metodos en la misma interfaz, es lo que el autor llama metodo de clase inline
tipo_de_retorno nombreMetodo() {return atributo;}
tipo_de_retorno nombreMetodo() const { return atributo;}
otra forma de colocar ” inline” es en la implementacion cuando no esta especificado el atributo en un miembro privado en la interfaz
inline tipo_retorno NombreClase :: NombreMetodo()
{
return atributo;
}
un ejemplo tomado de septimo Continente c++
los cursos en c++ de Sena virtual son tres niveles, aquí se encuentran
yo los hice y son interesanes, aprendí mucho.























