Introducción y conceptos fundamentales de los lenguajes de programación

Introducción y conceptos fundamentales de los lenguajes de programación

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
Introducción y conceptos fundamentales de los lenguajes de programación por Mind Map: Introducción y conceptos fundamentales de los lenguajes de programación

1. Paso por referencia

1.1. Parámetro formal y real comparten misma variable

1.2. Su comunicación es eficiente

1.3. Acceso mas lento

1.4. Es fuente de error

2. Nombres, Ligado Ámbito

2.1. Nombres e Identificador

2.1.1. Identificador

2.1.1.1. Que designa en el lenguaje un elemento

2.1.2. Aspectos de diseño

2.1.2.1. largo

2.1.2.2. Tipos de caracteres aceptado

2.1.2.3. Palabras reservadas

2.1.2.4. Sensibilidad mayúsculas y minúsculas

2.2. Variables

2.2.1. Definición

2.2.1.1. Abstracción de un objeto de memoria con:

2.2.1.1.1. Nombre

2.2.1.1.2. Dirección

2.2.1.1.3. Tipo

2.2.1.1.4. Valor

2.2.1.1.5. Tiempo de vida

2.2.1.1.6. Ámbito

2.2.2. Dirección de una variable

2.2.2.1. Asociado con diferentes nombres

2.2.2.2. Se asocian en distintas partes

2.2.3. Ligado

2.2.3.1. Proceso de asociación de un atributo a una entidad

2.2.3.1.1. Ligado estático

2.2.3.1.2. Ligado Dinámico

2.2.3.2. Ligado a memoria y tiempo de vida

2.2.3.2.1. Estáticas

2.2.3.2.2. Dinámicas de Stack

2.2.3.2.3. Dinámicas de heap

2.2.4. Tipo de datos

2.2.4.1. Definición

2.2.4.1.1. Operador binario con una variable y una expresión como operandos

2.2.4.2. Verificación de tipo

2.2.4.2.1. se verifica estaticamente si su ligado es estático

2.2.4.2.2. Se verifica dinámicamente en tiempo de ejecución

2.2.4.3. Tipificado fuerte

2.2.4.3.1. si se permite detectar siempre los errores de tipo

2.2.4.4. Compatibilidad de tipos

2.2.4.4.1. Compatibilidad de nombres

2.2.4.4.2. Compatibilidad de estructura

2.2.4.5. Ámbito

2.2.4.5.1. Rango en el que el nombre es valido

3. Tipos de datos

3.1. Evolución de tipos

3.1.1. Números enteros y reales

3.1.2. Arreglos y registros

3.1.3. Cadenas de caracteres

3.1.4. Definidos por el usuario

3.1.5. Tipos abstractos

3.2. Tipo Ordinal

3.2.1. Asociado a un numero natural,entero,carácter

3.3. Tipo enumerado

3.3.1. Posibles valores a través de constantes

3.3.2. Mejoran facilidad de lectura y fiabilidad

3.4. Tipo Subrango

3.4.1. Subsecuente del tipo ordinal

3.4.2. Mejora lectura y fiabilidad

3.5. Tipos Primitivos

3.5.1. Numérico

3.5.1.1. Entero

3.5.1.2. Punto Decimal

3.5.1.3. Flotante

3.5.2. Booleano

3.5.3. Carácter

3.6. Tipo de dato estructurado

3.6.1. Tipo arreglo

3.6.1.1. Conjunto ordenado de elementos

3.6.1.2. Algunos lenguajes poseen chequeo de rango

3.6.1.3. La memoria es un arreglo unidimensional de celdas

3.6.1.3.1. Se almacenan como filas de columna o viceversa

3.6.1.4. Existen arreglos que se acceden por una clave

3.6.2. Tipo Registro

3.6.2.1. Permite composición heterogénea de elementos

3.6.2.2. Cada elementos se identifica con nombre

3.6.3. Almacenan diferentes tipos de datos

3.6.4. Cadena de caracteres

3.6.4.1. Para comunicación maquina usuario

3.6.4.2. para manipular textos

3.6.4.3. posee operaciones de:

3.6.4.3.1. Asignación

3.6.4.3.2. Comparación

3.6.4.3.3. Concatenación

3.6.4.3.4. Largo

3.6.4.3.5. Transformación

3.6.4.4. algunos lenguajes permiten uso de expresiones regulares

3.6.5. Tipo union

3.6.5.1. Almacenan memoria igual al mayor definido

3.6.5.2. Comparten memoria

3.6.5.3. Su uso es poco seguro

3.7. Tipo de dato puntero

3.7.1. Definición

3.7.1.1. Valor correspondido a una dirección de memoria

3.7.1.2. No corresponde a un tipo estructurado

3.7.2. Asignación

3.7.2.1. asigna como la valor la dirección de memoria

3.7.2.1.1. Existe en forma de bloque o función

3.7.3. Desreferenciación

3.7.3.1. Entrega el valor del objeto apuntado

3.7.4. Problemas

3.7.4.1. Dejar colgado

3.7.4.2. Perdida de variables dinámicas de heap

3.7.5. Método de reclamo de basura

3.7.5.1. Contador de referencia

3.7.5.1.1. mantiene contadores de referencia

3.7.5.1.2. se libera la celda cuando contador es cero

3.7.5.2. Recolección de basura

3.7.5.2.1. acumula basura hasta agotar memoria

4. Subprogramas

4.1. Características

4.1.1. Crea abstracción en el proceso

4.1.2. Permite reutilizar código

4.2. Mecanismo de invocación

4.2.1. Invoca y suspende ejecución de código en siguientes lineas

4.2.2. Pasa parámetros al subprograma

4.2.3. Activa el método y retorna resultado

4.2.4. Reanuda ejecución del código

4.3. Firma y protocolo

4.3.1. Firma

4.3.1.1. Cabecera del método

4.4. Parámetros

4.4.1. Definición

4.4.1.1. Variables mudas que se ligan a parámetros reales

4.4.1.2. Protocolo

4.4.1.2.1. Especifica como se realiza la comunicación de parámetros

4.4.1.3. la comunicación es explicita o implícita

4.4.2. Tipo de transferencia

4.4.2.1. Paso por valor

4.4.2.1.1. se copia el valor al parámetro del método

4.4.2.1.2. protege de modificaciones del parámetro actual

4.4.2.2. Paso por resultado

4.4.2.2.1. Implementado con copia de valor

4.4.2.3. Parámetro actual debe ser variable

4.4.2.4. Paso por valor - resultado

4.4.2.4.1. Copia de parámetros en la entrega y retorno

4.4.2.4.2. Posee dificultades

4.4.3. Sobrecarga de subprogramas

4.4.3.1. Existen diferentes subprogramas en mismo ámbito

4.4.3.2. Cada versión con firma diferente

4.4.3.3. Las versiones difieren en la codificación

5. La ejecución es secuencial

6. Motivación para estudiar lenguajes de programación

6.1. Mejor capacidad expresando ideas

6.2. Sobresaliente base eligiendo lenguajes apropiados

6.3. Superior habilidad aprendiendo nuevos lenguajes

6.4. un mejor uso del lenguaje

7. Dominios

7.1. Aplicaciones de negocio

7.2. Aplicaciones científicas

7.3. Inteligencia artificial

7.4. Lenguajes de propósito general

8. Característica que debe poseer un lenguaje

8.1. Sencillez de escritura

8.2. sencillez de lectura

8.3. Fiable

8.4. Posee un Estándar

8.4.1. De Jure

8.4.2. De Facto

9. Paradigmas de Programación

9.1. todo lo anterior pasa por una tabla de símbolos

9.2. Paradigma Imperativo

9.2.1. Orientado a instrucciones

9.2.2. Capaz de ser modular y estructurado

9.2.3. Difícil de entender y mantener

9.2.4. Soportado por Fortran, Basic y Pascal

9.3. Paradigma Orientado a objetos

9.3.1. Imita al comportamiento de un objeto en la vida real

9.3.2. Fácil de hacer extensiones y modificaciones

9.3.3. Soportado por Java, Python y C++

9.4. Paradigma Declarativo

9.4.1. Paradigma Funcional

9.4.1.1. Basado en el calculo lambda

9.4.1.2. Posee una elegancia, claridad y sencillez

9.4.1.3. Soportado por Scala, Scheme y Haskell

9.4.2. Paradigma Lógico

9.4.2.1. Basado en la lógica de primer orden

9.4.2.2. Posee simplicidad

9.4.2.3. Soportado por Prolog y Mercury

9.5. Paradigma Orientado a Eventos

9.5.1. Determinados por sucesos que ocurren en el sistema

9.5.2. Posee una mayor reusabilidad

9.5.3. Soportado por JavaScript y Visual Basic

9.6. Paradigma Orientado a Aspectos

9.6.1. Permita una adecuada modularización

9.6.2. El código es menos arañado, natural y reducido

9.6.3. Soportado por el AspectJ

10. Los lenguajes pueden ser

10.1. Compilados

10.2. Interpretados

10.3. Híbridos

11. Sintaxis y Semántica

11.1. Definiciones

11.1.1. Sintaxis: forma de expresiones y sentencias

11.1.1.1. Métodos formales de descripción

11.1.1.1.1. Backus Naur Form(BNF): metalenguaje utilizado para expresar gramática

11.1.1.1.2. Ambigüedad

11.1.1.1.3. Extended BNF (EBNF): también útil para expresar gramática

11.1.2. Ejemplo: while(<exp>) do <sentencias>

11.1.3. Semántica: significado de las sentencias

11.2. Elementos sintácticos

11.2.1. Conjunto de caracteres

11.2.2. Identificadores

11.2.3. símbolos de operaciones

11.2.4. Palabras clave

11.2.5. Comentarios, etc

11.3. Proceso de compilación

11.3.1. Cuando el código es leído por un compilador, y entra en

11.3.1.1. Análisis léxico

11.3.1.1.1. Verifica inicio y fin de una expresión

11.3.1.2. Análisis sintáctico

11.3.1.2.1. llama repetidamente al analizador léxico

11.3.1.3. Análisis semántico

11.3.1.3.1. construye las instrucciones de lenguaje

11.3.1.4. Generación de código

11.3.1.4.1. Entendible para el computador

12. Expresiones y Asignaciones

12.1. Definición

12.1.1. El lenguaje imperativo es dominante de expresiones y asignaciones

12.1.2. el valor dependerá del orden de operandos

12.1.3. Diferentes resultados, con ambigüedades distintas

12.2. Expresiones Aritméticas

12.2.1. Orden de evaluación definida por reglas de precedencia y asociatividad

12.2.2. Uso de paréntesis determinan orden

12.3. Expresiones condicionales

12.3.1. Utilizado en la toma de decisiones

12.3.2. Orden de operandos producirá resultados inesperados

12.4. Expresiones relacionales

12.4.1. utilizado para obtener relaciones entre sentencias

12.5. Operadores booleanos

12.5.1. Incluye AND, ORT y NOT

12.5.2. Precedencia definida de mayor a menor

12.6. Sentencias de asignación

12.6.1. cambia dinamicamente el ligado de una variable

12.6.2. Algunos lenguajes utilizan el "=" y otros ":="

12.6.3. Permite codificar en forma mas compacta

12.6.4. Es fácil producir una equivocación

13. Estructuras de Control

13.1. Definición

13.1.1. Al principio solo se tenia un goto

13.2. Tipos

13.2.1. Selección

13.2.1.1. Alternativas de ejecución

13.2.2. Repetición

13.2.2.1. Repite varias sentencias

13.3. Tipos de sentencias

13.3.1. Sentencias compuestas

13.3.1.1. Agrupa un conjunto de sentencias

13.3.2. Sentencias de selección

13.3.2.1. ejemplos el if-else o un if solo

13.3.3. Sentencias iterativas

13.3.3.1. Incluye los diferentes tipos de bucles

13.3.3.1.1. Bucles controlados por contador

13.3.3.1.2. Bucles controlados por condición

13.3.3.1.3. Bucles controlados por estructura de datos

13.3.4. Salto incondicional

13.3.4.1. Uso de rótulos o etiquetas