Menú
Está libre
registrarse
el principal  /  La Internet / Estructura del programa modular. Estructura del programa: estructura de bloques de bloque

Estructura del programa modular. Estructura del programa: estructura de bloques de bloque

Empezando a desarrollar cada programa de PS, debe tenerse en cuenta que es sistema grandePor lo tanto, debe tomar medidas para simplificarla. Para esto, el programa se desarrolla por partes que se denominan módulos de software. Este método de programación se llama programación modular.

El módulo es una parte independiente de un programa que tiene un cierto valor y proporciona funciones de procesamiento específicas fuera de línea de otros módulos de software. Cada módulo de software está programado, compilado y depurado por separado de otros módulos de programa, y, por lo tanto, físicamente dividido con otros módulos de software. Cada módulo de software se puede incluir en diferentes programasSi se realizan las condiciones para su uso descrito en la documentación de su uso. Esos. El módulo bien pensado evita la duplicación en la programación.

Cualquier PS tiene su propia estructura que está diseñada para su conveniencia:

  • 1. Desarrollo
  • 2. Programación
  • 3. Depuración
  • 4. Enmiendas

Además, la estructuración del PS permite:

  • 1. Distribuya el trabajo por parte de los artistas, asegurando su descarga y el tiempo de desarrollo requerido.
  • 2. Construir gráficos de calendario de trabajo de diseño y coordenarlos en el proceso de creación de PI.
  • 3. Controlar los costos laborales y el costo del trabajo de diseño.

Al crear el PS, se asignan módulos usados \u200b\u200bmultiplicados, se tipifican y se unen, debido a que se reducen el tiempo y los costos laborales para el desarrollo del PR en su conjunto.

Algunos PS usan módulos listosizados de bibliotecas de procedimientos estándar, funciones, objetos y métodos de procesamiento de datos.

Estructura típica PD:

módulo de software de depuración de Belayer

Mesa. Tipos de módulos

Propiedades del módulo:

  • 1. Una entrada y una salida: en la entrada, el módulo del programa recibe un conjunto específico de datos de origen, realiza el procesamiento de datos y devuelve el resultado.
  • 2. Funcionamiento funcional: el módulo realiza una lista de operaciones para implementar cada función individual en su totalidad.
  • 3. Independencia lógica: el resultado del módulo depende solo de los datos de origen, y no depende de la operación de otros módulos.
  • 4. Conexiones de información débiles con otros módulos de software: el intercambio de información entre los módulos debe minimizarse si es posible.
  • 5. Previible en tamaño y complejidad.

Cada módulo consiste en una especificación y un cuerpo del módulo.

Especificación - Reglas de uso del módulo.

El cuerpo es una forma de implementar el proceso de procesamiento.

Principio de programación modular PS:

  • 1. Definición de la composición y subordinación de las funciones.
  • 2. Definición de un conjunto de módulos de software que implementan estas funciones.

Al elaborar un algoritmo, es necesario considerar:

1. Se llama a cada módulo para ejecutar un módulo más alto y terminar el trabajo, devuelve el control que causó el módulo.

Métodos para desarrollar la estructura del programa.

Como estructura modular del programa, es habitual utilizar una estructura de árbol, incluidos árboles con sucursales controvertidas. En los nodos del árbol se colocan módulos, y las flechas muestran la subordinación de los módulos (es decir, en el texto del módulo, desde donde procede, hay un enlace al módulo en el que entra).

La estructura modular del programa también debe incluir un conjunto de especificaciones de módulos que forman este programa. La especificación del módulo de software contiene:

  • 1. La especificación de la sintaxis de sus entradas, lo que permite crear una apelación al lenguaje de programación utilizado
  • 2. Especificación del módulo funcional (descripción de todas las funciones realizadas por este módulo).

Hay diferentes métodos para desarrollar la estructura del programa. Por lo general, se utilizan 2 métodos:

  • 1. Método ascendente
  • 2. Método de desarrollo a la baja.

Método ascendente.

Primero construye una estructura modular de un árbol en forma de árbol. Luego, los módulos del programa también están programados, comenzando con los módulos de bajo nivel, de tal manera, de manera que todos los módulos a los que pueda aparecer ya esté programado para ser programado. Después de que todos los módulos del programa están programados, las pruebas alternativas y la depuración en principio de la misma manera (ascendente), en las que se realizó su programación. A primera vista, un procedimiento de este tipo para desarrollar el programa parece bastante natural: cada módulo de programación se expresa a través de los módulos subordinados ya programados directamente, y cuando las pruebas utilizan módulos ya depurados. No recomendado, porque:

  • 1. Para programar cualquier módulo, los textos utilizados por ellos no se requieren en absoluto: para esto, es suficiente para cada módulo que solo se especifique el módulo (en un volumen que nos permita crear un atractivo correcto), y Para la prueba, es posible reemplazarlos con simuladores (enchufe).
  • 2. Cada programa hasta cierto punto obedece a algunos internos, pero las consideraciones globales para sus módulos (los principios de implementación, suposiciones, estructuras de datos, etc.), que determinan su integridad conceptual y se forman en el proceso de su desarrollo. Con el desarrollo ascendente, esta información global para módulos de bajo nivel aún no está clara, por lo que a menudo es necesario reprogramarlas.
  • 3. Cuando aumenta las pruebas, para cada módulo (excepto la cabeza), debe crear un programa host (módulo), que debe preparar el estado necesario del entorno de información para el módulo de prueba y producir la apelación requerida. Esto conduce a una gran cantidad de programación de "depuración" y, al mismo tiempo, no da ninguna garantía de que la prueba de los módulos se realizó precisamente en las condiciones en las que se realizarán en el programa de trabajo.

Método de desarrollo a la baja.

Primero construye una estructura modular de un árbol en forma de árbol. Luego, los módulos del programa también están programados, comenzando desde el propio módulo. nivel superior (Cabeza), moviéndose a programar cualquier otro módulo solo si el módulo ya está programado, al que se hace referencia. Después de programar todos los módulos de programa, sus pruebas alternativas y su depuración en la misma manera (descingerable).

Lados positivos

  • 1. Con este orden de desarrollo del programa, toda la información global necesaria se forma de manera oportuna, es decir, Fuente extremadamente desagradable de errores erróneos cuando se eliminan los módulos de programación.
  • 2. Facilitó significativamente y pruebe los módulos producidos por el programa de prueba descendente. El primer programa es el módulo de la cabeza del programa, que representa el programa de prueba completo y, por lo tanto, se prueba con el estado "natural" del entorno de información en el que comienza a realizar este programa. Al mismo tiempo, todos los módulos a los que pueden manejar la cabeza son reemplazados por sus simuladores. El simulador del módulo es una simple señalización de fragmento de software, sobre el hecho de referirse al módulo simulado con el proceso de sus parámetros de entrada necesarios para el funcionamiento correcto del programa y con la emisión, si es necesario, antes del resultado adecuado adecuado. . Después de completar las pruebas y depurar la cabeza y cualquier módulo posterior, la transición a probar uno de los módulos que este momento Representado por simuladores, si los hay. Para hacer esto, el simulador del módulo seleccionado para la prueba se reemplaza por este módulo en sí mismo y los simuladores de aquellos módulos a los que se puede agregar el módulo seleccionado para la prueba. Además, cada uno de estos módulos se analizará con los estados "naturales" del entorno de información derivados del tiempo de referencia a este módulo cuando se realiza el programa. Por lo tanto, el gran volumen de la programación de "depuración" se reemplaza por la programación lo suficientemente simples simuladores utilizados en el programa del módulo. Además, los simuladores se utilizan convenientemente para reproducir el proceso de selección de prueba especificando los resultados necesarios emitidos por simuladores.

Los métodos considerados se denominan clásicos. En ellos, la estructura de árbol modular del programa debe desarrollarse antes de programar los módulos. Sin embargo, este enfoque causa una serie de objeciones: es poco probable que la programación del programa pueda desarrollarse para desarrollar la estructura del programa con bastante precisión y de manera significativa.

Con los enfoques constructivos y arquitectónicos para el desarrollo del programa, la estructura modular se forma durante el proceso de programación de los módulos.

Enfoque constructivo (modificación de enlace descendente)

La estructura de árbol modular del programa se forma durante el proceso de programación del módulo. Primero, programó el módulo de la cabeza, basado en la especificación del programa en su conjunto, la especificación del programa es simultáneamente la especificación de su módulo principal, ya que este último asume la responsabilidad de realizar las funciones del programa. En el proceso de programación del módulo de la cabeza, si este programa es bastante grande, se asignan funciones internas, en términos de los cuales se programó el módulo de la cabeza. Esto significa que para cada función destacada, se crea la especificación del programa que implementa su fragmento, que luego puede ser representado por algunos módulos de subtilding. Es importante tener en cuenta que aquí también la responsabilidad de la ejecución de la función seleccionada toma el módulo de la cabeza (tal vez el único) de este subárbol, de modo que la especificación de la función seleccionada sea simultáneamente la especificación del módulo de la cabeza de este soporte. En el módulo de la cabeza del programa para apelar a la función seleccionada, se convierte en el módulo de la cabeza del subárbol especificado de acuerdo con su especificación creada. Por lo tanto, en el primer paso de desarrollar un programa (al programar su módulo de cabeza), la parte superior del árbol está formada, por ejemplo, que se muestra en la FIG. 7.1.

Higo. 7.1.

Se realizan acciones similares al programar cualquier otro módulo que se selecciona de estado actual El árbol del programa es de los módulos numéricos especificados, pero aún no programados. Como resultado, se realiza la siguiente deformación del árbol del programa, por ejemplo, que se muestra en la FIG. 7.2.

Enfoque arquitectónico (modificación de enlace ascendente)

La estructura modular del programa se forma durante el proceso de programación del módulo. Pero al mismo tiempo se establece otro propósito del desarrollo: mejorar el nivel de lenguaje de programación utilizado, y no el desarrollo de un programa específico. Esto significa que las funciones típicas se asignan para un área de objeto determinada, cada una de las cuales se puede usar al resolver tareas diferentes en esta área, y se especifican, y luego se programan los módulos de software individuales que realizan estas funciones. Dado que el proceso de selección de dichas funciones se asocia con la acumulación y generalización de la experiencia de resolver problemas en un área temática determinada, generalmente se asigna a asignar e implementar mediante modules separados Funciones más simples, y luego los módulos que utilizan funciones seleccionadas anteriormente son aparecen gradualmente. Este conjunto de módulos se crea en función del hecho de que, en el desarrollo de un programa dado de un área temática determinada en el marco de un enfoque constructivo, algunos de estos módulos pueden ser aceptables.

Esto hace posible reducir los costos de mano de obra para desarrollar un programa específico conectándose, a la preparación previa y probada en la práctica de estructuras de nivel inferior modular. Dado que tales estructuras se pueden usar repetidamente en diferentes programas específicos, el enfoque arquitectónico puede considerarse como una forma de combatir la duplicación en la programación. En este sentido, los módulos de software creados dentro del enfoque arquitectónico generalmente se parametrizan con el fin de mejorar la aplicabilidad de tales módulos al ajustarlos a los parámetros.

Higo. 7.2.

Método de implementación a la baja. Cada módulo programado comienza a ser probado inmediatamente antes de pasar a la programación de otro módulo.

Como regla general, los procedimientos y las funciones se encuentran en las particiones de procedimientos y funciones, es decir, están incrustados en los programas u otras subrutinas. Con tal inversión, la descripción de la subrutina es el componente del bloque, y la subrutina en sí incluye un bloque, entonces puede ingresar los conceptos de externos y bloqueo interno.

La unidad externa es un bloque en el que se invierte la subrutina. El bloque interno es la subrutina en sí. Todas las descripciones ubicadas en bloques externos para este subprograma se denominan global en el bloque, que forma esta subrutina. Todas las descripciones ubicadas en el bloque interno se llaman locales. Puedes ingresar el concepto de niveles de anidación. Si en la descripción de los procedimientos y funciones describe dos o más subrutinas, dicen que estos subprogramas de un nivel de anidación. En relación con el bloque externo, son internos. En relación con los subprogramas, no podemos usar los términos términos externos o internos, ya que son un nivel de anidación. Si una subrutina está incrustada en las descripciones de los procedimientos y funciones del bloque externo, dentro del cual se encuentra otra subrutina en la misma sección, estamos hablando de diferentes niveles de anidación de estas subrutinas. Para el tercer bloque, que es el subprograma más interno, ambos bloques en los que está incrustado será externo. El nivel de anidamiento de este subprograma 2. Para el segundo bloque, el tercer bloque será interno, y el primero es externo. El nivel de anidamiento del segundo bloque 1. Para el primer bloque (externo), segundo y tercero bloques será interno. El nivel de anidamiento del primer bloque 0, es decir,. Esta unidad es el programa principal.

Por ejemplo, considere la estructura de los bloques propuestos por el autor del idioma (Fig.16.16). Aquí en la séptima sección del programa A, dos subrutinas B y C están incrustadas. En la subrutina en la subrutina D. a su vez, la subrutina de la subrutina G se anidó en el subprograma. La subrutina con dos subrutinas E y F.

Higo. 16.16. - Ejemplo de estructura de bloque

Entenderemos con el alcance de las descripciones. Las descripciones de las etiquetas son válidas solo dentro de la sección de los operadores de bloques en los que se describen. Todas las demás descripciones actúan no solo dentro del bloque en el que se describen, sino también en todos los bloques internos incrustados en esta unidad (independientemente de la profundidad de anidación). Parecía que podían surgir. conflictos entre descripciones globales y locales.Dado que varios conceptos se pueden nombrar en diferentes bloques de nombres idénticos. Para que ocurran tales conflictos, se toma la siguiente regla: todos los nombres definidos en las descripciones locales Cancelan las acciones de los nombres coincidentes descritos en las descripciones globales. En la Fig. 16.17 muestra la ubicación de los bloques de un ejemplo en los niveles. Aquí, las líneas de flecha muestran la acción de las descripciones globales. Así que en el bloque G, hay descripciones de bloques externos D, B, A.

Higo. 16.17. - Ubicación de bloques en niveles y descripciones globales.

Consideraremos especialmente el acceso a las subrutinas. Cualquier subrutina se puede llamar:

    de los operadores de bloques en los que se describe;

    de la partición de los operadores en sí (recursión directa);

    de la sección de operadores de cualquier subrutina interna en relación con esta (recursión indirecta);

    desde la sección de los operadores de cualquier subprograma descrito anteriormente en el mismo bloque, donde esta subrutina.

Estas reglas pueden reformularse de la siguiente manera: cualquier subprogramm puede solicitar:

    cualquier subprograma descrito en la sección de subrutinas de esto;

    auto (recursión directa);

    todos los subprogramas externos en relación con esta (recursión indirecta);

    subprogramas descritos anteriormente en el mismo nivel de anidación.

La interacción de los bloques (subrutinas) del ejemplo se muestra en la FIG. 16.18.

Higo. 16.18 - Un ejemplo de interacción entre bloques.

Aquí, las líneas de flecha muestran la posibilidad de llamar a las subrutinas de ejecución (las flechas indican la dirección de la llamada). Por ejemplo, desde el programa, solo se pueden causar subprogramas IN y C, que se invierten en la séptima sección pueden ser causados. Desde la subrutina F, la subrutina F (recursión directa), la subrutina C, a la que está incrustada (recursión indirecta) y el subprograma E (está en el mismo nivel y se describe anteriormente). S Programas A pueden ser causados \u200b\u200bpor las subrutinas B y C. TABLA 16.9 para listas todas las posibles interacciones entre bloques. Aquí, el algoritmo principal es un bloque a partir de el cual se realiza la llamada de subrutina, el algoritmo auxiliar es la subrutina llamada.

Tabla 16.9.Un ejemplo de interacción entre bloques.

Estructura modular del programa.

Para simplificar la solicitud, mejorar su confiabilidad y la eficiencia aplica un enfoque modular. La división de módulos le permite romper la tarea para bloques funcionales más pequeños, lo que facilita este desarrollo. Aplicando este enfoque al desarrollo del sistema, puede expandirse fácilmente funcionalidad Módulos individuales sin afectar. fuente Otro. Para reducir la complejidad. software, Es necesario hacer módulos pequeños y más independientes. Para hacer módulos más independientes, puede aplicar dos métodos:

Amplificación de conexiones internas de módulos;

Debilitando la relación entre los módulos.

Esta estructura se utiliza para garantizar la independencia funcional de los módulos del programa, es decir, Separación máxima de la función del módulo. Debido a esto, la conexión interna de los módulos aumenta y su embrague externo se debilita.

Los módulos del programa tienen una conexión interna sólida, ya que contienen métodos que procesan un conjunto de datos específico y tienen su propósito funcional.

La estructura modular de la biblioteca se presenta en el Apéndice D en la Figura D.1, el visualizador en la Figura D.2.

Pruebas

De todas las etapas del software de depuración, las pruebas son las más lentas y caras. Al crear un software de prueba típico, hay aproximadamente el 40% del tiempo total y más del 40% del costo total del software.

Se necesita pruebas para aumentar la confiabilidad del software, de lo contrario no lo necesita. Puede aumentar la confiabilidad al eliminar errores. Por lo tanto, prueba para probar la exactitud del programa privado del significado. Pruebas Puede revelar errores, corregirlos y, por lo tanto, mejorar la confiabilidad del software.

Durante la implementación del proyecto, cada clase se probó exhaustivamente, al realizar un análisis formal del texto del programa, lo que permitirá identificar una gran cantidad de errores en las primeras etapas de la programación, y verificar la corrección del programa para trabajar utilizando Ciertos conjuntos de datos de prueba. En este caso, se monitorizó cada combinación de datos de origen, así como el cumplimiento de los resultados para cada fuente de origen establecidos por el resultado deseado.

Documentación

Tarea técnica

Para muchos proyectos necesitas usar paisajes. Este paquete de software le permite generar un paisaje tridimensional y lo muestra en la pantalla del monitor.

6.1.1 Cita de desarrollo

El paquete de software está diseñado para generar y mostrar paisajes.

6.1.2 Requisitos para el programa o software.

Para un usuario, la solicitud debe proporcionar las siguientes características:

1) la posibilidad de introducir datos de entrada, como la altura mínima y máxima, el tamaño de la tarjeta, la molienda de las montañas;

2) Generación de paisajes;

3) almacenar el paisaje para usarlo en programas de terceros;

4) Demostración del resultado resultante mediante la salida de la imagen en la pantalla.

6.1.3 Requisitos de fiabilidad.

EN complejo de software La información de entrada debe verificarse para verificar el cumplimiento de los tipos, que pertenece al rango de valores aceptables y la conformidad de la corrección estructural, además, el visualizador debe verificar el equipo para su cumplimiento con la técnica requerida y software. En caso de errores, proporcione la posibilidad de emitir mensajes de diagnóstico informativos.

6.1.4 Requisitos para la composición y parámetros de los medios técnicos.

Para el funcionamiento mínimo del programa requiere: computadora personal, 2 GB memoria de acceso aleatorio, 50 MB de espacio libre en disco; Teclado, ratón.

Para trabajo óptimo Las aplicaciones necesitan RAM al menos 3 GB de RAM.

6.1.5 Requisitos de compatibilidad de información y software

El programa debe funcionar corriendo Windows 7 y superior; DirectX 11; Visual C ++ 2015; . NET Framework. 4.5 y superior.

6.1.6 Requisitos de documentación de software

La documentación del programa debe contener el manual del usuario, la documentación de la biblioteca.

Manual de usuario

El programa comienza a iniciar el archivo shell.exe, después de comenzar, verá la ventana que se muestra en la Figura 6.1.

Llame al menú "Archivo", puede usar el botón "Borrar" para restablecer los datos a valores estándar. Uso del botón "Guardar como BMP", guarde el mapa de altura en formato BMP. Usando el botón "Guardar como obj", puede guardar el paisaje en formato obj. Al hacer clic en el botón "Ver" para iniciar el visualizador en el que se puede ver en forma tridimensional, se muestra en la Figura 6.2.

Figura 6.1 - Ventana del programa


Figura 6.2 - Ventana del programa

Llame al menú "Configuración", puede usar el botón "Configuración del programa" para configurar el programa para la visualización. Usando el botón "Configuración de visualización", puede configurar el visualizador.

El movimiento en el visualizador se lleva a cabo con botones en el teclado W, A, S, D, que corresponden a las instrucciones hacia adelante, hacia la izquierda, la derecha, hacia atrás.

El control de la cámara es llevado a cabo por el mouse.

Documentación de la biblioteca

Para trabajar con la biblioteca, debe conectar el archivo LandStayspagenerator.dll a su proyecto. El proyecto debe declarar una instancia de la clase de Paisaje General. La clase contiene los siguientes métodos para cambiar los parámetros del paisaje, como el ancho, la longitud, la altura mínima y la máxima, la generación horizontal, del paisaje, el paisaje regresa como mapa de bits, almacenando el paisaje en formato OBJ y BMP.

Como se señaló anteriormente, el cuerpo de la función puede ser cuadra o operador compuesto. Cuadra Como un conjunto de descripciones de objetos y operadores puede incluir anidado Bloques y luego aparecen externo y local Variables en relación con el bloque también. global Variables descritas fuera de las funciones del programa.

Además de los atributos. nombre y tipo Objeto Hay dos atributos más - alcance y toda la vidaDefinido clase de almacenamiento (memoria)predeterminado o preguntado por un programador. Alcance (visibilidad)- Esto es parte del texto del programa en el que ver y tal vez usó este objeto. Las variables descritas en el bloque de cobertura son externas para bloques anidadas e incluyenlas en el área de su acción en una excepción. interno La variable tiene prioridad encima sobrecarga de la misma La variable cerrándola, e incluso el tipo de variable interna puede ser anulada.

Toda la vida - Este es el intervalo de tiempo durante el cual el valor del objeto (variable o función) disponible Para uso en alguna parte del programa. El tiempo de vida de la variable puede ser lan o global. Objeto, C. global El tiempo de vida tiene una memoria distribuida para ello y un cierto valor en todo el tiempo de ejecución del programa. Para local El objeto destaca nuevo Área de memoria en cada entrada al bloque y liberado Al salir del bloque, el valor del objeto. pierde. Las variables descritas en funciones, incluidos los parámetros formales tienen lan alcance. Las funciones en el programa son externoen relación entre sí y tener globaltiempo de vida, es decir, hay durante todo el programa de tiempo de ejecución.

El programa SI es un módulo de software separado que se emite y se registra en memoria externa como archivo original Con la extensión ".c", por ejemplo, myprog.c.

La estructura del módulo de programa y el área de operación de sus objetos se pueden enviar al siguiente esquema:

/ * Objetos y descripciones globales * / / * Área de acción * /

Directivas del pre procesador global Macrochética

prototipos de funciones.

descripciones de tipos

descripciones de variables globales.

encabezado de función local

(variables de bloque externo;

operadores;

(bloque interno l okal

descripciones de otras funciones.

/ * Fin del programa * /

Ejemplo.El uso de bloques anidados con las mismas variables.

Programa:

(int i \u003d 2; / * i - Bloque externo variable * /

iNT CUENTE \u003d 0; / * cuenta - variable externa * /

mientras (cuenta<= i) /* цикл внешнего блока */

(int \u003d 0; / * i - Variable local de la unidad interior * /


cuenta ++; / * Ciclo de metros * /

printf ("en el ciclo: cuenta \u003d% d; i \u003d% d \\ n", cuenta, i);

/ * Fin de la unidad interior, regrese a la variable I Bloqueo externo * /

printf ("Fuera de ciclo: cuenta \u003d% d, i \u003d% d", cuenta, i);

El resultado del programa.:

En el recuento del ciclo \u003d 1 i \u003d 0

En el recuento de ciclos \u003d 2 i \u003d 0

En el recuento de ciclos \u003d 3 i \u003d 0

Cuento de ciclo exterior \u003d 3 i \u003d 2

Programador puede obvio Establezca los atributos del área de acción y vida útil utilizando las clases de memoria (almacenamiento) Specificadores: para variables (Auto - Local, Registro - Registro, estático - estático, Externo - Externo) y para funciones (Estático, externo).

Las variables con la clase de almacenamiento de automóviles (aceptadas por defecto) y el registro pertenece a lan En el bloque y el área de acción y en el tiempo de la vida. Para las variables con la clase automática, la memoria se asigna en la pila (memoria temporal), y con la clase de registro en uno de los registros de procesadores gratuitos.

La memoria para las variables con la clase estática se proporciona en el segmento de datos (memoria del programa estático), y no en la pila, gracias a los que ahorrar Es valioso salida De la cuadra. Si está ausente explícito inicialización de tales variables, entonces defecto Se instalan en 0. Se realiza la inicialización. uno Una vez y no se repite con una nueva entrada al bloque. Los objetos de clase estática tienen lan alcance (bloque) y global Lifetime (tiempo de ejecución del programa).

Ejemplo. Use variables estáticas.

Programa:

ejemplo de vacío (INT C); / * Función prototipo * /

vacío principal () / * Función de inicio * /

(INT CUENTA; / * Bloqueo local variable * /

para (cuenta \u003d 9; cuenta\u003e \u003d 5; cuenta - \u003d 2) / * contador de ciclo * /

ejemplo (cuenta); / * Función de llamada * /

ejemplo de vacío (INT C) / * Encabezado de función * /

(int f \u003d 1; / * variable local * /

stat stat \u003d 1; / * Variable estática * /

printf ("c \u003d% d, f \u003d% d, stat \u003d% d \\ n", c, f, stat);

stat ++; / * Cambiar variable estática * /

Resultados del programa: C \u003d 9, F \u003d 1, stat \u003d 1

c \u003d 7, f \u003d 1, stat \u003d 2

Anteriormente, un tipo de capa de capa se extendió en Internet, que está dedicado. Sin embargo, a lo largo del tiempo, este enfoque para crear la estructura del sitio está desactualizado, y una capa de bloque llegó a reemplazarla.

Diferencias de diseño de bloques de tabular.

Si la capa de la tabla implica que los contenidos de la página están dentro de la etiqueta.

, el concepto de diseño de bloques se basa en el uso activo de las etiquetas universales
En el interior, que se coloca el contenido, incluidas otras etiquetas.

La capa de bloque está desprovista de mesas - los motores de búsqueda Se indexó mejor, su código no está tan agitando, y los bloques.

a quien le gusta llamar "capas", originalmente pensó universal, es decir, "para todo", mientras que
- Esta es la tabla que desea utilizar para mostrar datos tabulares y nada más.

La única capa de bloques menos tangible: los sitios hechos en él se pueden mostrar de manera diferente en los navegadores. Para evitar esto, debe hacer un diseño "CrossBruster", es decir, lo mismo que se muestra en cualquier observador.

La esencia del bloque Worski.

EN editor gráfico Se crea un diseño del sitio: colocado donde será el área de la página (CAP, parte inferior, panel lateral, contenido principal) y cuánto lugar para ocupar, preparando imágenes, fondos.

Cada parte de la página se coloca en su bloque.

: Parte superior del sitio: en el primer, el menú, en el segundo, el contenido, en el tercero, etc. Cada bloque se llena con el contenido de HTML, así como se posiciona y se ejecuta utilizando el marcado CSS.

El último documento HTML es un conjunto de bloques.

Con contenido en el interior. El diseño se encuentra a menudo en un archivo CSS separado conectado a la etiqueta de la página o al menos en el contenedor