viernes, 28 de agosto de 2009

ALGORITMOS Y PROGRAMAS










1. SISTEMA DE PROCESAMIENTO DE LA INFORMACION
Un ordenador es una máquina de procesamiento de información. Es una máquina porque tiene cables, chips,... , procesa porque es capaz de procesar cosas, e información porque maneja conjuntos ordenados de datos.
Para procesar la información está el hardware (microprocesador, RAM,...), y el software (que sirve para manejar el hardware).

2. CONCEPTO DE ALGORITMO
Algoritmo es una formula para resolver un problema. Es un conjunto de acciones o secuencia de operaciones que ejecutadas en un determinado orden resuelven el problema. Existen algoritmos, hay que coger el más efectivo.
El logaritmo; Tiene que ser preciso, estar bien definido, tiene que ser finito
La programación es adaptar el algoritmo al ordenador.
El algoritmo es independiente según donde lo implemente.

3. EL LENGUAJE DE PROGRAMACION
Hay diferentes tipos, de bajo nivel y de alto nivel
•Lenguaje máquina: Todo se programa con 1 y 0, que es lo único que entiende el ordenador.
la ventaja de este es que no necesita ser traducido, el inconveniente: La dificultad, la confusión, para corregir errores, es propia de cada máquina.
•De bajo nivel o ensamblador: Se utilizan mnemotécnicos (abreviaturas).
La ventaja es que no es tan dificil como el lenguaje maquina, inconvenientes: Cada máquina tiene su propio lenguaje, necesitamos un proceso de traducción.
•El programa escrito en ensamblador se llama programa fuente y el programa que se obtiene al ensamblarlo se llama programa objeto.
•Lenguajes de alto nivel: Los más cercanos al lenguaje humano.
la ventaja es que son independientes de cada maquina (los compiladores aceptan las instrucciones estándar, pero también tienen instrucciones propias), el inconveniente es que el proceso de traducción es muy largo y ocupa más recursos. Aprovecha menos los recursos internos

Una instrucción es cada paso de un algoritmo, pero que lo ejecuta el ordenador. Un programa es un conjunto de instrucciones que ejecutadas ordenadamente resuelven un problema.
Tipos de instrucciones:
•E/S: Pasar información del exterior al interior del ordenador y al revés.
•Aritmético-lógicas: Aritméticas: +,-,*,... ; Lógicas: or, and, <, >, ...
•Selectivas: Permiten la selección de una alternativa en función de una condición.
•Repetitivas: Repetición de un número de instrucciones un número finito de veces.

4. DATOS, TIPOS DE DATOS Y OPERACIONES PRIMITIVAS
Dato es un objeto o elemento que tratamos a lo largo de diversas operaciones. Tiene 3 caracteristicas: Un nombre que los diferencia del resto, un tipo que nos determina las operaciones que podemos hacer con ese dato y un valor que puede variar o no a lo largo de la operación.
Los datos pueden ser, simples (un elemento), o compuestos (varios elementos)
tipos de datos:
Los que vienen en el sistema por defecto (estandar), y los que crea el usuario (no estandar)
Los tipos simples más importantes son:

1. Numéricos:
•Entero: Subconjunto finito del conjunto matemático de los numéros enteros. No tiene parte decimal. El rango de los valores depende del tamaño que se les da en memoria.
•Real: Subconjunto finito del conjunto matemático de los números reales. Llevan signo y parte decimal. Se almacenan en 4 Bytes. Si se utilizan números reales muy grandes, se puede usar notación científica que se divide en mantisa, base y exponente; tal que el valor se obtiene multiplicando la mantisa por la base elevada al exponente.
2.Lógicos o booleanos:
Aquel que sólo puede tomar uno de los dos valores, verdadero o falso (1/0).
3.Carácter:
Abarca al conjunto finito y ordenado de caracteres que reconoce la computadora (letras, digitos, caracteres especiales, ASCII).
El propio lenguaje puede añadir más tipos, o se pueden añadir modificadores.
Caracteristicas de los tipos:
•Cada tipo se representa o almacena de forma diferente en la computadora.
Bit:1/0; Byte=8 bits.
•Un tipo agrupa a los valores que hacen las mismas operaciones.
•Si tiene definida una relación de orden es un tipo escalar.
•Cardinalidad de un tipo: Número de valores distintos que puede tomar un tipo.

Pueden ser finitos (caracteres), y si son infinitos el ordenador los toma como finitos porque esta limitado por el tamaño de los bytes en el que la cifra es almacenada.

5. CONSTANTES Y VARIABLES
•Constantes: Tienen un valor fijo que ya no puede ser modificado durante la ejecución.
•Variables: El valor puede cambiar durante la ejecución del algoritmo, pero nunca varia su nombre y su tipo.

Antes de usar una variable hay que definirla, al hacerlo hay que dar su nombre y su tipo. El nombre que le damos tiene que ser un nombre significativo, va a ser un conjunto de caracteres que dependiendo del lenguaje hay restricciones. Tiene que empezar por una letra, y el tamaño depende del lenguaje.
El valor de la variable si al declararla no se la inicializa, en algunos lenguajes toma una por defecto. En cualquier caso el valor de la variable podemos darle uno incial o podemos ir variandolo a lo largo de la ejecución.
Las constantes pueden llevar asociados un nombre o no, si no lo llevan, se llaman literales. Su valor hay que darlo al definir la constante y ya no puede cambiar a lo largo de la ejecución, y en cuanto al tipo, dependiendo de los lenguajes en algunos hay que ponerlo, y en otros no hace falta ponerlo porque toma el tipo del dato que se le asigna. Const PI=3,1416.

Hay que inicializar todas las variables.
Hay que poner algo obligatoriamente.
Puede llevar algo o no llevarlo.
Las constantes sin nombres son de valor constante: 5, 6, `a', “hola”.
Cuando una cadena es de tipo carácter, se encierra entre `' `a'.

Al detectar una variable o una constante con nombre, automaticamente se reserva en memoria espacio para guardar esa variable o constante. El espacio reservado depende del tipo de la variable.

6. EXPRESIONES, TIPOS Y OPERADORES
Una expresión es una combinación de constantes, variables, signos de operación, paréntesis y nombres especiales (nombres de funciones estandar), con un sentido unívoco y definido y de cuya evaluación resulta un único valor.

Numéricas: Operadores aritméticos.
Son los que se utilizan en las expresiones numéricas (una combinación de variables y/o constantes numéricas con operadores aritméticos y que al evaluarla devuelve un valor numérico.
Operación resto: Lo que devuelve es el resto de una división entera.
Mod: Pascal. 5 mod 3 = 2
%: C.
División entera: Nos devuelve el cociente de una división entera (en la que no se sacan decimales).
Div: Pascal. 5 div 3 = 1
\: C.
Potencia: ^ 5^2.

Todos estos operadores son binarios (el operador se situa en medio), el menos tambien puede ser unario (lleva un único operando) y significa signo negativo.

Reglas de precedencia:
El problema es cuando una expresión entera según como la evalue pueda dar diferentes valores.
La solución es aplicar prioridad entre los operadores, de modo que ante la posibilidad de usar varios siempre aplicaremos primero el de mayor prioridad.
Cada lenguaje puede establecer sus propias reglas de prioridad o precedencia de operadores. Si no nos acordamos, siempre podemos poner ( ).
Entre dos operaciones que tienen la misma precedencia para resolver la ambigüedad, hay que usar la regla de la asociatividad. La más normal es la de la asociatividad a izquierdas (primero lo de la izquieda).

Expresiones lógicas:
Una expresión lógica es aquella que sólo puede devolver dos valores (Verdadero o Falso). Los valores que pueden aparecer en una expresión lógica son de 2 tipos: lógicos y relacionales.
La particularidad de las expresiones lógicas es que mientras en una expresión numérica por devolver un valor numérico los operandos solo pueden ser números, en una expresión lógica los operandos no tienen porque ser booleanos aunque se devuelva un valor booleano. Esto es lo que ocurre cuando en la expresión lógica utilizamos operadores relacionales con lo cual se obtienen valores lógicos o booleanos a partir de otros que no lo son.
En cambio cuando los operadores son lógicos los operandos obligatoriamente tambien tienen que ser lógicos.

7. FUNCIONES INTERNAS
Son funciones matemáticas diferentes de las operaciones básicas que se incorporan al lenguaje y que se consideran estandar. Dependen del lenguaje. Normalmente se encuentran en la librería de matemáticas del lenguaje de programación.

Fórmulas:
Abs (x)
Arctan (x)
Cos (x)
Sen (x)
Exp (x)
Ln (x)
Log 10 (x)
Redondeo (x)
Trunc (x)
Cuadrado (x)
Raiz (x)

8.OPERACION DE ASIGNACION
Consiste en atribuir un valor a una variable. El valor sera una expresión (constante, variable,...).

•Otros lenguajes = , :=
Variable a la que se le asigna el valor el valor que le vamos a asignar.
A 5
En C A = = B Comparación
A = B Asignación
En Pascal A:=B Asignación
A=B Comparación
El proceso de asignacion se realiza en 2 fases:
•Se evalúa la expresión de la parte derecha de la asignación obteniendose un único valor.
•Se asigna ese valor a la variable de la parte izquierda.
•En la parte izquierda sólo puede haber una variable.
•La variable a la que se le asigna el valor pierde su valor anterior.
•La variable que aparece en la derecha ya que como se evalua primero la de la derecha cuando se tenga que evaluar el valor de esa variable se tomara su valor antiguo.
A una variable solo se le pueden dar valores del mismo tipo

En Pascal da un error.
En C, no da error porque el compilador trunca el numero.
A: entero
A 2
A 3*A + A = 8

9. ENTRADA Y SALIDA DE LA INFORMACION
Las dos operaciones básicas de cada salida son las de lectura y de escritura. La lectura es equivalente a la asignación en cuanto que va a haber una variable que recibe un valor, pero este valor no resulta de evaluar ninguna expresión, sino que el valor lo vamos a leer de un dispositivo externo de entrada.

Leer (nombre de la variable)
El valor introducido por el dispositivo externo, tiene que ser del mismo tipo del que la variable que se le asigne.
La operación de escritura lo que hace es mostrar el valor de una variable en un dispositivo externo de salida.
Escribir (variable)
La operación de escritura no es una operación destructivo en memoria.

viernes, 21 de agosto de 2009

Clases De Programación



Programación Lineal

Es un procedimiento o algoritmo matemático mediante el cual se resuelve un problema indeterminado, formulado a través de ecuaciones lineales.

Consiste en optimizar (minimizar o maximizar) una función lineal, que denominaremos función objetivo, de tal forma que las variables de dicha función estén sujetas a una serie de restricciones que expresamos mediante un sistema de inecuaciones lineales. La potencia de computación necesaria para examinar todas las permutaciones a fin de seleccionar la mejor asignación es inmensa; el número de posibles configuraciones excede al número de partículas en el universo. Sin embargo, toma sólo un momento encontrar la solución óptima mediante el planteamiento del problema como una programación lineal y la aplicación del algoritmo simplex. La teoría de la programación lineal reduce drásticamente el número de posibles soluciones óptimas que deberán ser revisadas

Programación Estructural
Es una forma de escribir programas de ordenador (programación de computadora de forma clara. Para ello utiliza únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN).
Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.


Programación Orientada a objetos

La Programación Orientada a Objetos (POO u OOP según sus siglas en ingles) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.
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.

jueves, 20 de agosto de 2009

INICIACION DE ACTIVIDADES ACADEMICAS

En la primera clase de logica computacional , hicimos una corta presentacion de cada uno, las perspectivas que tenemos con la materia, algunos temas q veremos, aprendimos a crear nuestro blog personal que nos va a servir para toda la materia, el profesor nos dio una coordial bienvenida a su curso, y esperemos que nos vaya muy bien..