[Tutorial C++] II.1 - Estructura del programa C++
Página 1 de 1.
[Tutorial C++] II.1 - Estructura del programa C++
La estructura de un programa en C++ es totalmente libre. Solo debes cumplir las normas de ámbito, es decir, tener bien claro el ámbito de cada variable, de cada función, de cada objeto; pues eso es lo característico de C++, su flexibilidad. Por lo que me voy a centrar en como agrupar los datos, un ejemplo de código:
Hay muchos niveles de ámbitos. Los ámbitos de funciones (variables públicas o privadas) se tratarán más adelante, al igual que los componentes internos o externos de los objetos (clases). Los ámbitos que aquí voy a tratar son: global, espacio de nombre y llaves.
Las variables globales son aquellas declaradas al inicio, fuera de cualquier función; aunque si es dentro de main(), ya que ésta es la primera función, también se considera una variable global. Esto quiere decir que desde cualquier punto del programa se puede acceder a ella y tiene el ámbito máximo, es decir, todo el programa.
Ejemplos en el código serían:
El siguiente nivel de ámbito es artificial, y puede englobar variables, funciones e incluso objetos (clases). Dado que venimos de C, omitiré objetos por ahora. Así funcionaría los "espacios de nombre": namespace.
El código está plagado de ejemplos, pero antes de explicarlo, diré una cosa más: los bloques. Un bloque es simplemente un código cerrado por llaves, y todo aquello que se declare dentro, no podrá ser usado fuera.
Ahora voy a explicar el código:
std::cout << "El valor de PI es: " << mates::pi << "\n"; Ordena imprimir en pantalla la variable pi que esta en el namespace mates. La propia orden necesita un std:: porque tanto cout como cin están declarados en el namespace std.
std::cout << "El valor de PI entero es: " << pi << "\n"; Es la prueba de lo dicho antes, ha habido que poner std:: de nuevo. Imprime el valor pi, pero ya no es el valor real de PI que contiene mates::pi, es su valor entero: 3. Otra prueba más de que no detecta la variable pi del namespace, sino la global.
Conclusión: tienes dos opciones. Nunca usar using y usar siempre el operador de enlace (::), que nunca dará errores. Jugártela y usar using, que es más cómodo, al precio de posibles errores.
- Código:
#include <iostream>
int pi = 3;
namespace mates {
float radio = 5.0f;
const float pi = 3.141592f;
float longitud_circunferencia(float rad) {
return (rad*pi*2);
}
}
int main() {
std::cout << "El valor de PI es: " << mates::pi << "\n";
{
using namespace std;
cout << "El valor del radio es: " << mates::radio << "\n";
using namespace mates;
cout << "La longitud de la circunferencia es: " << longitud_circunferencia(radio) << "\n";
}
std::cout << "El valor de PI entero es: " << pi << "\n";
using namespace std;
cout << "El valor de PI es: " << mates::pi << "\n";
using namespace mates;
//cout << "El valor de PI es: " << pi << "\n";
return 0;
}
Hay muchos niveles de ámbitos. Los ámbitos de funciones (variables públicas o privadas) se tratarán más adelante, al igual que los componentes internos o externos de los objetos (clases). Los ámbitos que aquí voy a tratar son: global, espacio de nombre y llaves.
Las variables globales son aquellas declaradas al inicio, fuera de cualquier función; aunque si es dentro de main(), ya que ésta es la primera función, también se considera una variable global. Esto quiere decir que desde cualquier punto del programa se puede acceder a ella y tiene el ámbito máximo, es decir, todo el programa.
Ejemplos en el código serían:
- Código:
float radio = 5.0f;
int pi = 3;
El siguiente nivel de ámbito es artificial, y puede englobar variables, funciones e incluso objetos (clases). Dado que venimos de C, omitiré objetos por ahora. Así funcionaría los "espacios de nombre": namespace.
- Código:
namespace nombre {
declaracion de variables
declaracion de funciones
declaracion de objetos
}
- Código:
namespace nombre {
int variable;
}
....
nombre::variable = 5;
- Código:
using namespace nombre;
variable = 5;
El código está plagado de ejemplos, pero antes de explicarlo, diré una cosa más: los bloques. Un bloque es simplemente un código cerrado por llaves, y todo aquello que se declare dentro, no podrá ser usado fuera.
Ahora voy a explicar el código:
std::cout << "El valor de PI es: " << mates::pi << "\n"; Ordena imprimir en pantalla la variable pi que esta en el namespace mates. La propia orden necesita un std:: porque tanto cout como cin están declarados en el namespace std.
- Código:
{
using namespace std;
cout << "El valor del radio es: " << mates::radio << "\n";
using namespace mates;
cout << "La longitud de la circunferencia es: " << longitud_circunferencia(radio) << "\n";
}
std::cout << "El valor de PI entero es: " << pi << "\n"; Es la prueba de lo dicho antes, ha habido que poner std:: de nuevo. Imprime el valor pi, pero ya no es el valor real de PI que contiene mates::pi, es su valor entero: 3. Otra prueba más de que no detecta la variable pi del namespace, sino la global.
- Código:
using namespace std;
cout << "El valor de PI es: " << mates::pi << "\n";
- Código:
using namespace mates;
//cout << "El valor de PI es: " << pi << "\n";
Conclusión: tienes dos opciones. Nunca usar using y usar siempre el operador de enlace (::), que nunca dará errores. Jugártela y usar using, que es más cómodo, al precio de posibles errores.
Temas similares
» [Tutorial C] II.1 - Estructura de un programa
» [Tutorial C++] I - "HelloWorld++"
» Crear un programa Opengl para mostrar tres polígonos en fila
» [Tutorial] II.4 - glutKeyboardFunc()
» [Tutorial C] IV.3 - Estructuras
» [Tutorial C++] I - "HelloWorld++"
» Crear un programa Opengl para mostrar tres polígonos en fila
» [Tutorial] II.4 - glutKeyboardFunc()
» [Tutorial C] IV.3 - Estructuras
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|