Mathematics">
Nothing Special   »   [go: up one dir, main page]

Investigasion Logica

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

1.1. Estilos de programación.

Es un término que describe convenciones para escribir código fuente en ciertos


lenguajes de programación.
El estilo de programación es frecuentemente dependiente del lenguaje de
programación que se haya elegido para escribir
Un paradigma de programación es una propuesta tecnológica que es adoptada por una
comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que
unívocamente trata de resolver uno o varios problemas claramente delimitados. La
resolución de estos problemas debe suponer consecuentemente un avance
significativo en al menos un parámetro que afecte a la ingeniería de software. Tiene
una estrecha relación con la formalización de determinados lenguajes en su momento
de definición. Un paradigma de programación está delimitado en el tiempo en cuanto a
aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que
la sustituyen parcial o totalmente.
1.2. Evaluación de expresiones.
Las expresiones se evalúan de acuerdo con la precedencia de los operadores. Ante
una secuencia de operadores de igual precedencia, la evaluación se realiza según el
orden de escritura, de izquierda a derecha. El orden de evaluación puede modificarse
usando paréntesis.
Orden de operadores:
1. Resolver paréntesis, u otros símbolos. ( ) [ ] { }
2. Resolver exponentes o raíces.
3. Multiplicación y división de izquierda a derecha.
4. Suma y resta de izquierda a derecha.
Reducción de expresiones
La labor de un evaluador es calcular el resultado que se obtiene al simplificar una
expresión utilizando las definiciones de las funciones involucradas.
Una expresión se reduce sustituyendo, en la parte derecha de la ecuación de la
función, los Parámetros Formales o argumentos por los que aparecen en la llamada
(también llamados Parámetros Reales o Parámetros). Cuando una expresión no pueda
reducirse más, se dice que está en Forma Normal
ORDEN APLICATIVO
Se reduce siempre el término MAS INTERNO (el más anidado en la expresión). En
caso de que existan varios términos a reducir (con la misma profundidad) se selecciona
el que aparece más a la izquierda de la expresión. Esto también se llama “paso de
parámetros por valor” , ya que ante una aplicación de una función, se reducen primero
los parámetros de la función.
ORDEN NORMAL
Consiste en seleccionar el término MÁS EXTERNO (el menos anidado), y en caso de
conflicto el que aparezca más a la izquierda de la expresión. Esta estrategia se conoce
como “paso de parámetro por nombre o referencia”, ya que se pasan como parámetros
de las funciones expresiones en vez de valores.
Evaluación PEREZOSA o LENTA (Lazy)
No se evalúa ningún elemento en ninguna función hasta que no sea necesario Las
listas se almacenan internamente en un formato no evaluado La evaluación perezosa
consiste en utilizar paso por nombre y recordar los valores de los argumentos ya
calculados para evitar recalcularlos. También se denomina estrategia de pasos de
parámetros por necesidad. Con una estrategia no estricta de la expresión doble (doble
3), la expresión (3 + 3) se calcula dos veces.
1.3 Definición de funciones
DEFINICIÓN DE FUNCIONES.
Una función es una aplicación que toma uno o más argumentos y devuelve un valor.
Es una correspondencia en la que cada elemento del dominio está relacionado con un
único elemento
Ejemplo de definición de función en Haskell:
doble x = x * x
• Notación matemática: f (a, b) + cd
• Notación Haskell: f a b + c * d
• Los paréntesis se utilizan para agrupar expresiones:
• Notación matemática: f (x, g (y))
• Notación Haskell: f x (g y)
Las definiciones se incluyen en ficheros de texto. Se acostumbra a identificar dichos
ficheros mediante el sufijo.hs.
Los nombres de funciones tienen que empezar por una letra en minúscula.
En Haskell la disposición del texto del programa (el sangrado) delimita las definiciones
mediante la
siguiente regla:
Una definición acaba con el primer trozo de código con un margen izquierdo menor o igual que el
del comienzo de la definición actual.
· Un comentario simple comienza con -- y se extiende hasta el final de la línea.
· Un comentario anidado comienza con {- y termina en -}
máximo x y z=max x (max y z) {- ejemplo de una definición y un comentario}

La manera más fácil de definir funciones es por combinación de otras funciones:


fac n = product [1...n]
impar x = not (even x)
cuadrado x = x*x
suma_de_cuadrados lista = sum (map cuadrado lista)
Las funciones pueden tener más de un parámetro:
comb n k = fac n / (fac k * fac (n-k))
formulaABC a b c = [ (-b+sqrt(b*b-4.0*a*c)) / (2.0*a)
, (-b-sqrt(b*b-4.0*a*c)) / (2.0*a)]

Las funciones sin parámetros se llaman normalmente constantes:


pi = 3.1415926535
e = exp 1.0
Toda definición de función tiene por tanto la siguiente forma:
• El nombre de la función
• Los nombres de los parámetros (si existen)
• El símbolo =
• una expresión, que puede contener los parámetros, las funciones estándar y otras
funciones definidas.
Una función que tiene un valor booleano como resultado, tiene a la derecha del símbolo
= una expresión con un valor booleano:
negativo x = x < 0
positivo x = x > 0
es Cero x = x == 0
Note la diferencia en el anterior ejemplo entre = y ==. El símbolo = separa la parte
izquierda de la parte derecha de la definición. El símbolo == es un operador, como
< y >.
1.4 . Disciplina de tipos.
Los tipos se infieren, es decir se comprueban, de forma estática, en tiempo de
compilación.”
En los lenguajes de programación con disciplina de tipos, cada tipo representa una
colección de valores o datos similares. El conocer los tipos de las funciones ayuda a
documentar los programas y evitar errores en tiempo de ejecución.
Un lenguaje tiene disciplina de tipos si los errores de tipos se detectan siempre ⇒ es
necesario determinar los tipos de todos los operandos, ya sea en tiempo de
compilación o de ejecución
Pascal
• Cercano a tener disciplina de tipos pero no realiza comprobación de tipos en los
registros variantes (incluso puede omitirse la etiqueta discriminatoria en dichos
registros)
Ada
• Resuelve el problema de los registros variantes realizando comprobación dinámica de
tipos (sólo en este caso)
• Tiene una función de biblioteca que permite extraer un valor de una variable de
cualquier tipo (como una cadena de bits) y usarlo como un tipo diferente (no es una
conversión de tipos) ⇒ se trata de una suspensión temporal de la comprobación de
tipos

C
• No tiene disciplina de tipos por:
− No se realiza comprobación de tipos sobre las uniones
− Permite funciones con parámetros sobre los que no se realiza comprobación de tipos

Java
• Tiene disciplina de tipos (no hay uniones)
ML y Haskell
• Poseen disciplina de tipos
• Los tipos de los parámetros de las funciones (y de estas mismas) se conocen en
tiempo de compilación (ya sea por declaración del usuario o por inferencia de tipos)

Haskell y otros lenguajes funcionales utilizan el sistema de tipos de Milner, que tiene
dos características fundamentales:

Disciplina estática de tipos: Los programas bien tipados se pueden conocer en tiempo
de compilación. Un programa bien tipado se puede utilizar sin efectuar comprobaciones
de tipo en tiempo de ejecución, estando garantizado que no se producirán errores de
tipo durante el computo.
Polimorfismo: Permite que una misma función se pueda aplicar a parámetros de
diferentes tipos, dependiendo del contexto en el que la función se utilice.

1.5. Tipos de datos.


En lenguajes de programación un tipo de dato es un atributo de una parte de los datos
que indica al ordenador (y/o al programador) algo sobre la clase de datos sobre los que
se va a procesar.
En un sentido amplio, un tipo de datos define un conjunto de valores y las operaciones
sobre estos valores. Casi todos los lenguajes de programación explícitamente incluyen
la notación del tipo de datos, aunque lenguajes diferentes pueden usar terminología
diferente. La mayor parte de los lenguajes de programación permiten al programador
definir tipos de datos adicionales, normalmente combinando múltiples elementos de
otros tipos y definiendo las operaciones del nuevo tipo de dato.
Por ejemplo, un programador puede crear un nuevo tipo de dato llamado "Persona" que
especifica que el dato interpretado como Persona incluirá un nombre y una fecha de
nacimiento.
Un tipo de dato entero en computación es un tipo de dato que puede representar un
subconjunto finito de los números enteros. Los tipos de dato entero disponibles y su
tamaño dependen del lenguaje de programación usado, así como la arquitectura en
cuestión
Por ejemplo, si para almacenar un número entero disponemos de 4 bytes de memoria
tememos que:4 Bytes = 4x8 = 32 bits Con 32 bits se pueden representar
232=4294967296 valores: Sólo positivos: del 0 al 4294967295 Positivos y negativos:
del -2147483648 al 2147483647

Tipos de datos en coma flotante Se usan para representar números con partes
fraccionarias. Hay dos tipos de coma flotante: float y double. El primero reserva
almacenamiento para un número de precisión simple de 4 bytes y el segundo lo hace
para un numero de precisión doble de 8 bytes.Tipo:float4 Bytes (32 bits)double8 Bytes
(64 bits)
Tipo de dato carácter (Char)Es cualquier signo tipográfico, puede ser una letra, un
número, un signo de puntuación o un espacio.
ES Un valor de tipo carácter es cualquier carácter que se encuentre dentro del conjunto
ASCII ampliado, el cual está formado por los 128 caracteres del ASCII más los 128
caracteres especiales que presenta, en este caso, IBM.

También podría gustarte