Si buscas hosting web, dominios web, correos empresariales o crear páginas web gratis, ingresa a PaginaMX
Por otro lado, si buscas crear códigos qr online ingresa al Creador de Códigos QR más potente que existe


8.3 Estructura de datos
8.3.1 Plano de programa

 
8.3.2 Implementación
 
  • Primero se aplica el ensamblamiento y la propagación de constantes.
  • Después se reordena el árbol sintáctico hasta obtener la forma normal.
  • Se inicia la eliminación de las subexpresiones redundantes.
  • Hay que considerar las asignaciones que pueden convertir una subexpresion redundante en no redundante. Ejemplo:
 
  • Ejemplo de eliminación de subexpresiones
J=2*D+3
D=D*2
J=J+D
 
8.4 Enunciados  de recursión, llamada y retorno

 
8.5 Clases de almacenamiento y su uso
8.5.1 Almacenamiento estático

Para especificar este tipo de almacenamiento se usa el especificador static.

Sintaxis:
static ;
static ();

Cuando se usa en la declaración de objetos, este especificador hace que se asigne una dirección de memoria fija para el objeto mientras el programa se esté ejecutando. Es decir, su ámbito temporal es total. En cuanto al ámbito de acceso conserva el que le corresponde según el punto del código en que aparezca la declaración.

Debido a que el objeto tiene una posición de memoria fija, su valor permanece, aunque se trate de un objeto declarado de forma local, entre distintas reentradas en el ámbito del objeto. Por ejemplo si se trata de un objeto local a una función, el valor del objeto se mantiene entre distintas llamadas a la función. Hay que tener en cuenta que los objetos estáticos no inicializados toman un valor nulo. Por el contrario, si se le da un valor inicial a una variable estática, la asignación sólo afecta a la primera vez que es declarada.

Este tipo de almacenamiento se usa con el fin de que las variables locales de una función conserven su valor entre distintas llamadas sucesivas a la misma. Las variables estáticas tienen un ámbito local con respecto a su accesibilidad, pero temporalmente son como las variables externas.

Parecería lógico que, análogamente a lo que sucede con el especificador auto, no tenga sentido declarar objetos globales como estáticos, ya que lo son por defecto. Sin embargo, el especificador static tiene un significado distinto cuando se aplica a objetos globales. En ese caso indica que el objeto no es accesible desde otros ficheros fuente del programa.

En el caso de las funciones, el significado es el mismo, las funciones estáticas sólo son accesibles desde el fichero en que están declaradas.

8.5.2 Almacenamiento automático

Para especificar el tipo de almacenamiento automático se usa el especificador auto.

Sintaxis:
[auto] ;

Sirve para declarar variables automáticas o locales. Es el modificador por defecto cuando se declaran variables u objetos locales, es decir, si no se especifica ningún modificador, se creará una variable automática.

Estas variables se crean durante la ejecución, y se elige el tipo de memoria a utilizar en función del ámbito temporal de la variable. Una vez cumplido el ámbito, la variable es destruida. Es decir, una variable automática local de una función se creará cuando sea declarada, y se destruirá al terminar la función. Una variable local automática de un bucle será destruida cuando el bucle termine.

Debido a que estos objetos serán creados y destruidos cada vez que sea necesario, usándose, en general, diferentes posiciones de memoria, su valor se perderá cada vez que sean creadas, perdiéndose el valor previo en cada caso. Por supuesto, no es posible crear variables automáticas globales, ya que son conceptos contradictorios.

8.5.3 Almacenamiento controlado externo

Para especificar este tipo de almacenamiento se usa la palabra extern.

Sintaxis:
extern ;
[extern] ();

De nuevo tenemos un especificador que se puede aplicar a funciones y a objetos. O más precisamente, a prototipos de funciones y a declaraciones de objetos.

Este especificador se usa para indicar que el almacenamiento y valor de una variable o la definición de una función están definidos en otro módulo o fichero fuente. Las funciones declaradas con extern son visibles por todos los ficheros fuente del programa, salvo que (como vimos más arriba) se defina la función como static. El especificador extern sólo puede usarse con objetos y funciones globales. En el caso de las funciones prototipo, el especificador extern es opcional. Las declaraciones de prototipos son externas por defecto. Este especificador lo usaremos con programas que usen varios ficheros fuente, que será lo más normal con aplicaciones que no sean ejemplos o aplicaciones simples.

8.5.4 Almacenamiento controlado interno        
  

Para especificar este tipo de almacenamiento se usa el especificador register.

Sintaxis:
register ;

Indica al compilador una preferencia para que el objeto se almacene en un registro de la CPU, si es posible, con el fin de optimizar su acceso, consiguiendo una mayor velocidad de ejecución.

Los datos declarados con el especificador register tienen el mismo ámbito que las automáticas. De hecho, sólo se puede usar este especificador con parámetros y con objetos locales.

El compilador puede ignorar la petición de almacenamiento en registro, que se acepte o no estará basado en el análisis que realice el compilador sobre cómo se usa la variable.

Un objeto de este tipo no reside en memoria, y por lo tanto no tiene una dirección de memoria, es decir, no es posible obtener una referencia a un objeto declarado con el tipo de almacenamiento en registro.

Se puede usar un registro para almacenar objetos de tipo char, int, float, punteros. En general, objetos que quepan en un registro.

8.5.5 Almacenamiento basado

 
8.5.6 Ejecución

 
8.5.7 Estructuras del bloque

 
8.5.8 Enunciados go to no locales

 
8.5.9 Interrupciones

Interrupción (también conocida como interrupción de hardware o petición de interrupción) es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación.

Una interrupción es una suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una subrutina de servicio de interrupción, la cual, por lo general, no forma parte del programa (generalmente perteneciente al sistema operativo, o al BIOS). Luego de finalizada dicha subrutina, se reanuda la ejecución del programa.

Las interrupciones surgen de las necesidades que tienen los dispositivos periféricos de enviar información al procesador principal de un sistema de computación.

8.5.10 Indicadores (pointers)

El indicador de programación se usa para definir si hay que ejecutar el programa del ciclo de fabricación para el cálculo de fechas extremas (fechas planificadas) para materiales fabricados en la empresa. El programa del ciclo de fabricación calcula las fechas de inicio y final para la fabricación. El sistema sólo crea la necesidad de capacidad si se ha ejecutado el programa del ciclo de fabricación.
© 2025

26192