martes, 25 de junio de 2013

Arreglos



ARREGLOS

      Un arreglo es un conjunto de datos o una estructura de datos homogéneos que se encuentran ubicados en forma consecutiva en la memoria RAM (sirve para almacenar datos en forma temporal).




Definición

     Un arreglo puede definirse como un grupo o una colección finita, homogénea y ordenada de elementos. Los arreglos pueden ser de los siguientes tipos:
  • De una dimensión.
  • De dos dimensiones.
  • De tres o más dimensiones.

Tipos de arreglos

  • Arreglos unidimensionales.
  • Arreglos multidimensionales.
  • Arreglo con múltiple subíndices.

Arreglos unidimensionales

      Es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Están formados por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un mismo nombre, y se diferencian por la posición que tiene cada elemento dentro del arreglo de datos. Al declarar un arreglo, se debe inicializar sus elementos antes de utilizarlos. Para declarar un arreglo tiene que indicar su tipo, un nombre único y la cantidad de elementos que va a contener.

Arreglos multidimensionales

     Es un tipo de dato estructurado, que está compuesto por dimensiones. Para hacer referencia a cada componente del arreglo es necesario utilizar índices, uno para cada dimensión. El término dimensión representa el número de índices utilizados para referirse a un elemento particular en el arreglo. Los arreglos de más de una dimensión se llaman arreglos multidimensionales.

Arreglos con múltiple subíndices

    Es la representación de tablas de valores, consistiendo de información arreglada en renglones y columnas. Para identificar un elemento particular de la tabla, deberemos de especificar dos subíndices; el primero identifica el renglón del elemento y el segundo identifica la columna del elemento. A los arreglos que requieren dos subíndices para identificar un elemento en particular se conocen como arreglo de doble subíndice. Note que los arreglos de múltiples subíndices pueden tener más de dos subíndices. El estándar ANSI indica que un sistema ANSI C debe soportar por lo menos 12 subíndices de arreglo.

Operaciones con arreglos

Las operaciones en arreglos pueden clasificarse de la siguiente forma:
  • Lectura: este proceso consiste en leer un dato de un arreglo y asignar un valor a cada uno de sus componentes
  • Escritura: Consiste en asignarle un valor a cada elemento del arreglo.
  • Asignación: No es posible asignar directamente un valor a todo el arreglo
  • Actualización: Dentro de esta operación se encuentran las operaciones de eliminar, insertar y modificar datos. Para realizar este tipo de operaciones se debe tomar en cuenta si el arreglo está o no ordenado.
  • Ordenación.
  • Búsqueda.
  • Insertar.
  • Borrar.
  • Modificar.

Ordenaciones en Arreglos

     La importancia de mantener nuestros arreglos ordenados radica en que es mucho más rápido tener acceso a un dato en un arreglo ordenado que en uno desordenado.
   Existen muchos algoritmos para la ordenación de elementos en arreglos, algunos de ellos son:

Selección directa

     Este método consiste en seleccionar el elemento más pequeño de nuestra lista para colocarlo al inicio y así excluirlo de la lista. Para ahorrar espacio, siempre que vayamos a colocar un elemento en su posición correcta lo intercambiaremos por aquel que la esté ocupando en ese momento.

Ordenación por burbuja

     Es el método de ordenación más utilizado por su fácil comprensión y programación, pero es importante señalar que es el más ineficiente de todos los métodos. Este método consiste en llevar los elementos menores a la izquierda del arreglo ó los mayores a la derecha del mismo. La idea básica del algoritmo es comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que todos se encuentren ordenados.

Ordenación por mezcla

     Este algoritmo consiste en partir el arreglo por la mitad, ordenar la mitad izquierda, ordenar la mitad derecha y mezclar las dos mitades ordenadas en un array ordenado. Este último paso consiste en ir comparando pares sucesivos de elementos (uno de cada mitad) y poniendo el valor más pequeño en el siguiente hueco.

Algoritmos de búsqueda que existen

  • Búsquedas en Arreglos: Una búsqueda es el proceso mediante el cual podemos localizar un elemento con un valor especifico dentro de un conjunto de datos. Terminamos con éxito la búsqueda cuando el elemento es encontrado.
  • Búsqueda secuencial: A este método también se le conoce como búsqueda lineal y consiste en empezar al inicio del conjunto de elementos , e ir a través de ellos hasta encontrar el elemento indicado ó hasta llegar al final de arreglo. Este es el método de búsqueda más lento, pero si nuestro arreglo se encuentra completamente desordenado es el único que nos podrá ayudar a encontrar el dato que buscamos.
  • Búsqueda binaria: Las condiciones que debe cumplir el arreglo para poder usar búsqueda binaria son que el arreglo este ordenado y que se conozca el numero de elementos. Este método consiste en lo siguiente: comparar el elemento buscado con el elemento situado en la mitad del arreglo, si tenemos suerte y los dos valores coinciden, en ese momento la búsqueda termina. Pero como existe un alto porcentaje de que esto no ocurra, repetiremos los pasos anteriores en la mitad inferior del arreglo si el elemento que buscamos resulto menor que el de la mitad del arreglo, o en la mitad superior si el elemento buscado fue mayor. La búsqueda termina cuando encontramos el elemento o cuando el tamaño del arreglo a examinar sea cero.
  • Búsqueda por hash: La idea principal de este método consiste en aplicar una función que traduce el valor del elemento buscado en un rango de direcciones relativas. Una desventaja importante de este método es que puede ocasionar colisiones.

jueves, 25 de abril de 2013

Lenguaje de alto y bajo nivel


Lenguajes de bajo nivel y alto nivel

Lenguajes de alto nivel

Un lenguaje de programación de alto nivel  se caracteriza por expresar los algoritmos  de una manera adecuada a la capacidad cognitiva  humana, en lugar de a la capacidad ejecutora de las máquinas. Se clasifican como lenguajes procedimentales. Otra limitación de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de alto nivel se crearon para que el usuario común pudiese solucionar un problema de procesamiento de datos de una manera más fácil y rápida.


Ventajas

 -Genera un código más sencillo y comprensible.

 -Escribir un código válido para diversas máquinas y, posiblemente, sistemas operativos.

Desventajas

 -Reducción de velocidad al ceder el trabajo de bajo nivel a la máquina.

 -Algunos requieren que la máquina cliente posea una determinada plataforma.


Lenguaje de bajo nivel 



Un lenguaje de programación  de bajo nivel de abstracción es el que proporciona un conjunto de instrucciones aritmético lógicas sin la capacidad de encapsular dichas instrucciones en funciones que no estén ya contempladas en la arquitectura del hardware.

Dicho lenguaje es muy simple o nada complicado, pero estructurar programas a ese nivel es muy difícil. Dado que este lenguaje viene dado por las especificaciones técnicas del hardware, no permite una abstracción fuera de lo estipulado para el microprocesador  de un ordenador. Consecuentemente, es fácilmente trasladado a lenguaje de máquina.



Los lenguajes de bajo nivel son más fáciles de utilizar que los lenguajes máquina, pero, al igual que ellos, 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 nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc.; en español, SUM,RES,DIV,etc. Una instrucción típica de suma sería:
ADD M, N, P

Esta instrucción podría significar “sumar el número contenido en la posición de memoria M al número almacenado en la posición de memoria N y situar el resultado en la posición de memoria P”. Evidentemente es mucho más sencillo recordar la instrucción anterior con un nemotécnico que su equivalente en código máquina”.
0110 1001 1010 1011

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 escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, ya directamente entendible por la computadora.
El traductor de programas fuente a objeto es un programa llamado ensamblador, existente en casi todos los computadores.


Datos

El dato es una representación simbólica (numérica, alfabética, algorítmica, entre otros.), un atributo o característica de una entidad. Los datos describen hechos empíricos, sucesos y entidades.

Los datos aisladamente pueden no contener información humanamente relevante. Sólo cuando un conjunto de datos se examina conjuntamente a la luz de un enfoque, hipótesis o teoría se puede apreciar la información contenida en dichos datos. Los datos pueden consistir en números, estadísticas o proposiciones descriptivas. Los datos convenientemente agrupados, estructurados e interpretados se consideran que son la base de la información humanamente relevante que se pueden utilizar en la toma decisiones, la reducción de la incertidumbre o la realización de cálculos.

En programación, un dato es la expresión general que describe las características de las entidades sobre las cuales opera un algoritmo.




Diferencia entre datos e información

Los datos son símbolos que describen hechos, condiciones, valores o situaciones. Un dato puede ser una letra, un número, un signo ortográfico o cualquier símbolo y que representa una cantidad, una medida, una palabra o una descripción. Los datos se caracterizan por no contener ninguna información.

Los datos pueden asociarse dentro de un contexto para convertirse en información. Para ser útiles, los datos deben convertirse en información y ofrecer así un significado, conocimiento, ideas o conclusiones. Por sí mismos los datos no tienen capacidad de comunicar un significado.

En general, la información es un conjunto organizado de datos, que constituyen un mensaje sobre un determinado ente o fenómeno. 

Los datos se perciben mediante los sentidos, éstos los integran y generan la información necesaria para producir el conocimiento que es el que finalmente permite tomar decisiones para realizar las acciones cotidianas que aseguran la existencia social.








Tipos de operadores

Operadores aritméticos

Los operadores aritméticos nos permiten, básicamente, hacer cualquier operación aritmética, que necesitemos (ejemplo: suma, resta, multiplicación, etc). En la siguiente tabla se muestran los operadores de los que disponemos en C y su función asociada. 


Tabla: Operadores aritméticos
OperadorAcciónEjemplo
$-$Restax = 5 $-$ 3; // x vale 2
$+$Sumax = 2 $+$ 3; // x vale 5
$*$Multiplicaciónx = 2 $*$ 3; // x vale 6
$/$Divisiónx = 6 $/$ 2; // x vale 3
$\%$Módulox = 5 % 2; // x vale 1
$--$Decrementox = 1; x$--$; // x vale 0
$++$Incrementox = 1; x$++$; // x vale 2

Operadores Racionales

Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el resultado de la comparación es correcto la expresión considerada es verdadera, en caso contrario es falsa. Por ejemplo, 8>4 (ocho mayor que cuatro) es verdadera, se representa por el valor true del tipo básico boolean, en cambio, 8<4 (ocho menor que cuatro) es falsa, false. En la primera columna de la tabla, se dan los símbolos de los operadores relacionales, el la segunda, el nombre de dichos operadores, y a continuación su significado mediante un ejemplo.
Operadornombreejemplosignificado
<menor quea<ba es menor que b
>mayor quea>ba es mayor que b
==igual aa==ba es igual a b
!=no igual aa!=ba no es igual a b
<=menor que o igual aa<=5a es menor que o igual a b
>=mayor que o igual aa>=ba es menor que o igual a b
Se debe tener especial cuidado en no confundir el operador asignación con el operador relacional igual a. Las asignaciones se realizan con el símbolo =, las comparaciones con ==.

Operadores alfanumérico



Un dato alfanumérico es un término informático referente al conjunto de caracteres numéricos y alfabéticos de los cuales dispone una computadora. Ocurre correspondencia casi exacta con los caracteres que aparecen en un teclado de computadora.
Un conjunto de caracteres alfanuméricos consiste en las letras del alfabeto y los números 0 al 9. Difieren según se especifica a continuación.

Operadores lógico
Los operadores lógicos sirven para combinar condiciones. En Access 2000 una condición puede tomar tres valores TRUE (verdadero), FALSE (falso) o NULL (nulo), por lo tanto el resultado de los operadores lógicos también será true, false o null.
Para ver cómo funcionan los operadores lógicos utilizaremos las tablas de verdad de estos operadores.
Operador AND .
Para que el resultado sea verdadero las dos condiciones deben ser verdaderas.
ANDTRUEFALSENULL
TRUETRUEFALSENULL
FALSEFALSEFALSEFALSE
NULLNULLFALSENULL
Operador OR .
El resultado es verdadero si al menos una de las dos condiciones es verdadera.
ORTRUEFALSENULL
TRUETRUETRUETRUE
FALSETRUEFALSENULL
NULLTRUENULLNULL


Operador NOT .
El resultado es invertido.
NOTTRUEFALSENULL
FALSETRUENULL