jueves, 27 de agosto de 2009

ALGORITMOS Y PROGRAMAS CAPITULO 1



1. LOS SISTEMAS DE PROCESAMIENTO DE LA INFORMACIÓN:
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 y el software

2. CONCEPTO DE ALGORITMO:
El algoritmo trata de resolver problemas mediante programas.
Fases:
• Análisis preliminar o evaluación del problema: Estudiar el problema en general y ver que parte nos interesa.
• Definición o análisis del problema: Ver que es lo que entra y que es lo que sale, las posibles condiciones o restricciones, ...
• Diseño del algoritmo: Diseñar la solución.
• El programa: Codificación del algoritmo en un lenguaje de programación.
• Ejecución del programa y las pruebas: Ver si el programa hace lo que queríamos.
¿Qué es un 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 n algoritmos, hay que coger el más efectivo.
Características:
• Tiene que ser preciso.
• Tiene que estar bien definido.
• Tiene que ser finito.

3. LOS LENGUAJES DE PROGRAMACIÓN:
Existen diferentes tipos, de bajo nivel y de alto nivel.
Instrucciones en una computadora y sus tipos:
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.
Tipos de lenguajes:
• Lenguaje máquina: Todo se programa con 1 y 0, que es lo único que entiende el ordenador.
Ventaja: No necesita ser traducido.
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).
Ventaja: No es tan difícil como el lenguaje máquina.
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.
Ventaja: Son independientes de cada maquina (los compiladores aceptan las instrucciones estándar, pero también tienen instrucciones propias).
Inconveniente: El proceso de traducción es muy largo y ocupa más recursos. Aprovecha menos los recursos internos.

4. DATOS, TIPOS DE DATOS Y OPERACIONES PRIMITIVAS:
- Dato: Es un objeto o elemento que tratamos a lo largo de diversas operaciones.
Tienen 3 caracteristicas:
• Un nombre que los diferencia del resto.
• Un tipo que nos determina las operaciones que podemos hacer con ese dato.
• Un valor que puede variar o no a lo largo de la operación.
Existen diferentes tipos de datos.
- Caracteristicas de los tipos:
• Cada tipo se representa o almacena de forma diferente en la computadora.
• 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.
- Los datos pueden ser:
• Simples: Un elemento.
• Compuestos: Varios elementos.
- Los tipos pueden ser:
• Estandar: Que vienen en el sistema por defecto.
• No estandar: Son los que crea el usuario.
- Los tipos simples más importantes son:
• Numéricos.
• Lógicos.
• Caracteres.
• 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 (dependiendo de los modificadores). 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.
• Lógicos o booleanos:
• Aquel que sólo puede tomar uno de los dos valores, verdadero o falso (1/0).
• Carácter:
• Abarca al conjunto finito y ordenado de caracteres que reconoce la computadora (letras, digitos, caracteres especiales).

5. CONSTANTES Y VARIABLES:
• Constantes: Tienen un valor fijo que se le da cuando se define la constante y 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 o declararla, 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.
Identificador: Palabra que no es propia 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.
La ventaja de usar constantes con nombre es que en cualquier lugar donde quiera que vaya la constante, basta con poner su nombre y luego el compilador lo sustituira por su valor.
Las constantes sin nombres son de valor constante: 5, 6, `a', “hola”.
Cuando una cadena es de tipo carácter, se encierra entre `' `a'.
Relación entre variables y constantes en memoria:
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.
En esa zona de memoria es en la que se guarda el valor asociado a la variable o constante y cuando el programa use esa variable, ira a esa zona de memoria a buscar su valor.

6. EXPRESIONES:
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.
Toda expresion tiene asociada un tipo que se corresponde con el tipo del valor que devuelve la expresion cuando se evalua, por lo que habrá tantos tipos de expresiones como tipos de datos. Habra expresiones numéricas y lógicas.
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.
7*3+4 25
49
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 ( ).
1ª) ^
2ª) * / div mod
3ª) + -
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: Operadores relacionales y lógicos.
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.

7. FUNCIONES INTERNAS:
Son funciones matemáticas diferentes de las operaciones básicas pero 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. LA OPERACIÓN DE ASIGNACIÓN:
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.
¿Qué es lo que hay que tener en cuenta?:
• 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.
• EL TIPO DEL VALOR QUE SE OBTIENE AL EVALUAR LA PARTE DERECHA TIENE QUE SER EL MISMO QUE EL TIPO DE LA VARIABLE DE LA PARTE IZQUIERDA, ES DECIR A UNA VARIABLE SOLO SE LE PUEDEN DAR VALORES DE SU 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 INFORMACIÓN:
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.
Al pedir un valor al usuario hay que decirle que es lo que se le quiere pedir escribiendo un mensaje.

domingo, 23 de agosto de 2009

clase 21 de agosto de 2009

21 de agosto de 2009 en esta clase aprendimos sobre todos los conceptos generales de la logica computacinal, ademas de esto ya tenemos un amplio conocimiento sobre como manejar nuesteo propio blog, como editarlo personalizarlo y publiar distintos temas que son de util ayuda para el aprendizaje de esta importante asignatura q es la logica computacional, espero seguir teniendo mejores instrucciones que me ayuden a mejorar todo lo visto anteriormente

viernes, 21 de agosto de 2009

conceptos generales

unos de los conceptos generales de logica computacional es la programacion lineal que es un procedimiento o algoritmo matemático mediante el cual se resuelve un problema indeterminado, formulado a través de ecuaciones lineales, optimizando la función objetivo, también lineal. Consiste en optimizar 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

domingo, 16 de agosto de 2009

Iniciacion de actividades academicas

el dia 14 de agosto del 2009 iniciamos nuestra primera clase de logica computacional donde aprendimos a crear nuestro propio blog, ademas de eso conceptos basicos que nos ayudaran al aprendizaje facil y efectivo de esta asignatura.......