Please enable JavaScript.
Coggle requires JavaScript to display documents.
Nombres, alcances y enlaces., REGLAS DE ALCANCE(Jefte), Ejemplo: se…
Nombres, alcances y enlaces.
Ampliación de macros
GENERICOS COMO MACROS
Importación de nombres significa que un módulo puede tomar nombres específicos de otro contexto y utilizarlos en su propio contexto
Relación con la meta programación se relaciona con las plantillas y cómo se pueden utilizar para crear código genérico que se adapta a diferentes tipos de datos.
Uso de macros en C++ las primeras versiones formalizaron este mecanismo utilizando macros para implementar plantillas. Las plantillas en C++ permiten la programación genérica al definir estructuras o funciones que pueden trabajar con diferentes tipos de datos
Evitar efectos secundarios Esto se debe a que una macro en C que devuelve un valor debe ser una expresión, y las declaraciones no son una de las construcciones del lenguaje que pueden aparecer dentro de una macro.
-
-
-
-
-
-
Cuando varios nombres se refieren al mismo objeto en el mismo lugar del programa, se llaman "alias".
-
-
-
-
REGLAS DE ALCANCE(Jefte)
-
ALCANCE ESTÁTICO
-
-
-
RECURSIÓN MUTUA
En la recursión mutua, dos o más funciones se llaman entre sí, lo que crea una red o ciclo de llamadas recursivas. Cada función puede llamar a las otras en algún punto de su ejecución.
MÓDULOS(CARACTERÍSTICAS)
Reducir la “carga cognitiva” del programador al minimizar la cantidad de información
necesaria para comprender cualquier parte determinada del proceso.
Integridad de las abstracciones de datos: cualquier intento de acceder a un objeto externo del módulo al que pertenece, hará que el compilador emita mensaje "conflicto indefinido".
ALCANCE DINÁMICO
Los enlances entre nombres y objetos dependen del flujo de control en tiempo de ejecución,en lugar de en tiempo de compilación como en el alcance estático. Esto significa que la variable a la que se accede depende de la secuencia de llamadas de funciones en el programa en ejecución.
-
Definicion:también conocidas como reglas de ámbito o scope rules en inglés, son reglas que determinan la visibilidad y accesibilidad de las variables y otros identificadores dentro de un programa.Estas reglas definen dónde en el código una variable o identificador es válido y cuándo puede ser accedido. Las reglas de alcance son una parte fundamental de la semántica de un lenguaje de programación y ayudan a evitar ambigüedades y errores en el código.
Ejemplo: se necesita una función de ayuda que solo tiene sentido en el contexto de otra función. Por ejemplo, una función para calcular el cuadrado de un número solo puede ser relevante dentro de una función que realice cálculos matemáticos más complejos. De esta manera, se evita la exposición innecesaria de la función de cuadrado en el espacio de nombres global.
-
-
-
-
En programación, no siempre hay una relación uno a uno entre nombres y objetos en un programa
-
La coerción permite al compilador realizar una conversión de tipo automática para hacer que un argumento
se ajuste al tipo esperado de alguna rutina existente.
La sobrecarga permite al programador dar el mismo nombre a múltiples objetos y eliminar
la ambigüedad (resolverlos) según el contexto (para subrutinas, según el número o los tipos de argumentos).
El polimorfismo permite que una sola rutina acepte
argumentos de múltiples tipos, siempre que intente usarlos sólo en formas que sus tipos admitan
Fortran 90 proporciona una construcción de interfaz especial que se puede utilizar para asociar un operador con alguna función binaria nombrada.
-
En Haskell, los operadores infijos definidos por el usuario son simplemente funciones cuyos nombres constan de caracteres no alfanuméricos
-
-
Dado que la mayoría de los programas grandes se construyen y prueban de forma incremental, y dado que la compilación de un programa muy grande puede ser una operación de varias horas, cualquier idioma
-
-
Compatibilidad y evolución de lenguajes : Se menciona cómo lenguajes como C y C++ deben mantener la compatibilidad con mecanismos diseñados en los años 70, lo que limita su capacidad para utilizar módulos de manera más moderna y eficiente
Elección natural para unidades de compilación Los módulos son considerados la elección natural para las "unidades de compilación" en muchos lenguajes de programación
Relación entre módulos y compilación están diseñados para encapsular código y proporcionar una interfaz clara y estrecha.
Java y C# rompen con la tradición de C al permitir que el compilador infiera la información del encabezado automáticamente de las definiciones de clases compiladas por separado, eliminando la necesidad de archivos de encabezado .
-
-
-
La "sobrecarga" ocurre cuando un nombre puede referirse a varios objetos en un punto específico del programa.
-
-
-
El compilador o intérprete determina cuál de estas funciones ejecutar en función de la cantidad y el tipo de argumentos proporcionados.
Al considerar llamadas a funciones y subrutinas, es importante distinguir la sobrecarga de los conceptos relacionados de coerción y polimorfismo
-
Ahora supongamos que ya tenemos una rutina de impresión que acepta un argumento de punto
flotante. Con coerción, podríamos imprimir números enteros pasándolos a esta rutina existente, en lugar de escribir una nueva.
-
La sobrecarga está relacionada con el "polimorfismo", que permite que partes del programa se comporten de manera diferente según los tipos de datos con los que trabajan.
Muchos lenguajes también permiten que los operadores aritméticos incorporados (+, -, *, etc.) sobrecargado con funciones definidas por el usuario.
Ejemplo:
Supongamos que en un lenguaje de programación tenemos un arreglo llamado "datos" y creamos dos alias, "alias1" y "alias2", que se refieren a este arreglo. Si modificamos "alias1[0]", el cambio se verá reflejado en "alias2[0]" y viceversa, ya que ambos apuntan al mismo arreglo "datos". Esto ilustra cómo los alias pueden compartir el acceso a un objeto y cómo un cambio en uno afecta a los demás.
Un alias en programación es cuando dos o más nombres o referencias se utilizan para acceder al mismo objeto. Los cambios en un alias afectan al objeto al que apuntan todos los alias, lo que puede ser útil pero también propenso a errores si no se maneja correctamente.
-
Aquí hemos definido un operador de 2 argumentos llamado @.
-
evitaron la necesidad (en las primeras versiones de C) de soportar nombres constantes en el propio lenguaje
-
Cuando ve una llamada para imprimir (mi número entero), el compilador coaccionará
(convertirá) el argumento automáticamente a un tipo de punto flotante antes de la llamada.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-