martes, 11 de febrero de 2014

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. El número mayor que puede representar depende del tamaño del espacio usado por el dato y la posibilidad (o no) de representar números negativos. 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. Este término se usa mucho en computación.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.


Los valores ordinales del código ASCII ampliado se encuentran en el rango de 0 a 255. Dichos valores pueden representarse escribiendo el carácter correspondiente encerrado entre comillas simples (apóstrofos).Así, podemos escribir:'A' < 'a‘Que significa: "El valor ordinal de A es menor que el de a" o "A está antes que a"Un valor de tipo carácter (char en inglés) se guarda en un byte de memoria.La única operación (además de las relacionales) que podemos hacer con caracteres es la concatenación concatenando dos caracteres, por ejemplo 'a' y 'X' obtendríamos la cadena "aX".

Tipo de dato lógico El tipo de dato lógico o booleano es en computación aquel que puede representar valores de lógica binaria, esto es, valores que representen falso o verdadero. Se utiliza normalmente en  programación, estadística, electrónica, matemáticas (Álgebra booleana), etc...Para generar un dato o valor lógico a partir de otros tipos de datos, típicamente, se emplean los operadores relacionales (u operadores de relación), por ejemplo: 0 es igual a falso y 1 es igual a verdadero(3>2)= 1 = verdadero(7>9)= 0 = falso

Palabra reservada una palabra reservada es una palabra que tiene un significado Gramatical especial para ese lenguaje y no puede ser utilizada como un identificador en ese lenguaje.

Por ejemplo, en SQL, un usuario no puede ser llamado "group", porque la palabra group es usada para indicar que un identificador se refiere a un grupo, no a un usuario. Al tratarse de una palabra clave su uso queda restringido.Ocasionalmente la especificación de un lenguaje de programación puede tener palabras reservadas que están previstas para un posible uso en futuras versiones. En Java const y goto son palabras reservadas — no tienen significado en Java, pero tampoco pueden ser usadas como identificadores. Al reservar los términos pueden ser implementados en futuras versiones de Java, si se desea, sin que el código fuente más antiguo escrito en Java deje de funcionar.

1.4 DISCIPLINA DE DATOS


En todos estos años que llevo en el mundo del cómputo, en particular en la enseñanza de la programación de computadoras, he enfrentado toda clase de paradigmas e ideas. Por ejemplo, están los lenguajes imperativos, de cuarta generación que les dicen, en donde el programador debe decirle al sistema, mediante instrucciones muy precisas, qué queremos que haga la máquina. Así, tenemos que ver esta serie de instrucciones como un algoritmo, una especie de receta de cocina que se debe ejecutar rigurosamente para obtener los resultados deseados.

Para ello hay lenguajes como Pascal o C, el segundo quizás el más popular en el mundo, en donde la expresividad del lenguaje permite hacer muchísimas cosas. Los lenguajes modernos deben contar con estructuras de datos dinámicas, que permiten, en muchos casos, una manera mucho más eficiente de hacer programas y de hacer que estos convivan unos con otros dentro del mismo sistema operativo. Por ello mismo, cuando llegan alumnos que me dicen que programan en Visual Basic, o cualquier variedad de Basic les indico que eso no califica como lenguaje, sino como un “dialecto” de “la tierra primitiva”. Y no exagero. Basic en cualquier modalidad adolece de las estructuras dinámicas asociadas a los lenguajes modernos. Sí, es cierto que Visual Basic ha incorporado algunas ideas de esta naturaleza, pero el problema es que no son estándar, sino que dependen de cada implementación. Por ende, es probable que un programa escrito en Visual Basic sea prácticamente imposible de portar a otro Basic en otra máquina, para hablar de alguna de las deficiencias. Igualmente, la incorporación de apuntadores (o punteros, como suelen decirles en los libros españoles), es bastante primitiva y de difícil uso. Aún así, la popularidad del Basic es evidente porque permite generar prototipos rápidamente, aunque no se utilicen las mejores capacidades expresivas de otros lenguajes.

Otros lenguajes han sido desarrollados para hacer aplicaciones para la Internet, para páginas web y ahí hay cientos de lenguajes de todo género. Tenemos Java, creado por Sun Microsystems, que permite programar prácticamente en cualquier plataforma pues Mac, PC, Linux, o incluso sistemas en computadoras de alto desempeño. Para ello Sun escribió –para cada plataforma– un intérprete de java, que es una máquina virtual. El intérprete está escrito para una implementación única en cada sistema operativo y por ende los programas en Java son portables de una máquina a otra. Además, la cantidad de bibliotecas de funciones para todo género de aplicaciones es extraordinaria. Se cuentan por miles y hay para todas las necesidades. Java tiene sintaxis mezclada de C y Pascal, por lo que la curva de aprendizaje es menor. Además, funciona en un “sandbox”, una especie de caja cerrada en donde la aplicación corre, impidiendo que se puedan crear virus malignos. Es quizás una de las mejores herramientas para programar en la web.

Hay otros lenguajes, como PHP, que es un sistema para generar páginas dinámicas, es decir, páginas que cambian de acuerdo a las necesidades y peticiones de los usuarios. Por ejemplo, Amazon, la tienda virtual de libros, tiene un gran sistema de bases de datos y cada usuario ve cosas diferentes de acuerdo a las peticiones y búsquedas que hacen al sistema. PHP se encarga de presentar los resultados personalizados para cada usuario. Y aunque este sistema es muy robusto y además, se lleva muy bien con MySQL, un manejador de bases de datos escrito para la web, tiene el inconveniente de que es muy poco estricto con los tipos de datos. Así, una variable entera puede recibir un dato de punto flotante o incluso como cadena de caracteres. Eso va contra la disciplina en programación pues da pie a muchísimos errores porque las variables intercambian su propiedad inicial de ser reales, enteras, de caracteres o de cadenas de caracteres. Es difícil “debugear”, es decir, depurar los programas en PHP por este simple hecho de que las variables cambian de tipo y van contra la disciplina en programación. Y aunque es un lenguaje con muchas aplicaciones interesantes, PHP no es un buen candidato para enseñar a nadie a programar.

Más de uno dirá que exagero, pero lo dudo. Los lenguajes de programación se parecen a los lenguajes de los seres humanos, los cuales nos llevan años para más o menos hablarlos con propiedad y soltura. Para ello seguimos reglas que no nos podemos brincar fácilmente pues la comunicación se hace entonces difícil. Imaginen los dobles sentidos para alguien que está aprendiendo a comunicarse. Seguramente lo confundirán estas sutilezas semánticas y en lugar de ayudarlo a comprender las palabras y sus significados, lo confunden más. Eso creo que pasa en mayor o menor grado con PHP, aunque de acuerdo a los amantes de este lenguaje, el asunto de las variables sin tipo (o sin ser estricto en los tipos), es una característica asombrosa que cuando seamos expertos en dicho lenguaje sabremos apreciar. ¿Será cierto?

1.3 DEFINICIÓN DE FUNCIONES

EL concepto de función tiene su origen en el término latino functĭo. La palabra puede ser utilizada en diversos ámbitos y con distintos significados.

Por otra parte, una función matemática es la correspondencia o relación f de los elementos de un conjunto A con los elementos de un conjunto B. Una función cumple con la condición de existencia (todos los elementos de A están relacionados con los elementos de B) y con la condición de unicidad (cada elemento de A está relacionado con un único elemento de B).

En la informática, más precisamente en los lenguajes de programación, una función es un tipo de subalgoritmo que describe una secuencia de órdenes. Estas órdenes cumplen con una tarea específica de una aplicación más grande.

1.2 EVALUACIÓN DE EXPRESIONES

En general, salvo que se relacionen con las mencionadas sentencias modificadoras del flujo, las palabras-clave señalan al compilador aspectos complementarios que no alteran el orden de ejecución dentro de la propia sentencia.


Este orden viene determinado por cuatro condicionantes:


1. Presencia de paréntesis que obligan a un orden de evaluación específico.
2. Naturaleza de los operadores involucrados en la expresión (asociatividad).
3. Orden en que están colocados (precedencia).
4. Providencias (impredecibles) del compilador relativas a la optimización del código.
En cuanto al primero, aunque el paréntesis es un signo de puntuación, podría considerarse como el operador de precedencia más alta. Si existen paréntesis, el compilador los evalúa en primer lugar. El segundo es especialmente importante, porque como veremos a continuación, es precisamente su naturaleza la que establece dos propiedades importantes de los operadores: la asociatividad y la precedencia.  El punto tercero es influyente porque a igualdad de precedencia, unos operadores se ejecutan en el orden en que aparecen escritos en el código (de izquierda a derecha), y en otros casos es al contrario (dependiendo de su asociatividad). A su vez el punto cuarto encierra decisiones que son dependientes de la plataforma. Se refieren a medidas del compilador tendentes a la optimización del código de la sentencia, que resultan incontrolables para el programador a no ser que adopte medidas específicas. Estas medidas suelen consistir en no simplificar demasiado las expresiones, y obtener resultados intermedios, que solo son necesarios para obligar a una forma determinada de obtener el resultado.

1.1 ESTILOS DE PROGRAMACIÓN


lunes, 10 de febrero de 2014

OBJETIVO GENERAL DEL CURSO

Conocer los principios lógicos y funcionales de la programación para identificarlos y  aplicarlos en la resolución de problemas a través del diseño de agentes inteligentes. 

BIENVENIDOS

El siguiente blogger pretende mostrar cada uno de los temas expuestos de la asignatura de PROGRAMACIÓN LÓGICA Y FUNCIONAL con el propósito de comprender, entender, razonar cada uno de los temas con ayuda de la investigación, mapas conceptuales, resúmenes, entre otras técnicas de aprendizaje que facilita la enseñanza para cumplir con los objetivos, competencias de la asignatura.