2. Estilo de programación
La importancia de usar un estilo de programación para el desarrollo de un
programa es vital para la comprensión, lectura y escritura; considerando
que los programas profesionales se lee muchas más veces de las que se
escriben.
La legibilidad de un programa no depende sólo de las características del
lenguaje de programación, sino del estilo en que ésta escrito es lo que
determina en gran medida su legibilidad.
Uno de los principales aspectos en los que se juega un papel muy
importante en la legibilidad de los programas es en el del mantenimiento
del software; es decir la modificación del código con la finalidad de
corregir errores o añadir nuevas opciones o funcionalidades.
3. A diferencia de la sintaxis del lenguaje de programación,
que son reglas fijas que obligatoriamente hay que seguir,
un estilo de programación, está constituido por
directrices que ayudan a obtener programas legibles. Es
por esto que, si bien no existen estilos absolutamente
correctos o incorrectos, es aconsejable la adopción, de
una manera sistemática, de un conjunto de norma para la
escritura de programas.
5. Evaluación de expresiones
X = A / B - C + D * E - A * C
EXPRESIÓN
Operandos Operadores Delimitadores
5 operandos A,B,C,D,E
Pueden ser cualquier variable o constante válida del lenguaje. Los valores de las
variables deben ser coherentes con las operaciones que se realicen con ellas.
6. 6 operadores /,-,+,*,-,*
Describen las operaciones que se realizan entre las
variables, pueden ser aritméticos, lógicos,
relacionales.
Orden en el que se deben realizar las
operaciones, cada lenguaje debe definir
exactamente dicho orden
Si A = 4, B = C = 2, D = E = 3 =>
El orden en el que se deben realizar las
operaciones se especifica mediante: prioridades
o paréntesis
7. El lenguaje define prioridades para los operadores
El programador puede cambiar las prioridades mediante ( )
A igual prioridad, evaluación de izquierda a derecha
La prioridad de los operadores no es relevante
La expresión se puede evaluar realizando un recorrido de
izquierda a derecha, apilando los operandos y evaluando los
operadores utilizando los operandos adecuados extraídos de
la pila y apilando el resultado intermedio para repetir el
proceso.
8. Definición de funciones
Función: es un bloque de instrucciones que realiza
tareas bien definidas. Todo programa en C consta de
una o más funciones. La ejecución de un programa en C
siempre comienza por la función. Cuando se ejecuta
una función el control pasa al punto donde esta inicia.
Una vez finalizada su ejecución, se devuelve el control
al punto desde el que se hizo la llamada a la función.
9. 1) PROTOTIPO DE UNA FUNCIÓN. tiene la sintaxis:
tipo nombre(parámetro 1, parámetro 2, ...parámetro N );
donde :
tipo: es el tipo de valor devuelto por la función. Los
procedimientos son tipo void.
nombre: es el nombre de la función
parámetros: conjunto de argumentos, separados por comas y
encerrados entre
paréntesis. Los parámetros son opcionales, en caso de que no
se especifiquen,
enseguida del nombre de la función se escribe un par de
paréntesis vacíos. El prototipo de la función va seguido de ;
10. Tipos de Datos
Una definición muy simple:
El tipo de un dato es el conjunto de valores que puede tomar durante el
programa. Si se le intenta dar un valor fuera del conjunto se producirá
un error.
11. La asignación de tipos a los datos tiene dos objetivos principales:
-Por un lado, detectar errores en las operaciones
-Por el otro, determinar cómo ejecutar estas operaciones
12. Clasificaciones en los tipos de datos
Existen muchas clasificaciones para los tipos de datos, y dependiendo de la
fuente que mires, te mostrarán una u otra. A continuación tienes una de las
posibles clasificaciones:
-Dinámicos
-Estáticos
-Tipo cadena
-Estructurados
-Simples
-Ordinales
-No ordinales
13. Tipo simple
Realmente de los tipos simples veremos los más básicos, que
son: integer, boolean, char y real. Además, las cadenas de caracteres, los
llamados strings.
14. Tipos de datos en Haskell
Bool (boleano)
Char (caracter)
String (cadena de caracteres)
Int (enteros de precisión fija)
Integer (enteros de precisión arbitraria)
Float (reales de simple precisión)
15. Evaluación de expresiones en lenguaje
Haskell
Operadores de igualdad y orden
(>) mayor que
(¸) mayor o igual que
(<) menor que
(·) menor o igual que
(==) igual a
(6=) distinto de
16. Funciones
Ya que Haskell es un lenguaje funcional, podemos esperar que las funciones
jueguan un papel esencial, como veremos seguidamente. Es esta sección,
trataremos varios aspectos de las funciones en Haskell.
add :: Integer -> Integer -> Integer
add x y = x + y
La bien conocida función map constituye un ejemplo perfecto
map :: (a->b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
17. La función map es polimórfica y su tipo indica claramente que su primer
argumento es una función; nótese que las dos a's deben ser instanciadas al
mismo tipo (e igualmente para las b's). Como ejemplo de uso de map, podemos
incrementar
los elementos de una lista:
map (add 1) [1,2,3] => [2,3,4]
18. Los operadores infijos son también funciones, y pueden definirse a través
de ecuaciones.
Por ejemplo, tenemos la siguiente definición para el operador de
concatenación:
(++) :: [a] -> [a] -> [a]
[] ++ ys = ys
(x:xs) ++ ys = x : (xs++ys)
19. Más interesante es la función numsFrom:
numsFrom n = n : numsFrom (n+1)
de forma que numsFrom n es la lista infinita de los enteros a partir de n. Con ésta
podemos construir una lista infinita de cuadrados:
squares = map (^2) (numsfrom 0)
take, takeWhile, filter, y otras.