ESTRUCTURA DE UN PROGRAMA
![]() |
*Estructura general de un programa. Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos).
VARIABLE
las variables son espacios reservados en la memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una variable corresponde a un área reservada en la memoria principal del ordenador.
Para que nuestro código sea más entendible y claro, el identificador de la variable debe ser mnemotecnia, es decir que debe reflejar el uso dentro del programa de la misma.
TIPOS
![]()
![]()
De tipo char o de carácter:
Son variables que almacenan caracteres individuales (letra, numero, signo ?, etc...). El carácter que se inicializa debe ir entre apóstrofes o comillas simples 'a'.
![]() Variables referenciadasCasting o transformaciones de tipo
El casting es un procedimiento para transformar una variable primitiva de un tipo a otro, o transformar un objeto de una clase a otra clase siempre y cuando haya una relación de herencia entre ambas
Explícito: sí es necesario escribir código. Ocurre cuando se realiza una conversión estrecha (narrowing casting), es decir, cuando se coloca un valor grande en un contenedor pequeño. Son susceptibles de pérdida de datos.
Sentencias (Programación).
Son las unidades ejecutable más pequeña de un programa, en otras palabras una línea de código escrita es una sentencia. Especifican y controlan el flujo y orden de ejecución del programa. Una sentencia consta de palabras clave o reservadas como (cout, cin, for, while, if ... else,etc.), expresiones, declaraciones, o llamadas a funciones. Si no existen sentencias específicas de selección o salto, el programa se ejecuta de forma secuencial en el mismo orden en que se ha escrito el código fuente (es el que podríamos considerar orden "natural" de ejecución).
Definición
Una expresión es una secuencia de operadores; operandos; elementos de puntuación y palabras clave, que especifican una computación. Tiene sentido computacional en sí misma y equivale a una frase en el lenguaje normal. Entre sus características distintivas están las de poder producir un resultado y posibles efectos laterales. Ejemplo:
extern x; // No produce un valor
y = 22; // Produce un valor
z = i++; // Valor + efectos laterales
Cualquier expresión finalizada en un punto y coma ; forma una sentencia:
< expresión >;
Las sentencias se ejecutan evaluando la expresión. Todos los efectos colaterales de la evaluación son tenidos en cuenta antes de ejecutar la próxima sentencia. La mayoría de sentencias son asignaciones o llamadas a funciones. Un caso especial es la sentencia nula; consiste en un punto y coma (;) aislado. Una sentencia nula no hace nada, pero puede ser necesaria en situaciones en que la sintaxis del lenguaje espere una sentencia pero nuestro programa no necesita hacer nada.
Clasificación
Dada la definición anterior, resulta evidente que pueden existir infinitas sentencias distintas, e innumerables criterios para su clasificación. Una de las posibles, que además coincide con la clasificación del Estándar, distingue las siguientes clases de sentencia:
Además de las anteriores, por sus características especiales podríamos considerar las siguientes clases adicionales:
Sentencias de etiqueta
Existen tres clases de sentencias etiquetadas: las etiquetas directas, las sentencias case y las default, estas últimas se utilizan en conjunción con las sentencias switch.
Sentencias de expresión
Podríamos decir que son las que no pertenecen a ninguno de los otros grupos y que, en la práctica, son las más abundantes. Generalmente son asignaciones o invocaciones de funciones. Ejemplo:
pint = &x;
foo(c);
Sentencias compuestas
Las sentencias compuestas, también denominadas bloques se utilizan en aquellas situaciones en que la sintaxis espera una sentencia pero se necesita usar varias. Ejemplo:
if (first) ++x;
else {
--x; z = a;
}
En caso de cumplirse la condición hay que incrementar x, lo que puede hacerse en una sola sentencia, pero si la condición resulta falsa, se precisan dos computaciones. Para que se comporten como una sola frente a else, se recurre a englobarlas en un bloque entre llaves { ... }. Las sentencias dentro del bloque se comportan como una sola y constituyen un ámbito léxico. Los identificadores definidos en su interior eclipsan a los exteriores y las variables automáticas creadas en él son destruidas al salir del ámbito.
Sentencias de selección
Las sentencias de selección o de control de flujo, pueden decidir entre varios cursos de acción distintos en función de ciertos valores. Existen dos tipos de estas sentencias de selección: if...else y switch. Ejemplo:
switch ( foo() ) {
case 0: case 1:
if (first) break;
else ++x;
case 2:
...
default:
break;
}
Sentencias de iteración
Las sentencias de iteración permiten repetir un conjunto de sentencias ejecutando un bucle. En C++ existen tres formas de iteraciones: los bucles while, do…while y for. Ejemplo:
while (first) {
...
for (int x = 1; x < y; ++x) {
...
do { // begin second
...
...
} while (second); // end second
...
} // end for
...
} // end first
Sentencias de salto
Las sentencias de salto permiten transferir el control del programa de forma incondicional. Existen cuatro de estas sentencias: break, continue, y return. Ejemplo:
while (foo) {
start:
if (some) break;
...
if (first) goto start;
...
if (second) continue;
...
if (! any) return;
...
}
Sentencias de declaración
Este tipo de sentencias introducen uno o más identificadores en un bloque. Ejemplo:
void foo (int x, y z) {
float f = 3.14;
char c;
int x;
...
}
Bloques de intento
Estas sentencias deben estar seguidas de una sentencia catch y tienen la forma:
try {
...
}
Sentencias de preproceso
Constituyen un tipo muy especial, tanto en su sintaxis como en su comportamiento. No representan una computación en tiempo de ejecución (runtime), sino de compilación, ya que su efecto es realizar modificaciones sobre el código fuente. Su sintaxis también es especial; no requieren el punto y coma de terminación y comienzan siempre con el símbolo #.
Sentencias ensamblador
C++ dispone de la opción de poder escribir directamente instrucciones en lenguaje ensamblador junto con el resto del código fuente. Para esto dispone de una palabra clave específica: asm. La palabra asm indica que la cadena literal que sigue será incluida en el código objeto en la posición indicada. La sintaxis empleada depende del compilador. En el caso de C++ Builder, es la siguiente: asm <opcode> <operandos> <; o NL> Ejemplo
asm pop dx;
asm push ebx;
asm call @@std@%basic_ostream$c19std@%char_traits$c%%@put$qc;
asm add esp,8;
asm push ebx;
Se permite que varias instrucciones ensamblador puedan ser agrupadas en un solo bloque precedido por el indicador asm. Ejemplo:
asm {
mov ax, 0x0e07;
xor bx, bx;
int 0x10;
}
La sintaxis empleada por el compilador C++ GNU para Windows utilizado por Dev-C++ no utiliza la sintaxis de Intel, sino la de AT&T. Ejemplo:
int AdrIO; // variable global
static char ValIO; // variable global
void foo() {
__asm("mov _AdrIO, %dx") ; // cargar un registro de 16 bits
__asm("mov _ValIO, %al") ; // cargar un registro de 8 bits
__asm("mov %ax,%dx") ; // mover contenido registro AX a DX
}
PROCESO DE EJECUCION DE UN PROGRAMA EN C
Edición. El código se escribe en un editor de texto o en un editor de código preparado para esta acción. El archivo se suele guardar con extensión .cpp (también en cxx, c++ o cc).
Preprocesado. Antes de compilar el código, el preprocesador lee las instrucciones de preprocesador y las convierte al código fuente equivalente.
Compilación. El código fuente resultante en lenguaje C++ se compila mediante el software apropiado, obteniendo un código máquina llamado archivo objeto (cuya extensión suele ser .obj). Este código aún no es ejecutable ya que necesita incluir el código máquina relativo a las funciones y módulos que se utilizaban en nuestro código. Estas funciones están incluidas en archivos externos (librerías).
Enlazado. El código objeto se une al código compilado de las librerías y módulos invocados por el código anterior. El resultado es un archivo ejecutable (extensión .exe en Windows)
Cargado. Normalmente lo realiza el propio entorno de ejecución. El archivo ejecutable se lanza en el Sistemas Operativo.
Ejecución de las instrucciones por la CPU. Es entonces cuando el procesador accede al código máquina del programa ya convertido y ejecuta las acciones. Será entonces cuando veamos los resultados.
DISEÑO
Definimos el diseño, como un proceso o labor a , proyectar, coordinar, seleccionar y organizar un conjunto de elementos para producir y crear objetos visuales destinados a comunicar mensajes específicos a grupos determinados.
|