domingo, 30 de agosto de 2009
Publicacion Blogs (Vitacora)
La clase del dia Viernes 24 de Agosto....... el Ing. mariño realizo la Respectiva revicion de los Blogs del grupo.... de igual manera cada alumno hizo la respectiva presentacion de los Blos a los demas compañeros... con ello se pretendia ver como podiamos mejorar la experiencia en nuestro blog para darle un mejor provecho....
Algoritmos de Programacion
Un algoritmo es un método para resolver un problema. Para la creación de un programa (resolver un problema) en un lenguaje de programación hay que sobrepasar al menos cuatro pasos a saber:
a) Definición o análisis del problema.
b) Diseño del algoritmo.
c) Transformación del algoritmo en un programa.
d) Ejecución y validación del programa.
Definición o análisis del problema: Consiste en conocer a detalle de lo que se va a tratar, es decir, antes de dar el paso siguiente es necesario saber cuál es el problema y como enfrentarlo, buscar las posibles soluciones y escoger la más fiable y/o menos costosa.
Diseño del algoritmo: que describe la secuencia ordenada de pasos – sin ambigüedades – que conduzcan a la solución de un problema dado.
Expresar el algoritmo como un programa en un lenguaje de programación adecuado.
Ejecución y validación del programa por la computadora.
Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa. Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. Sus características fundamentales son:
a) Debe ser preciso e indicar el orden de realización de cada paso.
b) Debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
c) Debe se finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe tener un número finito de pasos.
d) Ha de cumplir tres partes: Entrada – Proceso – Salida.
Lenguajes de Programación : Son los utilizados para escribir los programas de computadora. Un algoritmo es un programa cuando el procesador encargado de su ejecución es una computadora. Los principales lenguajes utilizados son tres:
1. Lenguaje de máquina.
2. Lenguaje de bajo nivel (ensamblador).
3. Lenguaje de alto nivel.
Los diferentes pasos o acciones de un algoritmo se expresan en os programas como instrucciones, sentencias o proposiciones. Por consiguiente, un programa consta de una secuencia de instrucciones cada una de las cuales especifica ciertas operaciones que debe ejecutar la computadora. Existen sin embargo, determinados tipos de instrucciones: Instrucciones de Entrada/Salida, aritmético-lógicas, selectivas y repetitivas.
Lenguaje de máquina : Son aquellos que están escritos en lenguajes directamente inteligibles por la máquina, ya que sus instrucciones son cadenas binarias que especifican una operación y las posiciones o direcciones de memoria implicadas en la operación. Las instrucciones en lenguaje de máquina dependen del hardware de la computadora y, por tanto, diferirán de una computadora a otra.
Lenguaje de bajo nivel : Son más fáciles de utilizar que los lenguaje de máquina, pero dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como mnemotécnicos (mnemonics). Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora – en esto se diferencia esencialmente del lenguaje máquina, sino que requiere una fase de traducción al lenguaje máquina. El programa original se denomina programa fuente y el programa traducido en lenguaje máquina se llama programa objeto. El traductor de programas fuente a objeto es un programa llamado ensamblador (assembler) y existe en casi todas las computadoras.
Lenguaje de alto nivel : Son los más utilizados por los programadores y son independientes de la máquina, esto es, las instrucciones del programa de la computadora no depende del hardware o de una computadora en particular, por lo tanto los programas son portables, es decir, que pueden ser ejecutados en otras computadoras con poca o ninguna modificación. Al igual que sucede con los lenguajes ensambladores, los programas fuentes tienen que ser traducidos por programas traductores, llamados compiladores e intérpretes.
Traductores de lenguaje : Los traductores de lenguaje son programas que traducen a su vez los programas escritos en lenguaje de alto nivel a código máquina. Se dividen en compiladores e intérpretes.
Intérpretes : Es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. El lenguaje que opera bajo este formato se denomina lenguaje interpretado.
Compiladores : Es un programa que traduce los programas fuentes escritos en lenguaje de alto nivel a lenguaje de máquina. El programa objeto obtenido de la compilación no ha sido traducido normalmente a código máquina sino a ensamblador. Para obtener el programa máquina real se utiliza un programa llamado enlazador (linker). El proceso de enlazamiento conduce a un programa en lenguaje máquina directamente ejecutable.
Datos, Tipos de Datos y Operaciones Primitivas : El primer objetivo de toda computadora es el manejo de la información o datos. Un dato es la expresión general que describe los objetos con los cuales opera una computadora. Existen dos tipos de datos: simples (sin estructuras) y compuestos (estructurados), los datos compuestos son conjuntos de partidas de datos simples con relaciones definidas entre ellos. Los datos simples son: numéricos, lógicos y carácter.
Datos numéricos : Es el conjunto de los valores numéricos y puede ser expresado numérico entero (integer) y numérico real. Los enteros no tienen componentes fraccionarias o decimales y pueden ser negativos o positivos. Los reales siempre tienen un punto decimal.
Datos lógicos : También llamados booleanos —es aquel que solo puede tomar uno de dos valores: verdadero (true) o falso (false). Se utiliza para representar las alternativas (si/no) a determinadas condiciones.
Datos carácter : Este tipo de dato contiene un solo carácter. Los caracteres son: alfabéticos (A-Z), numéricos (0-9) y especiales (¡ @ # $ % ^ & *…). Una cadena de caracteres o string es una sucesión de caracteres que se encuentran delimitados por una o dobles comillas.
Constantes y Variables : Una constante es un valor dentro de un programa que no puede cambiar durante la ejecución del mismo. De igual modo los valores que son serán fijos durante la ejecución se les llaman variables. Dependiendo del lenguaje, las variables pueden ser enteras, reales, carácter, lógicas y de cadena. Una variable se identifica por el nombre que se le asigna y el tipo que describe el uso de la variable.
Expresiones : Son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Las mismas son utilizadas en notación matemática tradicional. Una expresión costa de operandos y operadores. Según sea el tipo de objetos que manipulan, se clasifican las expresiones en aritméticas, relacionales, lógicas y carácter.
Expresiones aritméticas : Las expresiones son análogas a las formulas matemáticas. Las variables y constantes son numéricas y las operaciones son la suma, resta, multiplicación, división, etc.
Reglas de prioridad :
a) Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados, las expresiones mas internas se evalúan primero.
b) Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de prioridad.
b) Diseño del algoritmo.
c) Transformación del algoritmo en un programa.
d) Ejecución y validación del programa.
Definición o análisis del problema: Consiste en conocer a detalle de lo que se va a tratar, es decir, antes de dar el paso siguiente es necesario saber cuál es el problema y como enfrentarlo, buscar las posibles soluciones y escoger la más fiable y/o menos costosa.
Diseño del algoritmo: que describe la secuencia ordenada de pasos – sin ambigüedades – que conduzcan a la solución de un problema dado.
Expresar el algoritmo como un programa en un lenguaje de programación adecuado.
Ejecución y validación del programa por la computadora.
Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa. Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. Sus características fundamentales son:
a) Debe ser preciso e indicar el orden de realización de cada paso.
b) Debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
c) Debe se finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe tener un número finito de pasos.
d) Ha de cumplir tres partes: Entrada – Proceso – Salida.
Lenguajes de Programación : Son los utilizados para escribir los programas de computadora. Un algoritmo es un programa cuando el procesador encargado de su ejecución es una computadora. Los principales lenguajes utilizados son tres:
1. Lenguaje de máquina.
2. Lenguaje de bajo nivel (ensamblador).
3. Lenguaje de alto nivel.
Los diferentes pasos o acciones de un algoritmo se expresan en os programas como instrucciones, sentencias o proposiciones. Por consiguiente, un programa consta de una secuencia de instrucciones cada una de las cuales especifica ciertas operaciones que debe ejecutar la computadora. Existen sin embargo, determinados tipos de instrucciones: Instrucciones de Entrada/Salida, aritmético-lógicas, selectivas y repetitivas.
Lenguaje de máquina : Son aquellos que están escritos en lenguajes directamente inteligibles por la máquina, ya que sus instrucciones son cadenas binarias que especifican una operación y las posiciones o direcciones de memoria implicadas en la operación. Las instrucciones en lenguaje de máquina dependen del hardware de la computadora y, por tanto, diferirán de una computadora a otra.
Lenguaje de bajo nivel : Son más fáciles de utilizar que los lenguaje de máquina, pero dependen de la máquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como mnemotécnicos (mnemonics). Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora – en esto se diferencia esencialmente del lenguaje máquina, sino que requiere una fase de traducción al lenguaje máquina. El programa original se denomina programa fuente y el programa traducido en lenguaje máquina se llama programa objeto. El traductor de programas fuente a objeto es un programa llamado ensamblador (assembler) y existe en casi todas las computadoras.
Lenguaje de alto nivel : Son los más utilizados por los programadores y son independientes de la máquina, esto es, las instrucciones del programa de la computadora no depende del hardware o de una computadora en particular, por lo tanto los programas son portables, es decir, que pueden ser ejecutados en otras computadoras con poca o ninguna modificación. Al igual que sucede con los lenguajes ensambladores, los programas fuentes tienen que ser traducidos por programas traductores, llamados compiladores e intérpretes.
Traductores de lenguaje : Los traductores de lenguaje son programas que traducen a su vez los programas escritos en lenguaje de alto nivel a código máquina. Se dividen en compiladores e intérpretes.
Intérpretes : Es un traductor que toma un programa fuente, lo traduce y a continuación lo ejecuta. El lenguaje que opera bajo este formato se denomina lenguaje interpretado.
Compiladores : Es un programa que traduce los programas fuentes escritos en lenguaje de alto nivel a lenguaje de máquina. El programa objeto obtenido de la compilación no ha sido traducido normalmente a código máquina sino a ensamblador. Para obtener el programa máquina real se utiliza un programa llamado enlazador (linker). El proceso de enlazamiento conduce a un programa en lenguaje máquina directamente ejecutable.
Datos, Tipos de Datos y Operaciones Primitivas : El primer objetivo de toda computadora es el manejo de la información o datos. Un dato es la expresión general que describe los objetos con los cuales opera una computadora. Existen dos tipos de datos: simples (sin estructuras) y compuestos (estructurados), los datos compuestos son conjuntos de partidas de datos simples con relaciones definidas entre ellos. Los datos simples son: numéricos, lógicos y carácter.
Datos numéricos : Es el conjunto de los valores numéricos y puede ser expresado numérico entero (integer) y numérico real. Los enteros no tienen componentes fraccionarias o decimales y pueden ser negativos o positivos. Los reales siempre tienen un punto decimal.
Datos lógicos : También llamados booleanos —es aquel que solo puede tomar uno de dos valores: verdadero (true) o falso (false). Se utiliza para representar las alternativas (si/no) a determinadas condiciones.
Datos carácter : Este tipo de dato contiene un solo carácter. Los caracteres son: alfabéticos (A-Z), numéricos (0-9) y especiales (¡ @ # $ % ^ & *…). Una cadena de caracteres o string es una sucesión de caracteres que se encuentran delimitados por una o dobles comillas.
Constantes y Variables : Una constante es un valor dentro de un programa que no puede cambiar durante la ejecución del mismo. De igual modo los valores que son serán fijos durante la ejecución se les llaman variables. Dependiendo del lenguaje, las variables pueden ser enteras, reales, carácter, lógicas y de cadena. Una variable se identifica por el nombre que se le asigna y el tipo que describe el uso de la variable.
Expresiones : Son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Las mismas son utilizadas en notación matemática tradicional. Una expresión costa de operandos y operadores. Según sea el tipo de objetos que manipulan, se clasifican las expresiones en aritméticas, relacionales, lógicas y carácter.
Expresiones aritméticas : Las expresiones son análogas a las formulas matemáticas. Las variables y constantes son numéricas y las operaciones son la suma, resta, multiplicación, división, etc.
Reglas de prioridad :
a) Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen diferentes paréntesis anidados, las expresiones mas internas se evalúan primero.
b) Las operaciones aritméticas dentro de una expresión suelen seguir el siguiente orden de prioridad.
1.- exponencial
2.- multiplicación y división
3.- suma y resta
4.- multiplicación entera y residuo
En caso de coincidir varios operadores de igual prioridad en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de izquierda a derecha.
Expresiones lógicas (booleanas) : Es una expresión que solo puede tener uno de dos valores, verdadero o falso. Se forman combinando constantes lógicas, variables lógicas y otras expresiones lógicas utilizando los operadores lógicos and, or, not y los operadores relacionales =, <, >, <=, >= y <>.
Operadores de relación : Permiten realizar comparaciones de valores de tipo numérico o carácter. Los operadores de relación sirven para expresar las condiciones en los algoritmos.
Operadores lógicos : Los operadores lógicos son not, and y or. Not es la negación de una proposición en tanto que los valores de and (y) y or (o) se recogen en la tabla de verdad. En las expresiones lógicas se pueden mezclar operadores de relación y lógicos.
Funciones internas : Es un número determinado de operaciones especiales que se requieren habitualmente en los programas y que están incorporadas en los lenguajes de programación. Pertenecen a estas funciones las raíces cuadradas y las funciones trigonométricas entre otras.
Operación de asignación : La operación de asignación es el modo de darle valores a una variable. La acción de asignar es destructiva, ya que l valor que tuviera la variable antes de la asignación se pierde y se reemplaza por el nuevo valor.
Entrada y salida de información : Los cálculos que realizan las computadoras requieren para ser útiles la entrada de los datos necesarios para ejecutar las operaciones que posteriormente se convertirán en resultados, es decir, salida.
Las operaciones de entrada permiten leer valores y asignarlos a determinadas variables. Esta entrada se conoce como operación de lectura (read). La operación de salida se denomina escritura (write). ...Ver Más...
miércoles, 26 de agosto de 2009
UNIDAD I. lógica Computacional
CONCEPTOS GENERALES
Con el surgimiento cada vez más acelerado de nuevas tendencias y tecnologías informáticas, tales como la programación orientada a objetos, sistemas en paralelo y distribuidos, lenguajes de cuarta generación, bases de datos, multimedia, etc., y por la necesidad impuesta por “la moda” de estar constantemente actualizados, se ha descuidado notablemente, por buena parte de las personas que manejan la actualidad informática, el aspecto teórico y formal de la misma. La Importancia de una teoría formal está sustentada en la capacidad para establecer criterios de veracidad científica, sobre los resultados arrojados por la teoría, basados en la construcción axiomática de la misma, para otorgarle a la teoría el carácter de ser consistente. Este poder de la formalización se proyecta directamente a los objetos y fenómenos que se estudian a la luz de la teoría. El estudio de cualquier fenómeno mediante la formalización, requiere bases teóricas sólidas que soporten las descripciones y comportamientos del objeto de estudio, siendo la formalización una nueva alternativa para el estudio de diferentes fenómenos.
La lógica computacional es una disciplina que estudia la aplicación de la lógica clásica formal para la representación computacional de argumentos, las técnicas de deducción automática y asistida por computadora; sus fundamentos relacionados con validez y completes de sistemas de proposiciones; y las aplicaciones de esas técnicas a las diferentes áreas de las ciencias computacionales en todas las etapas de desarrollo de software, es decir, en la especificación, diseño, construcción y verificación formal de programas. En este objetivo concurre junto con la teoría de la computación y el análisis de algoritmos. Siendo los temas de la lógica Computacional muy amplios.
PROGRAMACION LINEAL
La Programación Lineal (PL) es una de las principales ramas de la Investigación Operativa. En esta categoría se consideran todos aquellos modelos de optimización donde las funciones que lo componen, es decir, función objetivo y restricciones, son funciones lineales en las variables de decisión. Los modelos de Programación Lineal por su sencillez son frecuentemente usados para abordar una gran variedad de problemas de naturaleza real en ingeniería y ciencias sociales, lo que ha permitido a empresas y organizaciones importantes beneficios y ahorros asociados a su utilización.
Aplicaciones
La programación lineal constituye un importante campo de la optimización por varias razones, muchos problemas prácticos de la investigación de operaciones pueden plantearse como problemas de programación lineal. Algunos casos especiales de programación lineal, tales como los problemas de flujo de redes y problemas de flujo de mercancías se consideraron en el desarrollo de las matemáticas lo suficientemente importantes como para generar por si mismos mucha investigación sobre algoritmos especializados en su solución. Una serie de algoritmos diseñados para resolver otros tipos de problemas de optimización constituyen casos particulares de la más amplia técnica de la programación lineal. Históricamente, las ideas de programación lineal han inspirado muchos de los conceptos centrales de la teoría de optimización tales como la dualidad, la descomposición y la importancia de la convexidad y sus generalizaciones. Del mismo modo, la programación lineal es muy usada en la microeconomía y la administración de empresas, ya sea para aumentar al máximo los ingresos o reducir al mínimo los costos de un sistema de producción. Algunos ejemplos son la mezcla de alimentos, la gestión de inventarios, la cartera y la gestión de las finanzas, la asignación de recursos humanos y recursos de máquinas, la planificación de campañas de publicidad, etc.
PROGRAMACION ESTRUCTURADA
Programación Estructurada es una técnica en la cual la estructura de un programa, esto es, la interpelación de sus partes realiza tan claramente como es posible mediante el uso de tres estructuras lógicas de control:
a. Secuencia: Sucesión simple de dos o mas operaciones.
b. Selección: bifurcación condicional de una o mas operaciones.
c. Interacción: Repetición de una operación mientras se cumple una condición.
Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir programas que manejen cualquier tarea de procesamiento de información. Un programa estructurado esta compuesto de segmentos, los cuales puedan estar constituidos por unas pocas instrucciones o por una pagina o más de codificación. Cada segmento tiene solamente una entrada y una salida, estos segmentos, asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamás se ejecuten, se denominan programas propios.
Cuando varios programas propios se combinan utilizando las tres estructuras básicas de control mencionadas anteriormente, el resultado es también un programa propio. La programación Estructurada esta basada en el Teorema de la Estructura, el cual establece que cualquier programa propio (un programa con una entrada y una salida exclusivamente) es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente. Una característica importante en un programa estructurado es que puede ser leído en secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es importante debido a que, es mucho más fácil comprender completamente el trabajo que realiza una función determinada, si todas las instrucciones que influyen en su acción están físicamente contiguas y encerradas por un bloque. La facilidad de lectura, de comienzo a fin, es una consecuencia de utilizar solamente tres estructuras de control y de eliminar la instrucción de desvío de flujo de control, excepto en circunstancias muy especiales tales como la simulación de una estructura lógica de control en un lenguaje de programación que no la posea.
PROGRAMACION ORIENTADA A OBJETOS
La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés).Es un paradigma que utiliza objetos como elementos fundamentales en la construcción de la solución. Surge en los años 70. Un objeto es una abstracción de algún hecho o cosa del mundo real que tiene atributos que representan sus características o propiedades y métodos que representan su comportamiento o acciones que realizan. Todas las propiedades y métodos comunes a los objetos se encapsulan o se agrupan en clases. ¨Una clase es una plantilla o un prototipo para crear objetos, por eso se dice que los objetos son instancias de clases. Lenguaje de programación: C++, Java, C#, VB.Net, etc
Los objetos son entidades que combinan estado, comportamiento e identidad:
El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto, es decir, qué operaciones se pueden realizar con él.
La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).
La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles de escribir, mantener, reutilizar y volver a utilizar.
De aquella forma, un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separan ni deben separarse el estado y el comportamiento.
Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a ninguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.
Esto difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada sólo se escriben funciones que procesan datos. Los programadores que emplean éste nuevo paradigma, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.
Michelle Quino
Viernes 14 de Agosto de 2009.

Tuvimos nuestra primera actividad academica con el profe Mariño, hablamos un poco hacerca de lo que es la Logica Computacional de lo que podriamos aprender de la misma y a la vez haciendo unos juegos ludicos basandonos de la logica... ya habiendo despejado dudas y aclarando la metodoliga de las clases comenzamos con crear nuestro blog; el cual sera muy indispensable a la hora de querer llevar un registro de nuestro trabajo en clase y fuera de ella.
Suscribirse a:
Entradas (Atom)