Menú
Está libre
registro
hogar  /  Educación/ Estructuras de control en PHP. Construcciones de control del lenguaje C

Control de construcciones en PHP. Construcciones de control del lenguaje C

8. Programación estructural.

Programación estructurada se puede definir como programación centrada en hacer que los programas sean fáciles de escribir y comprender por humanos, no por computadoras. Persigue los siguientes objetivos: escribir programas de mínima complejidad, hacer pensar con claridad al programador, facilitar la percepción del programa. Para lograr estos objetivos, el programa estructural debe cumplir con los siguientes requisitos básicos.

    El texto del programa debe ser una composición de tres estructuras básicas: conexión secuencial (siguiente), cláusula condicional (ramificación) y repetición (bucle).

    El uso de declaraciones de salto como GOTO debe evitarse siempre que sea posible (si las restricciones en el volumen y el tiempo de ejecución no son críticas, entonces en todas partes). El peor uso de un GOTO es saltar a una declaración más alta (anterior) en el texto del programa.

    Si es posible, evite el uso de la instrucción ELSE. Generalmente es innecesario porque es equivalente a IF (no<условие>) LUEGO. La construcción ELSE es necesaria solo en esa rara situación cuando la construcción ENTONCES cambia una de las variables en la condición.

    El programa debe estar escrito en un estilo aceptable que facilite su comprensión y modificación.

    Cada módulo debe tener exactamente una entrada y una salida.

    El programa es una solución simple y clara al problema.

8.1 Controlar las construcciones de programas estructurados.

Los programas estructurales se componen de tres estructuras de edificios principales para el control de procesos informáticos:

    siguiente- indica la ejecución secuencial de acciones;

    derivación- corresponde a la elección de una de dos opciones de acciones dependiendo de la condición (valor del predicado);

    bucle de condiciones previas- define la repetición de acciones hasta que se viola una determinada condición, cuyo cumplimiento se verifica antes del inicio de cada repetición.

Además de las básicas, se pueden utilizar tres estructuras de control más, que se implementan fácilmente en base a ellas:

    elección- denota la elección de una opción de acciones entre varias, dependiendo del valor de un cierto valor o condición;

    bucle con poscondición- determina la repetición de acciones hasta que se cumpla una determinada condición, cuya verificación se realiza después de cada repetición;

    bucle con un número determinado de repeticiones (ciclo de conteo): determina la repetición de acciones un número específico de veces.

Las acciones que son componentes de construcciones de programación estructuradas son declaraciones simples del lenguaje utilizado (por ejemplo, instrucciones de asignación, entrada, salida, llamadas a subrutinas) o fragmentos de programa que son una composición de estructuras de control básicas.

    Construcciones de programación estructurada

8.2 El concepto de estilo de programación y sus características.

Estilo de programación es la forma en que un desarrollador utiliza un lenguaje de programación para escribir y formatear el texto de un programa. Un buen estilo es aquel que facilita que la gente perciba y comprenda el programa. Un estilo de programación se caracteriza por dos factores principales: la claridad del programa y la forma en que se usa el lenguaje.

Seguir el principio de claridad del programa es un requisito previo fundamental para un buen estilo de programación y requiere un énfasis en la simplicidad y claridad del texto al escribir el código del programa ignorando criterios menos importantes, por ejemplo, brevedad o eficiencia de la máquina. Para mejorar la claridad al escribir un programa, debe cumplir con las siguientes reglas básicas.

    Cada objeto de programa debe tener un nombre significativo y significativo que defina su propósito.

    Los objetos de programa no deben tener nombres similares, por ejemplo, difiriendo solo en el caso de caracteres o uno o dos caracteres. Tampoco se puede usar como nombres. palabras clave lenguaje y similares a ellos por escrito.

    Deben evitarse las variables intermedias innecesarias.

    Para evitar ambigüedades, se deben utilizar paréntesis para explicar el orden en que se realizan las operaciones.

    No debe colocar declaraciones en varios idiomas en la misma línea.

    El texto del programa debe escribirse con espacios en blanco y sangrías.

    El texto del programa debe comentarse en todos aquellos lugares donde pueda ser difícil de entender o el significado del código dado no sea obvio. Los comentarios deben contener información que explique el código y refleje el propósito de realizar ciertas acciones y las consecuencias a las que conducen. Además, se recomienda utilizar comentarios al declarar objetos de programa.

    Debe adherirse a un estilo uniforme al escribir el código del programa.

    Si en la práctica de utilizar un lenguaje de programación se ha desarrollado un estilo más o menos definido de diseño de programa, entonces se recomienda utilizarlo si no contradice los estándares adoptados en la organización o el equipo en el que se realiza el desarrollo.

La segunda característica importante de un estilo de programación está determinada por la forma en que el desarrollador utiliza las herramientas y capacidades proporcionadas por el lenguaje de programación. La principal recomendación con respecto al uso de las características del lenguaje es que debe estudiar y comprender todas las características del idioma y evitar aquellas que puedan reducir la claridad del programa, en particular las asociadas con características mal pensadas o implementadas y dependiendo de la implementación de varios trucos.

9.Medios formales de representación de los procesos de control.
en programas estructurados.

9.1 Diagramas de bloques (esquemas estructurales) y sus diseños.

Las siguientes construcciones básicas se utilizan para describir programas que utilizan diagramas de bloques.

    Construcciones básicas para formar diagramas de bloques.

1) Bloque "Originador / terminador". Se utiliza para indicar el comienzo y el final de un diagrama estructural. Cada circuito debe comenzar y terminar con esta construcción.

2) Bloquear "Proceso". Se utiliza para designar una o más acciones que aseguren el cambio (procesamiento) de los datos, su forma de presentación o ubicación. Para mejorar la claridad del diagrama, varios de estos bloques se pueden combinar en uno.

3) Bloquear "Decisión". Se utiliza para representar una operación de transferencia de control de acuerdo con una condición determinada. Para cada uno de estos bloques, se debe establecer la condición real (pregunta), que determina el esquema mayor desarrollo el proceso computacional, así como los posibles resultados de verificar esta condición (respuestas) correspondientes a las opciones de transferencia de control.

4) Bloque "Entrada / salida". Se utiliza para indicar operaciones relacionadas con la entrada o salida de datos. Los dispositivos lógicos individuales o las funciones de comunicación deben corresponder a bloques individuales. Cada bloque indica la operación a realizar, el tipo de dispositivo o archivo y el tipo de datos involucrados en el intercambio.

5) –6) Bloquea el "proceso predefinido". Se utiliza para indicar llamadas a subrutinas. Un bloque con una línea horizontal está destinado a describir llamadas a subrutinas que fueron especialmente desarrolladas para el programa y que se presentan en la documentación por su diagrama estructural. Un bloque con líneas verticales denota una llamada a subrutinas externas al programa, por ejemplo, aquellas que forman parte del entorno del sistema operativo.

7) Bloque "Conector". Se utiliza cuando, debido al gran tamaño, es necesario dividir diagrama de bloques en varias partes, colocadas en hojas de papel separadas. En este caso, al final de una hoja, se coloca este bloque, en el que entra la línea de conexión, y al comienzo de la siguiente hoja, se utiliza el mismo bloque del que sale la línea de conexión.

8) Bloque "Comentario". Le permite incluir en el diagrama las explicaciones necesarias para determinados bloques. Una gran cantidad de estos bloques puede reducir la claridad del diagrama estructural.

La desventaja de los diagramas de bloques con respecto a los requisitos de la programación estructurada es que permiten el uso de métodos no estructurados de transferencia de control en los diagramas, un ejemplo de lo cual en un programa es una salida anticipada de un bucle o el uso de un salto incondicional. operador del tipo GOTO.

9.2 Formas de flujo (diagramas de flujo).

Los formularios de flujo son notaciones gráficas diseñadas para describir programas estructurados en construcciones anidadas que eliminan la necesidad de líneas de flujo de control y, por lo tanto, la capacidad de representar transiciones de programas no estructurados. Cada elemento del formulario corresponde a una estructura de control y se representa en forma de rectángulo, que puede ser un componente de otro elemento y, a su vez, incluir algunas otras partes del formulario. El rectángulo original, que contiene la forma completa, simboliza el programa descrito. Cada elemento de formulario contiene texto en lenguaje natural o formal que define el propósito de ese elemento. A continuación se muestran las principales construcciones de las formas de flujo utilizadas en la descripción de programas.

    Diseños de formularios de flujo básicos

9.3 Esquemas (diagramas) de Nassi-Shneiderman.

Los esquemas de Nassi-Schneiderman son un desarrollo de formas de flujo. Su principal diferencia es que en los bloques que representan la ramificación y la selección, se utilizan triángulos para representar condiciones, lo que permite lograr una mayor claridad en la descripción del programa. Las construcciones básicas de los diagramas de Nassi-Schneiderman se dan a continuación.

    Construcciones básicas de diagramas de Nassi-Schneiderman

La ventaja de las formas de flujo y los diagramas de Nassi-Schneiderman es que le permiten representar claramente el anidamiento de estructuras. Una desventaja común de estos esquemas gráficos es la dificultad de describir con su ayuda. programas grandes debido al volumen de las estructuras utilizadas para ello.

10. Un enfoque de programación orientado a objetos.

10.1 Conceptos y principios básicos del enfoque de programación orientado a objetos.

La esencia enfoque de objeto consiste en el uso predominante de la descomposición de objetos para la descripción y construcción de software. Además, las funciones tales sistema de software se expresan a través de operaciones sobre objetos de diferentes niveles de la jerarquía, es decir su descomposición depende esencialmente de la descomposición de los objetos. Debajo enfoque orientado a objetos nos referimos a un enfoque de objetos con un enfoque en la descripción de objetos en el área temática y la construcción de sus modelos, en el que se utilizan principalmente objetos activos, es decir, objetos que incluyen partes de software que pueden estar en proceso de ejecución. El enfoque orientado a objetos para el desarrollo de software incluye tres etapas principales:

    Análisis orientado a objetos. Se crea un modelo orientado a objetos del dominio del sistema software, en el cual los objetos modelo representan objetos entidad reales o conceptuales, y también se determinan las operaciones que se realizan sobre ellos.

    Diseño orientado a objetos. Se está desarrollando un modelo de software orientado a objetos (arquitectura del sistema), teniendo en cuenta los requisitos existentes, en el que la definición de todos los objetos está subordinada a la solución de un problema específico.

    Programación orientada a objetos. La arquitectura (modelo) del sistema se implementa utilizando un lenguaje de programación orientado a objetos.

La representación y descomposición orientada a objetos de un sistema de software se basa en los principios de abstracción, encapsulación, modularidad y organización jerárquica. Abstracción se reduce a la formación de abstracciones. Cada abstracción captura las características básicas de un objeto que lo distingue de otros tipos de objetos y proporciona límites conceptuales claros. La abstracción se centra en la representación externa de un objeto y le permite separar el comportamiento básico de un objeto de su implementación. Encapsulamiento contiene y oculta la implementación de un objeto que proporciona su comportamiento. La encapsulación se logra mediante el cierre informativo. Por lo general, la estructura de los objetos y los detalles de su implementación están ocultos. Modularidad determina la capacidad del sistema para descomponerse en una serie de módulos fuertemente vinculados y débilmente vinculados. Los módulos sirven como contenedores físicos en los que se declaran los componentes del sistema de software. La modularidad define la forma en que se agrupan las abstracciones relacionadas lógicamente. Organización jerárquica está diseñado para formar una estructura jerárquica a partir de abstracciones. La organización jerárquica define la ubicación de abstracciones en niveles diferentes descripciones del sistema. Dos herramientas importantes para la organización jerárquica en OOP son: el aislamiento de la relación general-particular y la relación todo-parte. La mayoría de las veces, la jerarquía público-privada se crea mediante herencia. La jerarquía de partes enteras se basa en una relación de agregación.

10.2 Enfoque de programación orientado a objetos: el concepto de un objeto y sus características, conexiones entre objetos.

Un objeto es una representación concreta de la abstracción. La clase define la estructura y el comportamiento de objetos similares / similares, es decir, describe su abstracción. Un objeto tiene personalidad, estado y comportamiento. Individualidad es una característica de un objeto que lo distingue de todos los demás objetos. Estado El objeto es una lista de todas sus propiedades / atributos y los valores actuales de cada uno de ellos. Comportamiento caracteriza cómo un objeto afecta (o se ve afectado) a otros objetos en términos de cambios en su estado y transmisión de mensajes. El comportamiento de un objeto depende de su estado y del conjunto de operaciones que le corresponden. Operación representa un servicio que una entidad ofrece para su uso. Hay cinco tipos de operaciones en un objeto: modificador: cambia el estado del objeto; selector: proporciona acceso al estado, pero no lo cambia; iterador: proporciona acceso al contenido de un objeto en partes, en un orden estrictamente definido; constructor: crea un objeto e inicializa su estado; destructor: destruye el objeto y libera los recursos que ocupa. La ejecución de la operación asegura que el correspondiente mensajes que se puede enviar a este objeto. Las subrutinas (métodos) son los medios para implementar operaciones. Así, un mensaje es una llamada a alguna subrutina que implementa una de las operaciones inherentes al objeto. El conjunto de rutinas que implementan las operaciones de un objeto se llama protocolo o interfaz (mensajes).

La interacción de los objetos depende de la relación entre ellos, que se basa en información mutua sobre las operaciones permitidas y el comportamiento esperado. Los más significativos son dos tipos de relaciones entre objetos: enlaces y agregación. Conexión es una conexión física o conceptual entre objetos. Una relación se refiere a una conexión a través de la cual un objeto cliente invoca operaciones en un objeto proveedor (le envía mensajes) o un objeto mueve datos a otro objeto. Hay cuatro formas de visibilidad entre objetos: el objeto de proveedor es global para el cliente, el objeto de proveedor es un parámetro de la operación del cliente, el objeto de proveedor es parte del objeto de cliente y el objeto de proveedor es un objeto declarado localmente en el operación del cliente. Agregación representa relaciones de objetos en la jerarquía de partes enteras y proporciona la capacidad de moverse desde el todo (agregado) a sus partes (propiedades). Un objeto que es parte (propiedad) de otro objeto (agregado) tiene una relación con su agregado. A través de este enlace, la unidad puede enviarle mensajes. La agregación puede significar la aparición física de un objeto en otro, pero no tiene por qué ser así.

10.3 Enfoque de programación orientado a objetos: el concepto de una clase y sus características, relaciones entre clases.

Clase- una descripción de un conjunto de objetos que comparten las mismas propiedades, operaciones, relaciones y semántica. Cualquier objeto es solo una instancia de una clase. En la clase, se distingue una representación externa (interfaz) y organización interna(implementación). Interfaz describe las capacidades (servicios) de la clase, es decir representa para el entorno externo una abstracción de una clase, su apariencia "visible". Una interfaz consta de declaraciones de operaciones respaldadas por instancias de clases, declaraciones de tipos, variables, constantes y excepciones que refinan la abstracción que expresa la clase. La interfaz se puede dividir en tres partes: abierta o pública ( público), cuyos anuncios están disponibles para todos los clientes; protegido protegido), cuyas declaraciones están disponibles solo para la propia clase, sus subclases y amigos; privado o privado privado), cuyos anuncios están disponibles solo para la clase y sus amigos. El estado de un objeto se establece en su clase a través de las definiciones de constantes o variables colocadas en su parte protegida o privada. Por lo tanto, están ocultos (encapsulados) y sus cambios no afectan a los clientes. Implementación La clase refleja las características de su comportamiento. Incluye una descripción detallada (implementación) de todas las operaciones definidas en la interfaz de la clase.

Las abstracciones de cada área temática están en diferentes relaciones entre sí, como resultado de lo cual se forma la estructura de las clases del sistema. Hay cuatro tipos principales de relaciones entre clases: asociación: fija relaciones estructurales, es decir, vínculos entre instancias de clases; dependencia: muestra la influencia de una clase sobre otra; generalización-especialización - relaciones "general-particular"; la parte completa son relaciones de agregación / inclusión. Para expresar estos tipos de relaciones, la mayoría de los lenguajes orientados a objetos admiten diferentes combinaciones de los siguientes tipos de relaciones: asociación, herencia, agregación, dependencia, instanciación, metaclase, implementación. Asociación denota una relación semántica (semántica) bidireccional entre clases. Es la relación más general e indefinida, ya que no indica la dirección y la implementación exacta de la relación. Herencia- una relación en la que una clase comparte la estructura y el comportamiento definidos en otra (herencia única) o en varias otras clases (herencia múltiple). La herencia es una especie de relación de generalización-especialización. El concepto de polimorfismo está asociado con la herencia. Polimorfismo es la capacidad de usar un nombre para denotar operaciones de diferentes clases, pero que pertenecen a la misma superclase. Una llamada de servicio por un nombre polimórfico da como resultado la ejecución de una operación de un conjunto correspondiente a la jerarquía de herencia de clases. Relación agregaciones entre clases son similares a las que hay entre objetos. Adiccion- una relación que indica que un cambio en una clase (independiente) puede afectar a otra clase (dependiente) que la usa. La dependencia le permite aclarar qué abstracción es el cliente y cuál es el proveedor de un servicio en particular. Concretización- el proceso de llenado o personalización de una plantilla (clase generalizada o parametrizada) para obtener una clase a partir de la cual es posible crear instancias. La concretización expresa otro tipo de relación generalización-especialización. Metaclase- clase de clases, es decir una clase cuyas instancias son clases. Implementación- una relación en la que la clase receptora proporciona su propia implementación de la interfaz de otra clase fuente.

11. Programación defensiva.

11.1 Concepto de corrección y programa confiable... Conceptos básicos de desarrollo de software confiable. Concepto de programación defensiva.

El programa es correcto si satisface especificaciones externas, es decir devuelve respuestas esperadas a combinaciones específicas de valores de datos de entrada. El programa es de confianza si es correcto, responde razonablemente a entradas imprecisas y se desempeña satisfactoriamente en condiciones inusuales.

En el proceso de creación de un programa, los desarrolladores intentan anticipar todas las situaciones posibles y escriben el programa para que responda a ellas de manera bastante satisfactoria. Muchos principios y métodos de desarrollo de software (por ejemplo, programación estructurada y modular, tipos de datos abstractos y encapsulación, etc.) persiguen en un grado u otro el objetivo de crear programas confiables, es decir. enfocado en reducir la probabilidad de errores en el programa terminado y minimizar su impacto. Dado que, en el caso general, es imposible desarrollar un programa que sea absolutamente confiable y no contenga errores, el proceso necesario es verificar la corrección y confiabilidad del programa. Incluye revisar la documentación de diseño y el texto del programa, analizar el texto del programa en busca de errores y pruebas. Los errores encontrados en base a los resultados de la verificación deben ser eliminados, luego de lo cual se debe volver a ejecutar parcial o completamente.

Debido a que durante el desarrollo de un programa suele ser imposible evitar todos los errores, es aconsejable incluirlo en el software medios de su detección. Esto le permite minimizar tanto el impacto del error en el funcionamiento del programa como las dificultades posteriores para una persona que tendrá que extraer información sobre este error, encontrar su lugar y solucionarlo. Después de que se detecta un error, el programa debe corregirlo o sus consecuencias, para lo cual se pueden utilizar varios métodos. Por lo tanto, el uso de métodos y herramientas adecuados permite el funcionamiento del sistema de software en presencia de errores.

La programación, en la que se aplican técnicas especiales de alerta, detección temprana y neutralización de errores, se denomina protector o programación a prueba de errores... Estas técnicas se enfocan en proteger los programas y sus componentes de entradas incorrectas y en cómo identificar, aislar y manejar errores.

11.2 Tipos de errores asociados con los datos originales y cómo protegerse contra ellos.

Se distinguen los siguientes tipos de errores asociados con los datos originales:

    Errores de transferencia- Provocada por hardware que, por ejemplo, debido a un mal funcionamiento, puede falsificar los datos. Estos errores suelen estar controlados por hardware.

    Errores de conversión- surgen debido al hecho de que el programa convierte incorrectamente los datos del formato de entrada al de trabajo interno. Para protegerse contra tales errores, la entrada resultante generalmente se muestra directamente al usuario (llamada "salida de eco"). En este caso, la conversión al formato interno se lleva a cabo primero y luego nuevamente. Sin embargo, suele ser bastante difícil evitar todos los errores de conversión. Por lo tanto, debe utilizar otras técnicas de programación defensiva y elaborar y probar cuidadosamente los fragmentos correspondientes del programa.

    Errores de reescritura- debido a que el usuario comete un error al ingresar datos, por ejemplo, ingresa un carácter extra u otro. Estos errores pueden detectarse y corregirse mediante el uso de datos redundantes, como sumas de verificación, y restricciones especiales sobre los valores y el formato de los datos de entrada, como los rangos de valores válidos. Debe verificar los datos ingresados ​​de acuerdo con las restricciones establecidas y, si hay un error, corregirlos automáticamente o solicitar al usuario nuevos valores.

    Errores de datos- causado por el hecho de que el usuario ingresa datos incorrectos. Dichos errores generalmente solo pueden ser detectados por el usuario, por lo que tiene sentido durante el proceso de entrada mostrarle los datos ingresados ​​y pedirle confirmación para realizar más operaciones, especialmente en los casos en los que será imposible corregir información incorrecta en el futuro.

11.3 Las principales formas de prevenir errores.

Los conceptos básicos para prevenir errores en un programa en ejecución incluyen:

    comprobar la exactitud de los datos de entrada y las operaciones de entrada-salida;

    comprobar la admisibilidad de resultados intermedios;

    evitando la acumulación de errores.

Estas ideas tienen como objetivo controlar la exactitud de los datos originales o intermedios del programa. Como resultado, pueden aparecer datos no válidos error interno errores como errores en dispositivos de E / S o software, o como resultado de un error externo como un error de usuario o un programa asociado.

Una técnica de programación defensiva es aislar los errores que pueden surgir de datos de entrada incorrectos. Para ello, se puede desarrollar una interfaz de programación especializada (por ejemplo, un conjunto de subrutinas que procesan datos de entrada), que se utiliza como una especie de caparazón "protector" para el resto del código. La validación de datos y el procesamiento de los errores correspondientes se llevan a cabo en el nivel de esta interfaz y los datos que pasan a través de ella se consideran seguros en el futuro. El mismo enfoque se aplica al nivel de un módulo o clase individual. Las rutinas públicas de un módulo o clase asumen que los datos pueden contener errores y son responsables de verificarlos y corregirlos. Si los datos se han validado con métodos públicos, los métodos privados pueden tratarlos como seguros.

La verificación de los resultados intermedios le permite reducir la probabilidad de manifestación tardía no solo de errores de datos definidos incorrectamente, sino también de algunos errores cometidos en la etapa de diseño y codificación. Para organizar dicha verificación, es necesario utilizar variables en el programa para las que existan restricciones de cualquier tipo, por ejemplo, las asociadas a las peculiaridades del área temática. Sin embargo, debe tener en cuenta el hecho de que cualquier operación adicional requiere el uso de recursos adicionales (por ejemplo, tiempo o memoria) y también puede contener errores. Por tanto, es recomendable comprobar los resultados intermedios solo en aquellos casos en los que no sea difícil y realmente te permita detectar errores. Por ejemplo:

    el valor del parámetro de entrada de la subrutina se encuentra en el rango numérico especificado o coincide con uno de los valores predefinidos;

    el índice del elemento de la matriz está dentro de los límites aceptables;

    el valor de la variable que determina el número de iteraciones del ciclo no es negativo;

    el archivo requerido existe o podría abrirse para lectura / escritura;

    el puntero del archivo está al principio o al final, etc.

Para reducir los errores en los resultados del cálculo, se recomienda:

    evitar restar números cercanos (cero máquina);

    evitar la división números grandes pequeña;

    comience a agregar una secuencia larga de números de aquellos que tienen un valor absoluto más bajo;

    no use la condición de igualdad de números reales;

    esforzarse por reducir el número de transacciones tanto como sea posible;

    aplicar métodos con estimaciones de error conocidas;

    información Abstracto

    Esquemas procesos tecnológicos... Tecnología automatizado Procesando información se basa en los siguientes principios ... ciclo informaciónsistemasConcepto el ciclo de vida es uno de los básicos conceptos metodología de diseño información ...

Hola queridos programadores novatos.

Probablemente ya comprenda por artículos anteriores que un programa consta de expresiones, cadenas, números, operadores, funciones que se ejecutan en una secuencia específica.

El programador establece el orden de ejecución del programa, y ​​para ello aplica las estructuras de control del lenguaje. Es decir, una estructura de control es un comando para uno u otro orden de ejecución del programa.

Antes de proceder a la descripción de las estructuras de control, debo advertirles que verán muchos nombres familiares, ya que la estructura pueden ser operadores, funciones, bucles, que ya hemos comentado en artículos anteriores.

Las construcciones (las definiciones son posibles: instrucción, comando) pueden ser unifilares o compuestas, es decir, ensambladas en un bloque. El bloque también es una estructura separada, que realiza consistentemente las construcciones que se incluyen en él.

Hay seis grupos principales de construcciones de control en PHP. Eso:

1. Operadores condicionales.
2. Ciclos.
3. Diseños de elección.
4. Construcciones del anuncio.
5. Construye para devolver valores.
6. Construcciones de inclusiones.

Veámoslos en detalle, y todo en orden.

Operadores condicionales

Ya conocemos los operadores condicionales if, else, elseif en el artículo " Declaraciones php Así que ahora, considerándolos como construcciones de control, obtendremos una repetición de lo que hemos pasado, que, como saben, nunca es superfluo.

Los operadores condicionales son las construcciones más utilizadas, no solo en php, sino en todos los lenguajes de programación algorítmica.

Ejemplo de una línea si declaraciones

si ($ siguiente == 0)
{
echo "Esta es una construcción de lenguaje de programación";
}
?>

En este ejemplo, la instrucción if, se da la condición: la variable $ next debe ser igual a cero. Si esta condición es verdadera, se ejecutará echo. Si no, se abrirá pagina vacia.

El siguiente será un ejemplo de una construcción compuesta.

$ siguiente = 0;
si ($ siguiente == 0)
{
echo $ verduras. "Verduras
";
echo $ fruta. "Frutas
";
echo $ berries. " Bayas
";
}
?>

Aquí, a la variable $ next también se le asigna el valor 0, y la instrucción if, después de verificarla, ejecuta el bloque de construcciones de eco.

Tenga en cuenta que para los saltos de línea en php, se utiliza la etiqueta html familiar para nosotros
... En el futuro, nos veremos más de una vez. etiquetas html utilizado en el código php.

Y también noto que la sangría en valores php no tienen, y solo se aplican mejoras en la legibilidad del código.

En el ejemplo anterior, consideramos la opción cuando se ejecuta la declaración si la condición especificada es verdadera.

Ahora imagine que necesitamos ejecutar algún operador no solo cuando la condición de la instrucción if es verdadera, sino también cuando la condición no es verdadera.

En este caso, el más construir

$ siguiente = 1;
si ($ siguiente == 0)
{
echo $ verduras. "Verduras";
}
demás
{
echo $ fruta. "Frutas";
}
?>

En este caso, no se abre una página en blanco, sino la entrada "Fruta".

Constructo Elseif

Esta construcción expande aún más las capacidades de las construcciones if y else. Imagine que tenemos más de dos declaraciones, una de las cuales debe ejecutarse.

En este caso, la construcción elseif se agrega a las construcciones anteriores.

$ siguiente = 0;
si ($ siguiente == 0)
{
echo $ verduras. "Verduras";
}
elseif ($ siguiente == 0)
{
echo $ fruta. "Frutas";
}
demás
{
echo $ berries. "Bayas";
}
?>

En teoría, no hay límite para el número de elseif. Y no importa cuántos haya, el programa comprobará cada uno hasta encontrar el correcto, es decir, verdadero.

Construcciones de selección

Muy a menudo, con una gran cantidad de operadores, el uso de la construcción elseif se vuelve inconveniente debido a la gran cantidad de código.

En este caso, viene al rescate. construcción de caja de interruptores, puedes cambiar el interruptor

La construcción de la caja del interruptor es similar en su acción a la construcción if-else, pero a diferencia de esta última, le permite obtener más de dos opciones como resultado.

El cuerpo de la construcción se encierra entre llaves y se aplica una instrucción de caso terminada en dos puntos y una instrucción de ruptura de terminación para cada valor que se procese.

$ siguiente = "Fruta";
cambiar ($ siguiente) (
caso "Verduras":
echo "Patatas";
rotura;
caso "Fruta":
echo "Manzanas";
rotura;
caso "Bayas":
echo "Cereza";
rotura;
}
// Se muestran las manzanas

En este ejemplo, la condición se procesará primero, luego se encontrará una declaración de caso con un valor que coincida con esta condición, y solo después de eso, la construcción del conmutador comenzará a ejecutarse.

Para valores no especificados en la asignación, en la construcción de caso de interruptor, se usa la declaración predeterminada.

$ next = "Hongos";
cambiar ($ siguiente) (
caso "Verduras":
echo "Patatas";
rotura;
caso "Fruta":
echo "Manzanas";
rotura;
caso "Bayas":
echo "Cereza";
rotura;
defecto:
echo "Champiñones";
}
// Se muestran los champiñones
?>

Si omite la declaración de interrupción, el programa procesará y mostrará todos los valores de la construcción de la caja del interruptor

$ next = "Verduras";
cambiar ($ siguiente) (
caso "Verduras":
echo "Patatas";
caso "Fruta":
echo "Manzanas";
caso "Bayas":
echo "Cereza";
defecto:
echo "Champiñones";
}
/ * Producción
Patata
Manzanas
cereza
Champiñón * /

?>

Otra característica de la construcción de la caja del interruptor es la capacidad de combinar varias opciones en una sola expresión.

$ siguiente = "Arce";
cambiar ($ siguiente) (
caso "Verduras":
caso "Fruta":
caso "Bayas":
echo "Patatas
Manzanas
Cereza";
rotura;
caso "Arce":
caso "Roble":
estuche "Spruce":
echo "Bosque";
rotura;
defecto:
echo "Champiñones";
}
// Se muestra el bosque
?>

Bucles o construcciones de repetición.

Los bucles están pensados ​​para la ejecución múltiple (a diferencia de la construcción if) de las declaraciones que forman el cuerpo de la construcción.

El proceso de ejecutar un ciclo se llama iteración (iteración).

Hay tres tipos de bucles en php:

1. while y do-while son bucles con un número indefinido de iteraciones.
2. for: un bucle con un número predeterminado de iteraciones.
3. foreach: un bucle para procesar (iterar sobre) una matriz.

Mientras construye

Un ejemplo del bucle más simple con un operador, generalmente hay más de ellos.

$ siguiente = 1;
mientras ($ siguiente<= 8 )
{
echo $ siguiente. "
" ;
$ siguiente ++;
}
// Imprime números del 1 al 8. Etiqueta
los coloca en una columna

?>

Echemos un vistazo más de cerca a lo que está sucediendo aquí, es decir, cómo funciona este programa.

La primera línea declara la variable $ next, a la que se le asigna el valor uno. La asignación de un valor se denomina inicialización de variable.

En la segunda línea, el programa verifica la condición mientras ($ next<= 8) , которое будет являться истиной (true).

La tercera línea ejecuta el primer ciclo, ya que el uno es menor que 8, y esto coincide con la definición de verdadero

En el cuarto, a la variable, que en este caso es un operador, se le asigna el operador de incremento (++), que incrementa cada valor subsiguiente del operador $ next en uno.

Y el programa procesará y mostrará cada entero después de uno hasta que llegue a 9. Y como 9 resulta ser falso, el ciclo termina.

Construcción de hacer mientras difiere en que la condición del bucle no se comprueba antes, sino después de la iteración.

Como resultado, antes del final del ciclo, se debe ejecutar una iteración, que es falsa.

$ siguiente = 1;
hacer
{
echo $ siguiente;
}
mientras ($ siguiente ++<= 8 );
// Imprime números del 1 al 9 en una línea.
?>

Como puede ver, aunque 9 es falso, la siguiente iteración aún se realizó, después de lo cual el programa verificó la condición y el ciclo terminó.

El para construir, o un bucle con un contador, en su trabajo es similar a un bucle while, pero tiene una forma de notación más compacta.

Se utiliza mejor cuando se conoce el número de iteraciones antes del inicio del ciclo y, con su ayuda, puede realizar acciones más complejas que una simple iteración de los valores del contador.

En el siguiente ejemplo, escribiremos una tabla de contenido para un libro pequeño.

para ($ siguiente = 1; $ siguiente< 5 ; $next++)
{
echo "- Página". $ siguiente. "
";
}
/ * Salidas
-Página 1
-Página 2
-Página 3
-Página 4
-Página 5 * /

?>

Consideremos en detalle las tres expresiones escritas en la condición (paréntesis) del ciclo.

$ siguiente = 1; - contador variable, comenzando a contar desde uno.
$ siguiente< 5; — определяет продолжительность цикла.
$ next ++ - determina el paso para cambiar el valor del contador. En nuestro caso, es igual a uno.

Las expresiones están separadas por punto y coma. Puede poner varios comandos en una expresión y separarlos con comas. Entonces, la misma tabla de contenido se puede hacer de manera un poco diferente.

para ($ siguiente = 1 , $ nev = 1 , $ página = "-Página"; $ siguiente<= 5 ; $nev++, $next=$nev)
{
$ página = $ página. "-";
echo $ página, $ siguiente. "
";
}
/ * Salidas
-Página 1
-Página 2
-Página 3
-Página 4
-Página ----- 5 * /

?>

Otra característica de for es la capacidad de prescindir del eco.

Es cierto que esta opción no es particularmente bienvenida, ya que complica un poco la legibilidad del código, debido a su inusualidad, pero aún tiene derecho a existir.

En él, la construcción de impresión se ingresa en la condición de bucle

para ($ siguiente = 1; $ siguiente<= 5 ; print $next, print "
", $ siguiente ++);
/ * Salidas
1
2
3
4
5 */

?>

La construcción de eco no se puede ingresar en la cláusula for.

Todas las construcciones anteriores, excepto do-while, tienen una notación alternativa, sin llaves.

En este caso, la línea con la construcción y la condición termina con dos puntos, y todo el bloque se cierra con una construcción final, cuya continuación es la construcción a la que se aplica: endif, end while, etc.

$ siguiente = 1;
mientras ($ siguiente<= 10 ):
echo $ siguiente;
$ siguiente ++;
end while;
?>

Para cada constructo Es un tipo especial de bucle diseñado solo para iterar sobre una matriz.

$ siguiente ["tomate"] = "Rojo";
$ siguiente ["manzana"] = "verde";
$ next ["uvas"] = "Dulce";
$ siguiente ["hongo"] = "Blanco";
para cada ($ siguiente como $ clave => $ valor)
{

echo "$ valor $ clave
";
}
/ * Salidas
Tomate rojo
Manzana verde
Uvas dulces
Hongo blanco * /

?>

Para salir del bucle inmediatamente, si es necesario, hay romper construir... Después de su ejecución, el control se transfiere a la expresión que sigue al bucle.

$ siguiente = 0;
mientras ($ siguiente ++< 10 )
{
si ($ siguiente == 7) romper;
echo "$ siguiente
";
}
/ * Salidas
1
2
3
4
5
6 */

?>

Como puede ver, en la séptima iteración, el bucle se interrumpió.

La construcción continua, a diferencia de break, solo interrumpe la iteración actual y pasa a la siguiente.

$ siguiente = 0;
mientras ($ siguiente ++< 5 )
{
si ($ siguiente == 3) continuar;
echo "$ siguiente
";
}
/ * Salidas
1
2
4
5 */

?>

Como puede ver, falta la iteración 3, ya que fue interrumpida por la instrucción continue.

Construcciones de declaración

Las construcciones de declaración en php están representadas por dos elementos. Estas son construcciones declarar y componer.

De hecho, son absolutamente idénticos, y tanto uno como el otro pueden utilizarse con igual éxito para obtener el mismo resultado.

Para facilitar la comprensión del código, se utiliza principalmente la construcción declare. Se utiliza para configurar comandos (directivas) para la ejecución de bloques.

Actualmente, se reconocen dos directivas: ticks y encoding.

La directiva ticks establece el número de ticks

declarar (ticks = 1);

register_tick_function ("tick_handler");

// Función, se ejecutará en cada tick
?>

La directiva de codificación se utiliza para especificar la codificación de todo el script.

declarar (codificación = "UFT-8");
?>

Construcciones de inclusión

Las construcciones de inclusión se utilizan para inyectar scripts y archivos individuales en un programa. Gracias a ellos, el programa se puede ensamblar a partir de material confeccionado.

Las construcciones de inclusión también se utilizan para reducir la cantidad de código de secuencia de comandos cuando necesita ingresar algo de texto en el código. Luego, el archivo txt se ingresa en el programa.

Es cierto, en este caso, existe una amenaza a la seguridad del script, y para solucionarlo, junto con el archivo txt, debe ingresar una constante en el programa y verificar su existencia en los archivos incluidos.

Hay 4 tipos de construcciones de contención en php, y todas aceptan solo un argumento: la ruta al archivo:

incluir: incluye el archivo en el programa, si está ausente, emite una advertencia;
require - conecta el archivo al programa, si está ausente, el script deja de funcionar;
include_once: permite la inclusión única de un archivo incluido y, si está ausente, emite una advertencia;
require_once: permite la inclusión única del archivo incluido y, si está ausente, el script deja de funcionar;

Las construcciones include_once y require_once son convenientes porque evitan la confusión con las inclusiones anidadas, cuando es posible volver a incluir archivos que contienen declaraciones de funciones.

¿Realmente no quedan preguntas?


Girar

Solo que aquí la palabra "sí" es sinónimo de las palabras "por favor", "gracias", "buenas tardes", "nada para eso" y "lo siento", y la palabra "vamos" en la mayoría de los casos reemplaza "adiós". .

No esperas amor como un autobús a -30 °.

Sintaxis del lenguaje Transact SQL incluye dos tipos principales de estructuras de gobierno. Estos son los operadores: si, tiempo... Cada una de estas estructuras tiene restricciones y requisitos correspondientes para su redacción en términos de estándares. También existen algunos requisitos generales para todas estas estructuras. Todos estos requisitos y restricciones se forman en base a los principios de fácil legibilidad posterior del código fuente.

Reglas para escribir estructuras de control

El conjunto fuente ubicadas dentro de las estructuras de control, así como las estructuras lógicas anidadas, deben tener una sangría de 2 caracteres.

No está permitido utilizar otras instrucciones junto con la de control en la misma línea.

4.2.1.3 La construcción de “comienzo y fin” siempre debe comenzar en una nueva línea.

Se permite el anidamiento de estructuras de control, excepto en el caso de excepciones especificadas explícitamente.

Declaración IF condicional

Formato:

También está permitido escribir:

Formato: if [expresión booleana 1]

Todas las partes del operador condicional (if, else if, else, begin, end) deben colocarse comenzando desde la misma posición

4.2.2.2 Dentro de los "corchetes lógicos" de una declaración condicional, las declaraciones Transact SQL deben anidarse de acuerdo con la pestaña estándar de 2 caracteres

Al escribir operadores lógicos en expresiones lógicas, debe poner espacios antes y después de ellos

Al escribir expresiones lógicas complejas, está prohibido insertar espacios entre corchetes y parte de una expresión lógica.

MIENTRAS estructura de control

Formato: while ([condición para continuar el ciclo])

(operadores)

4.2.3.1 Dentro de los "corchetes lógicos" de una estructura while, las instrucciones Transact SQL deben anidarse de acuerdo con la pestaña estándar de 2 caracteres

El uso de la estructura while es fundamental para organizar las distintas pasadas con el cursor.


Operadores básicos

La sintaxis de Transact SQL incluye cinco operadores principales. Estos son los operadores: Seleccione, insertar, actualizar, eliminar, cursor... Cada uno de estos operadores tiene restricciones y requisitos correspondientes para su redacción en términos de estándares. También existen algunos requisitos generales para todos estos operadores. Todos estos requisitos y restricciones se forman en base a los principios de fácil legibilidad posterior del código fuente.

Cualquier script PHP se forma a partir de una serie de construcciones. Una construcción puede ser operadores, funciones, bucles, operadores condicionales, incluso construcciones que no hacen nada (construcciones vacías). Las construcciones generalmente terminan con un punto y coma. Además, las estructuras se pueden agrupar en un grupo, formando un grupo de estructuras con tirantes curvos (...). Un grupo de estructuras también es una estructura separada. Las construcciones PHP son similares a las construcciones C.

Hay seis grupos principales de construcciones de control en PHP. Entonces, los principales grupos de estructuras de control de PHP y su composición:

  • Operadores condicionales:
    • demás
    • elseif
  • Ciclos:
    • tiempo
    • hacer mientras
    • para cada
    • rotura
    • Seguir
  • Diseños de selección:
    • interruptor-caso
  • Construcciones de declaración:
    • declarar
    • regreso
  • Construcciones de inclusión:
    • exigir ()
    • incluir ()
    • requerir una vez ()
    • include_once ()
  • Sintaxis alternativa para construcciones PHP

Declaraciones condicionales de PHP

Las declaraciones condicionales son quizás la construcción más común en todos los lenguajes de programación algorítmica. Echemos un vistazo a los operadores condicionales básicos del lenguaje PHP.

Si declaración

La sintaxis de la instrucción if es similar a la instrucción if en C:

De acuerdo a Expresiones PHP, la construcción if contiene una expresión booleana. Si la expresión booleana es verdadera (verdadera), entonces se ejecutará la instrucción que sigue a la instrucción if, y si la expresión booleana es falsa (falsa), entonces la instrucción que sigue a if no se ejecutará. Aquí hay unos ejemplos:

$ b) eco "el valor de a es mayor que b"; ?>

En el siguiente ejemplo, si la variable $ a no es cero, se generará la cadena "el valor de a es verdadero":

"el valor de a es verdadero"; ?>

En el siguiente ejemplo, si la variable $ a es igual a cero, se mostrará la cadena "el valor de a es falso":

"el valor de a es falso"; ?>

A menudo, necesitará un bloque de declaraciones que se ejecutarán bajo un cierto criterio condicional, luego estas declaraciones deben ir entre llaves (...) Ejemplo:

$ b) (echo "a es mayor que b"; $ b = $ a;)?>

El ejemplo anterior imprimirá el mensaje "a es mayor que b" si $ a> $ b, y luego la variable $ a se establecerá en la variable $ b. Tenga en cuenta que estas instrucciones se ejecutan en el cuerpo de la instrucción if.

La otra construcción

A menudo es necesario ejecutar sentencias no solo en el cuerpo de la sentencia if, si se cumple alguna condición de la sentencia if, sino también si no se cumple la condición de la sentencia if. En esta situación, no puede prescindir de la construcción else. En general, dicha construcción se denominará construcción if-else.

La sintaxis para la construcción if-else es la siguiente:

If (expresión_booleana) statement_1; else statement_2;

La acción de la construcción if-else es la siguiente: si la expresión_lógica es verdadera, entonces se ejecuta la instrucción_1; en caso contrario, la instrucción_2. Como en cualquier otro idioma, la cláusula else puede omitirse, en cuyo caso no se hace nada cuando se obtiene el valor adecuado.

Si la instrucción_1 o la instrucción_2 deben constar de varias instrucciones, entonces, como siempre, están entre llaves. Por ejemplo:

$ b) (echo "a es mayor que b";) else (echo "a NO es mayor que b"; } ?>

La construcción if-else tiene otra sintaxis alternativa:

If (expresión_booleana): comandos; elseif (other_boot_expression): otros_comandos; else: else_commands; terminara si

¡Preste atención a la ubicación de los dos puntos (:)! Si lo omite, se generará un mensaje de error. Y una cosa más: como de costumbre, los bloques elseif y else pueden omitirse.

Constructo Elseif

elseif es una combinación de declaraciones if y else. Esta construcción extiende la construcción condicional if-else.

Aquí está la sintaxis de la construcción elseif:

If (expresión_booleana_1) operador_1; elseif (expresión_booleana_2) operador_2; else operator_3;

Un ejemplo práctico del uso de la construcción elseif:

$ b) (echo "a es mayor que b";) elseif ($ a == $ b) (echo "a es igual a b";) else (echo "a es menor que b";)?>

En general, la construcción elseif no es muy conveniente, por lo que no se usa con mucha frecuencia.

Ciclos:

En segundo lugar en términos de frecuencia de uso, después de las declaraciones condicionales (operadores condicionales), están los bucles.

Los bucles le permiten repetir un número determinado (e incluso indefinido, cuando el trabajo del bucle depende de la condición) de diferentes operadores. Estos operadores se denominan cuerpo del bucle. Caminar por el bucle se llama iteración.

PHP admite tres tipos de bucles:

  1. Bucle con una condición previa (while);
  2. Bucle con poscondición (do-while);
  3. Bucle con contador (para);
  4. Un bucle especial a través de matrices (foreach).

Cuando se utilizan bucles, es posible utilizar las sentencias break y continue. El primero interrumpe todo el ciclo y el segundo, solo la iteración actual.

Considere los bucles de PHP:

Bucle con condición previa while

Un ciclo while funciona de acuerdo con los siguientes principios:

  • Se evalúa el valor de la expresión lógica.
  • Si el valor es verdadero, se ejecuta el cuerpo del bucle; de ​​lo contrario, vaya a la siguiente instrucción después del bucle.

"La sintaxis de un bucle con una condición previa es: "

Mientras que la declaración (expresión_booleana);

En este caso, el cuerpo del bucle es una instrucción. Normalmente, el cuerpo de un bucle consta de una gran cantidad de declaraciones. Aquí hay un ejemplo de un bucle con una condición previa while:

Preste atención a la secuencia de operaciones de la condición $ x ++<10. Сначала проверяется условие, а только потом увеличивается значение переменной. Если мы поставим операцию инкремента перед переменной (++$x<10), то сначала будет выполнено увеличение переменной, а только затем - сравнение. В результате мы получим строку 123456789. Этот же цикл можно было бы записать по-другому:

// Incrementa el contador echo $ x; ) // Imprime 12345678910?>

Si incrementamos el contador después de ejecutar la instrucción echo, obtenemos la cadena 0123456789. De todos modos, tenemos 10 iteraciones. La iteración es la ejecución de declaraciones dentro del cuerpo de un bucle.

De manera similar a la construcción de una declaración if condicional, puede agrupar declaraciones dentro del cuerpo de un bucle while usando la siguiente sintaxis alternativa:

Mientras (expresión_booleana): declaración; ... end while;

Un ejemplo de uso de sintaxis alternativa:

Bucle con poscondición do while

A diferencia del ciclo while, este ciclo comprueba el valor de la expresión no antes, sino después de cada pasada (iteración). Por tanto, el cuerpo del bucle se ejecuta al menos una vez. La sintaxis de un bucle con una condición posterior es la siguiente:

Do (loop-body;) while (expresión_booleana);

Después de la siguiente iteración, se verifica si la expresión_lógica es verdadera y, si es así, el control se transfiere nuevamente al comienzo del ciclo; de lo contrario, el ciclo se termina. Los desarrolladores de PHP no han proporcionado una sintaxis alternativa para do-while (aparentemente, debido al hecho de que, a diferencia de la programación de aplicaciones, este ciclo rara vez se usa al programar aplicaciones web).

Un ejemplo de un script que muestra el funcionamiento de un bucle con una poscondición do-while:

12345678910

En bucle

Se utiliza un bucle contador para ejecutar el cuerpo del bucle un número específico de veces. Usando un bucle for, puede (y debe) crear construcciones que realizarán acciones que no son tan triviales como una simple iteración sobre el valor del contador.

La sintaxis de un bucle for es:

Para (comandos_inicialización; condición_ciclo; comandos_post_iteración) (cuerpo-bucle;)

El ciclo for comienza ejecutando initialization_commands. Estos comandos se ejecutan solo una vez. Después de eso, se verifica loop_condition, si es verdadera, entonces se ejecuta el loop-body. Después de que se ejecuta la última instrucción del cuerpo, se ejecutan los comandos after_iteration_commands. A continuación, se vuelve a comprobar el loop_condition. Si es verdadero, se ejecutan los comandos loop-body y post-iteration, y así sucesivamente.

Este script genera: 0123456789

Existe una variante de generar la línea 12345678910:

En este ejemplo, nos hemos asegurado de que el contador se incremente al probar una expresión booleana. En este caso, no necesitamos los comandos que se ejecutan después de la iteración.

Si necesita especificar varios comandos, pueden separarse con comas, por ejemplo:

Aquí hay otro ejemplo más práctico del uso de varios comandos en un bucle for:

// Salida Puntos. Puntos ... Puntos ... Puntos .... ?>

El ejemplo considerado (y de hecho cualquier en bucle) se puede implementar a través de while, solo que se verá menos elegante y lacónico.

También hay una sintaxis alternativa para el bucle for:

For (initialization_commands; loop_condition; post_iteration_commands): declaraciones; endfor;

Bucle de iteración de matriz para cada uno

PHP4 introduce otro tipo especial de bucle: foreach. Este bucle está diseñado específicamente para iterar sobre matrices.

La sintaxis de un bucle foreach es la siguiente:

Comandos Foreach (matriz como $ clave => $ valor);

Aquí los comandos se ejecutan cíclicamente para cada elemento de la matriz, mientras que el siguiente par clave => valor aparece en las variables $ clave y $ valor. A continuación, se muestra un ejemplo de cómo funciona el bucle foreach:

$ valor) (echo " $ valor $ clave
" ; } ?>

Las salidas de script consideradas:

Andrey Ivanov Boris Petrov Sergey Volkov Fedor Makarov

El bucle foreach tiene otra notación que debe usarse cuando no estamos interesados ​​en el valor clave del siguiente elemento. Se parece a esto:

Comandos Foreach (matriz como $ valor);

En este caso, solo está disponible el valor del siguiente elemento de la matriz, pero no su clave. Esto puede ser útil, por ejemplo, para trabajar con listas de arreglos:

$ valor
"
; } ?>

Atención: Para cada bucle opera no en la matriz original, sino en su copia. Esto significa que cualquier cambio que se realice en la matriz no puede ser "visible" desde el cuerpo del bucle. Eso permite, por ejemplo, usar no solo una variable como una matriz, sino también el resultado de la operación de alguna función que devuelve una matriz (en este caso, la función se llamará solo una vez, antes del inicio del ciclo, y luego se realizará el trabajo con copia del valor devuelto).

Romper construcción

Muy a menudo, para simplificar la lógica de un ciclo complejo, es conveniente poder interrumpirlo durante la siguiente iteración (por ejemplo, cuando se cumple alguna condición especial). Para esto, hay una construcción de ruptura, que sale inmediatamente del bucle. Se puede especificar con un parámetro opcional: un número que indica de qué bucle anidado se debe salir. El valor predeterminado es 1, que sale del bucle actual, pero a veces se aplican otros valores. La sintaxis de ruptura es:

Rotura; // Por defecto break (cycle_number); // Para bucles anidados (se indica el número del bucle interrumpido)

Aquí hay unos ejemplos:

Iteración $ x
"
; } // Cuando $ x es 3, el ciclo se rompe ?>

Las salidas de script consideradas:

Iteración 1 Iteración 2

Si necesitamos interrumpir el trabajo de un cierto bucle (anidado), entonces debemos pasar un parámetro a la estructura de ruptura - loop_number, por ejemplo, break (1). Los ciclos se numeran de la siguiente manera:

Para (...) // Tercer ciclo (para (...) // Segundo ciclo (para (...) // Primer ciclo ()))

La construcción continua

La construcción continua, como la rotura, solo funciona "en conjunto" con las construcciones en bucle. Inmediatamente termina la iteración actual del ciclo y pasa a una nueva (por supuesto, si la condición del ciclo se satisface para el ciclo con una condición previa). De la misma manera que para romper, para continuar, puede especificar el nivel de anidamiento del bucle, que continuará al regresar el control.

Básicamente, continue le permite guardar la cantidad de llaves en su código y aumentar la legibilidad. Esto se necesita con mayor frecuencia en los ciclos de filtro, cuando necesita iterar sobre un cierto número de objetos y seleccionar de ellos solo aquellos que satisfacen ciertas condiciones. Demos un ejemplo del uso de la construcción continue:

Iteración $ x
"
; } // El bucle solo se interrumpirá en la tercera iteración ?>

Las salidas de script consideradas:

Iteración 1 Iteración 2 Iteración 4 Iteración 5

Uso inteligente rotura y Seguir le permite mejorar notablemente la "legibilidad" del código y el número de bloques else.

Diseños de selección:

A menudo, en lugar de varias sentencias if-else consecutivas, es aconsejable utilizar la construcción especial de selección de caso de cambio. Esta construcción está diseñada para seleccionar acciones, según el valor de la expresión especificada. La construcción de la caja del interruptor recuerda algo a la construcción if-else, que, de hecho, es su análoga. La construcción de elección se puede utilizar si hay muchas opciones sugeridas, por ejemplo, más de 5, y se deben realizar acciones específicas para cada opción. En este caso, usar la construcción if-else se vuelve realmente incómodo.

La sintaxis de la construcción switch-case es la siguiente:

Switch (expresión) (valor de caso1: comandos1; valor de caso2: comandos2; ... valor de casoN: comandosN;])

El principio de funcionamiento de la construcción de la caja del interruptor es el siguiente:

  • Se calcula el valor de la expresión;
  • Se visualiza un conjunto de valores. Sea value1 igual al valor de la expresión calculada en el primer paso. Si no se especifica la ruptura de la estructura (operador), se ejecutarán los comandos i, i + 1, i + 2, ..., N. De lo contrario (hay una ruptura), solo se ejecutará el comando con el número i ejecutado.
  • Si ninguno de los valores del conjunto coincide con el valor de la expresión, se ejecuta el bloque predeterminado, si se especifica.

A continuación, se muestran ejemplos del uso de la construcción de la caja del interruptor:

// Usa if-else si ($ x == 0) (echo "x = 0
";) elseif ($ x == 1) (echo" x = 1
";) elseif ($ x == 2) (echo" x = 2
" ; } // Usa switch-case cambiar ($ x) (caso 0: echo "x = 0
"; romper; caso 1: eco" x = 1
"; romper; caso 2: eco" x = 2
"; romper;)?>

El script anterior imprime x = 1 dos veces. Otro ejemplo del uso de la construcción de la caja del interruptor:

Este script muestra "Esto es una manzana".

La construcción del interruptor se realiza en etapas. Al principio, no se ejecuta ningún código. Solo cuando se encuentra una construcción de caso con un valor que coincide con el valor de la expresión de cambio, PHP comienza a ejecutar las construcciones. PHP continúa ejecutando construcciones hasta el final del bloque de cambio, hasta que se encuentra una declaración de interrupción. Si no usa las construcciones de ruptura (operadores), el script se verá así:

"; caso 1: echo" x = 1
"; caso 2: echo" x = 2
" ; } // Sin usar salidas de interrupción// x = 0 // x = 1 // x = 2?>

La lista de sentencias para el caso también puede estar vacía, simplemente transfiere el control a la lista de sentencias hasta la siguiente sentencia de caso:

"x es menor que 3, pero no negativo"; rotura; caso 3: echo "x = 3"; )?>

Cuando ningún valor del conjunto coincide con el valor de la expresión, se ejecuta el bloque predeterminado, si se especifica, por ejemplo:

"x no es 0, 1 o 2"; } ?>

Este script genera "x no es 0, 1 o 2" porque la variable $ x = 3.

La construcción de switch-case también tiene una sintaxis alternativa:

Cambiar (expresión): caso valor1: comandos1; ... ... ... valor de caso N: comandosN; ] interruptor final;

Un ejemplo práctico del uso de una sintaxis alternativa para la construcción de la caja del interruptor:

"x no es 0, 1 o 2"; interruptor final; ?>

Como ya entendió, este script genera "x no es igual a 0, 1 o 2", ya que $ x = 3.

Construcciones de anuncios:

Declarar construcción

La construcción declare se usa para establecer directivas de ejecución para un bloque de código. La sintaxis de declaración es similar a la de otras construcciones de control de PHP:

Declaración de declaración (directiva);

La directiva le permite establecer el comportamiento del bloque declare. Actualmente, solo hay una directiva disponible en PHP: tick. La declaración es parte del bloque declare.

La forma en que se ejecutarán las instrucciones depende de la directiva.

Diseño declarar se puede utilizar en el ámbito global, afectando a todo el código posterior.

Directiva de garrapatas

garrapata es un evento que ocurre por cada N instrucciones de bajo nivel ejecutadas por el analizador dentro de un bloque declarar... Los eventos que ocurren en cada tick están determinados por la función register_tick_function ().

Construcciones de valor de retorno:

Devolver constructo

La construcción de retorno devuelve valores, principalmente de UDF, como parámetros para una solicitud de función. Cuando se llama a return, se interrumpe la ejecución de la función definida por el usuario y la construcción return devuelve ciertos valores.

Si se llama a la construcción de retorno desde el ámbito global (fuera de las funciones definidas por el usuario), entonces el script también terminará su trabajo y el retorno también devolverá ciertos valores.

Principalmente, la construcción de retorno se utiliza para devolver valores mediante funciones definidas por el usuario.

Los valores devueltos pueden ser de cualquier tipo, incluidas listas y objetos. Un retorno finaliza la ejecución de la función y transfiere el control a la línea de código en la que esta función fue llamado.

Un ejemplo del uso de la construcción de retorno para devolver valores enteros:

Un ejemplo de devolución de matrices mediante la construcción de devolución:

Para que una función devuelva un resultado por referencia, debe usar el operador & tanto al describir la función como al asignar un valor de retorno a una variable:

Como podemos ver, la construcción regreso muy conveniente para usar en funciones personalizadas.

Construcciones de inclusión:

Las construcciones de inclusión le permiten crear un programa PHP (script) a partir de varios archivos individuales.

Hay dos construcciones principales de inclusiones en PHP: exigir y incluir.

El requiere incluir construir

La cláusula require le permite incluir archivos en un script PHP antes de que se ejecute el script PHP. La sintaxis general de require es:

Requerir nombre de archivo;

Al inicio (¡exactamente al inicio, no en la ejecución!) Del programa, el intérprete simplemente reemplazará la instrucción con el contenido del nombre del archivo (este archivo también puede contener un script PHP, enmarcado, como de costumbre, con etiquetas). Además, hará esto inmediatamente antes de iniciar el programa (en lugar de incluir, que se analiza a continuación). Esto puede resultar muy útil para incluir varias páginas de plantilla en código HTML en la salida del script. Pongamos un ejemplo:

Archivo Header.html:

Es un titulo

Archivo Footer.html:

Compañía de origen, 2005.

Archivo Script.php

// El script genera el cuerpo del documento en sí requiere "footer.htm"; ?>

Por lo tanto, la construcción require le permite ensamblar scripts PHP a partir de varios archivos separados, que pueden ser tanto páginas html como scripts php.

La cláusula require admite la inclusión de archivos remotos (desde PHP 4.3.0). Por ejemplo:

// El siguiente ejemplo funciona exigir; ?>

La construcción require le permite incluir archivos borrados, si esta función está habilitada en la configuración Archivo PHP. información detallada Más lejos.

Incluir constructos

La construcción de inclusión también está destinada a incluir archivos en su código de secuencia de comandos PHP.

A diferencia de la construcción require, la construcción include le permite incluir archivos en su código. Secuencia de comandos PHP durante la ejecución del script. La sintaxis de la construcción de inclusión es la siguiente:

Incluir nombre de archivo;

Expliquemos la diferencia fundamental entre las construcciones requerir e incluir con un ejemplo práctico específico. Creemos 10 archivos con los nombres 1.txt, 2.txt y así sucesivamente hasta 10.txt, el contenido de estos archivos son solo dígitos decimales 1, 2 ... ... 10 (un dígito en cada archivo). Creemos un script PHP como este:

// Crea un bucle, en el cuerpo del cual se incluye la construcción para ($ i = 1; $ i<= 10 ; $i ++ ) { include "$ i .txt "; } // Incluidos diez archivos: 1.txt, 2.txt, 3.txt ... 10.txt // Resultado - salida 12345678910 ?>

Como resultado, obtenemos una salida que consta de 10 dígitos: "12345678910". De esto podemos concluir que cada uno de los archivos se incluyó una vez justo durante la ejecución del ciclo. Si ahora ponemos require en lugar de include, el script generará un error fatal. Compare el resultado.

PHP convierte el script a su representación interna analizando las líneas del script una por una hasta llegar a la cláusula de inclusión. Al llegar a la inclusión, PHP deja de traducir el script y cambia al archivo especificado en la inclusión. Por lo tanto, debido a este comportamiento del traductor, el rendimiento del script disminuye, especialmente con una gran cantidad de archivos incluidos con archivos de inclusión. Con require, no existen tales problemas, ya que los archivos se incluyen usando require antes de que se ejecute el script, es decir, en el momento de la traducción, el archivo ya está incluido en el script.

Por lo tanto, es más conveniente utilizar la construcción require donde no hay necesidad de incluir archivos dinámicamente en el script, pero incluir construirÚselo solo con el propósito de incluir archivos dinámicamente en el código de secuencia de comandos PHP.

Diseño incluir admite la inclusión de archivos remotos (desde PHP 4.3.0). Por ejemplo:

// El siguiente ejemplo no funciona porque intenta incluir un archivo local// El siguiente ejemplo funciona incluir "http://www.example.com/file.php?foo=1&bar=2"; ?>

La cláusula de inclusión le permite incluir archivos remotos, si está habilitada en el archivo de configuración de PHP. Más detalles a continuación.

Las construcciones de inclusión única require_once e include_once

En los scripts PHP grandes, las declaraciones include y require se utilizan con mucha frecuencia. Por lo tanto, resulta bastante difícil controlar que no se incluya accidentalmente el mismo archivo varias veces, lo que a menudo conduce a un error que es difícil de detectar.

PHP proporciona una solución a este problema. Al utilizar las construcciones de inclusión única require_once e include_once, puede estar seguro de que el mismo archivo no se incluirá dos veces. Las construcciones de inclusión única require_once e include_once funcionan de la misma manera que require e include, respectivamente. La única diferencia en su trabajo es que antes de incluir el archivo, el intérprete verifica si archivo especificado antes o no. Si es así, el archivo no se volverá a incluir.

Las construcciones de inclusión de una sola vez también require_once e include_ince también permiten que se incluyan archivos remotos si están habilitados en el archivo de configuración de PHP. Más detalles a continuación.

Incluye archivos remotos

PHP le permite trabajar con objetos URL como archivos normales. Los empaquetadores predeterminados se utilizan para trabajar con archivos remotos utilizando protocolo ftp o http.

Si se incluyen "envoltorios de URL fopen" en PHP (como en la configuración predeterminada), puede especificar el archivo que se incluirá mediante una URL (a través de HTTP) en lugar de una ruta local. Si el servidor de destino interpreta el archivo de destino como código PHP, las variables se pueden pasar al archivo de inclusión mediante una cadena de consulta de URL, como en HTTP GET. Estrictamente hablando, esto no es lo mismo que incluir un archivo y heredar el alcance variable del archivo principal; porque la secuencia de comandos se ejecuta en un servidor remoto y el resultado se conecta a la secuencia de comandos local.

Para que la inclusión remota de archivos esté disponible, configure allow_url_fopen = 1 en el archivo de configuración (php.ini).

Nota: Versiones PHP Windows anterior a PHP 4.3.0 no admite la capacidad de usar archivos remotos con esta función incluso si la opción allow_url_fopen está habilitada.

/ * Esto supone que www.example.com está configurado para analizar archivos .php *, no archivos .txt. También "Works" aquí significa que las variables * $ foo y $ bar están disponibles en el archivo incluido. * / // No funcionará ya que www.example.com no está procesando file.txt como PHP incluir "http://www.example.com/file.txt?foo=1&bar=2"; // No funcionará porque está buscando el archivo "file.php? Foo = 1 & bar = 2" en el local // sistema de archivos. incluir "file.php? foo = 1 & bar = 2"; // El siguiente ejemplo funciona: incluir "http://www.example.com/file.php?foo=1&bar=2"; $ foo = 1; $ barra = 2; incluir "file.txt"; // Los trabajos incluyen "file.php"; // ¿Funciona?>

Vea también archivos remotos para fopen () y file () para obtener información adicional.

Adicionalmente:

Probablemente ya sepa cómo insertar código HTML en el cuerpo de un script. Para hacer esto, solo necesita cerrar la llave?>, El código, y luego volver a abrirlo con

Puede que hayas notado lo feo que se ve. Sin embargo, si pones un poco de esfuerzo para decorarlo, no resulta tan malo. Especialmente si usa la sintaxis alternativa de if-else y otras construcciones de lenguaje.

La mayoría de las veces, no es necesario insertar HTML en el script, sino insertar código en el HTML. Esto es mucho más fácil para un diseñador que, tal vez, en el futuro quiera rediseñar el guión, pero no podrá averiguar qué cambiar y qué no tocar. Por lo tanto, es recomendable separar el código HTML del programa (script), por ejemplo, para colocarlo en un archivo separado, que luego se conecta al script utilizando la estructura de inclusión. Por ejemplo, así es como se vería un script que saluda a un usuario por su nombre, usando la sintaxis alternativa if-else:

Oye, !

método = obtener> Tu nombre:

De acuerdo en que incluso una persona que no esté familiarizada con PHP, pero que esté bien versado en HTML, puede averiguar fácilmente qué es qué en este escenario. Considere una sintaxis alternativa para algunas construcciones en el contexto de su uso junto con HTML:

Sintaxis alternativa para if-else

... Código HTML ...... Código HTML ...

Sintaxis alternativa para el bucle while

... Código HTML ...

Un ejemplo del uso de una sintaxis alternativa para un ciclo while:

Como podemos ver, el uso de sintaxis alternativa hace que los scripts PHP sean legibles en los casos en los que es necesario manipular activamente PHP junto con código HTML.

Anotación: Se consideran las estructuras de control del lenguaje C: ramas "if-else" y "if-else if", bucles "while" y "for". También hay construcciones que deben evitarse: "switch", "do-while", "goto". Se considera la presentación del programa en forma de un conjunto de funciones, prototipos de funciones, métodos de transferencia de parámetros de entrada y salida. Se enumeran varios tipos de memoria: estática, de pila, dinámica (montón) y formas de trabajar con la memoria en C. Se introduce la "estructura" del tipo de datos compuestos. El material está ilustrado por numerosos ejemplos de programas: resolución de una ecuación cuadrática, cálculo de la raíz cuadrada, cálculo del MCD de dos números y el algoritmo euclidiano extendido, impresión de los primeros N primos, recorrido recursivo del árbol, etc.

Construcciones de control

Las construcciones de control le permiten organizar bucles y ramas en programas. Hay solo unas pocas construcciones en C, y la mitad de ellas se pueden omitir (se implementan a través del resto).

Tirantes

Las llaves le permiten combinar varios operadores elementales en un operador compuesto o bloque. En todas las construcciones sintácticas, se puede utilizar un operador compuesto en lugar de uno simple.

En C, puede colocar declaraciones de variables locales al comienzo de un bloque. Las variables locales descritas dentro de un bloque se crean cuando se ingresa al bloque y se destruyen cuando se sale del bloque.

En C ++, las variables locales se pueden declarar en cualquier lugar, no solo al principio de un bloque. Sin embargo, al igual que en C, se destruyen automáticamente cuando se sale del bloque.

Aquí hay un fragmento del programa que intercambia los valores de dos variables reales:

doble x, y; ... ... ... (doble tmp = x; x = y; y = tmp;)

Aquí, para intercambiar los valores de dos variables xey, primero almacenamos el valor de x en una variable auxiliar tmp. Entonces, x se escribe con el valor de y, e y es el valor de x anterior almacenado en tmp. Dado que la variable tmp solo se necesita dentro de este fragmento, la encerramos en un bloque y declaramos la variable tmp dentro de este bloque. Al salir del bloque, se liberará la memoria ocupada por la variable tmp.

Si declaración

La instrucción if ("si") le permite organizar la ramificación en el programa. Tiene dos formas: el operador "si" y el operador "si ... de lo contrario". El operador "si" tiene la forma

si (condición) acción;

el operador "si ... de lo contrario" tiene la forma

if (condición) action1; else action2;

Cualquier expresión booleana o entera se puede utilizar como condición. Recuerde que cuando se usa una expresión entera, verdadero es cualquier valor distinto de cero. Cuando se ejecuta la instrucción "if", la expresión condicional después del if se evalúa primero. Si es verdadero, entonces se realiza la acción; si es falso, entonces no sucede nada. Por ejemplo, en el siguiente fragmento, el máximo de los valores de las variables xey se escribe en la variable m:

doble x, y, m; ... ... ... m = x; si (y> x) m = y;

Cuando se ejecuta el operador "si ... de lo contrario", en el caso de que la condición sea verdadera, se ejecuta la acción escrita después de si; de lo contrario, se realiza la acción siguiente. Por ejemplo, el fragmento anterior se reescribe de la siguiente manera:

doble x, y, m; ... ... ... si (x> y) m = x; si no m = y;

Cuando necesite realizar varias acciones dependiendo de la verdad de la condición, debe usar llaves, combinando varios operadores en un bloque, por ejemplo,

doble x, y, d; ... ... ... si (d> 1.0) (x / = d; y / = d;)

Aquí las variables xey son divisibles por d solo si d es mayor que uno.

Las llaves se pueden usar incluso cuando solo hay una declaración después de if o else. Mejoran la estructura del texto del programa y facilitan su posible modificación. Ejemplo:

doble x, y; ... ... ... si (x! = 0.0) (y = 1.0;)

Si necesitamos agregar otra acción que se realiza con la condición "x no es cero", simplemente agregamos una línea dentro de las llaves.

Varias posibilidades a elegir: if ... else if ...

Varias declaraciones condicionales como "si ... de lo contrario" se pueden escribir secuencialmente (es decir, la acción después de else puede volver a ser una declaración condicional). Como resultado, se realiza elección entre varias posibilidades... La construcción de elección se utiliza con mucha frecuencia en programación. Ejemplo: dada una variable real x, debe escribir el valor del signo de función (x) en la variable real y.