domingo, 8 de junio de 2014

Arreglos multidimensionales

ARREGLOS MULTIDIMENSIONALES
Vemos que en Excel existen filas y columnas y que las celdas son el resultado de la unión de estas,
es decir los campos que ellas forman, pues bien, los arreglos multidimensionales se asemejan a la
unión de celdas en Excel, dichos arreglos tiene una dimensión la cual podemos acomodar a
nuestro gusto y depende de las necesidades del programador.
¿Como crear un arreglo multidimensional?




¿Como ingresar datos en un arreglo multidimensional?
Así como en arreglos unidimensionales usamos un ciclo Para, que nos ayudaba a desplazarnos por
el arreglo, en estas matrices debemos usar dos ciclos Para, que nos ayuden a desplazarnos por los
índices de las columnas y filas.


¿Como extraer datos en un arreglo multidimensional?
Se realizara de la misma forma como agregamos datos anteriormente recuerden muy bien que se
necesitan de dos ciclos Para.
EJEMPLO:
Ejecución Completa: 

Ejemplos de algoritmo en pseint

EJEMPLO DE PROBLEMAS SECUENCIALES:


1) Suponga que un individuo desea invertir su capital en un banco y desea saber cuánto dinero ganara después de un mes si el banco paga a razón de 2% mensual.

Proceso sin_titulo 
    definir cap_inv, gan Como Real;
    cap_inv<-0;
    gan<-0;
    Imprimir "Introduzca el capital";
    leer cap_inv;
    gan<-cap_inv*0.02
    Imprimir "La ganancia a obtener es", gan;
FinProceso
 

EJEMPLO DW PROBLEMAS SELECTIVOS:



2) Determinar si un alumno aprueba a reprueba un curso, sabiendo que aprobara si su promedio de tres calificaciones es mayor o igual a 10; reprueba en caso contrario.



  Proceso sin_titulo
    definir nota1, nota2, nota3 Como Entero;
    Definir prom Como Real;
    nota1<-0;
    nota2<-0;
    nota3<-0;
    prom<-0;
    Imprimir "Ingrese la primera nota";
    Leer nota1;
    Imprimir "Ingrese la segunda nota";
    Leer nota2;
    Imprimir "ingrese la tercera nota";
    Leer nota3;
   
    prom<-(nota1+nota2+nota3)/3;
    si prom>=40; Entonces
        Imprimir "Alumno aprovado";
    Sino
        Imprimir "Alumno reprovado";
    FinSi
FinProceso

Algoritmos

¿QUE ES UN ALGORITMO?

 Es un lista de instrucciones para resolver un cálculo o un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida). Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Eratóstenes que nunca termine de calcular números primos no deja de ser un algoritmo.
  
A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos. Esto fue realizado por Alonzo Church en 1936 con el concepto de "calculabilidad efectiva" basada en su cálculo lambda y por Alan Turingbasándose en la máquina de Turing. Los dos enfoques son equivalentes, en el sentido en que se pueden resolver exactamente los mismos problemas con ambos enfoques. Sin embargo, estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos. En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:
Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados "computacionales" por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar).

Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.

Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.
En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría, por ejemplo el método de Newton y laeliminación de Gauss-Jordan funcionan, al menos en principio, con números de precisión infinita; sin embargo no es posible programar la precisión infinita en una computadora, y no por ello dejan de ser algoritmos. En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda función calculable se puede programar en una máquina de Turing (o equivalentemente, en un lenguaje de programación suficientemente general):
Aritmetizabilidad. Solamente operaciones innegablemente calculables están disponibles en el paso inicial.

MEDIOS DE EXPRESIÓN DE UN ALGORITMO

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje naturalpseudocódigodiagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.
La descripción de un algoritmo usualmente se hace en tres niveles:

1.Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. 

2.Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución. 

3.Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones. 
También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.

Diagrama de flujo


Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número x
Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos porISO.
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

Pseudocódigo

El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.
El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.
Así el pseudodocódigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programación. Busque fuentes más precisas para tener mayor comprensión del tema.

Sistemas formales

La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turingmáquina de registro y funciones μ-recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación.

Implementación

Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchasformas de resolver la raíz cuadrada son sólo algunos ejemplos.

Variables

Son elementos que toman valores específicos de un tipo de datos concreto. La declaración de una variable puede realizarse comenzando con var. Principalmente, existen dos maneras de otorgar valores iniciales a variables:
  1. Mediante una sentencia de asignación.
  2. Mediante un procedimiento de entrada de datos (por ejemplo: 'read').

Ejemplo:
     ...
    i:=1;
    read(n);
    while i < n do begin
       (* cuerpo del bucle *)
       i := i + 1
    end;
     ...

Estructuras secuenciales

La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. La asignación de esto consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:
  1. Simples: Consiste en pasar un valor constante a una variable (a ← 15)
  2. Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso (a ← a + 1)
  3. Acumulador: Consiste en usarla como un sumador en un proceso (a ← a + b)
  4. De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a ← c + b*2/4).
Un ejemplo de estructura secuencial, como obtener la área de un triángulo:
Inicio 
...
    float b, h, a;
    printf("Diga la base");
    scanf("%f", &b);
    printf("Diga la altura");
    scanf("%f", &h);
    a = (b*h)/2;
    printf("El área del triángulo es %f", a)
...
Fin

ALGORITMOS COMO FUNCIONES


Esquemática de un algoritmo solucionando un problema deciclo hamiltoniano.
Un algoritmo se puede concebir como una función que transforma los datos de unproblema (entrada) en los datos de una solución (salida). Más aun, los datos se pueden representar a su vez como secuencias de bits, y en general, de símbolos cualesquiera.19 11 Como cada secuencia de bits representa a un número natural (véase Sistema binario), entonces los algoritmos son en esencia funciones de los números naturales en los números naturales que sí se pueden calcular. Es decir que todo algoritmo calcula una función f:\mathbf N\to \mathbf N donde cada número natural es la codificación de un problema o de una solución.
En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningún valor de salida, y podemos decir que la función queda indefinida para ese valor de entrada. Por esta razón se considera que los algoritmos son funciones parciales, es decir, no necesariamente definidas en todo su dominio de definición.
Cuando una función puede ser calculada por medios algorítmicos, sin importar la cantidad de memoria que ocupe o el tiempo que se tarde, se dice que dicha función escomputable. No todas las funciones entre secuencias datos son computables. Elproblema de la parada es un ejemplo.

ANÁLISIS DE ALGORITMOS

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El análisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada.
El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y, en la mayoría de los casos, su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal comoLexico, cuyos códigos pueden estar en el idioma del programador.
Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento, mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. En este último caso, la finalización con éxito del algoritmo no se podría definir como la terminación de este con una salida satisfactoria, sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil. Si se implementa correctamente, el valor devuelto por el algoritmo será válido, hasta que evalúe el siguiente dígito binario. De esta forma, mientras evalúa la siguiente secuencia podrán leerse dos tipos de señales: una señal positiva (en el caso de que el número de ceros sea mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la devolución de valores exclusivamente positivos si hay más ceros que unos en la secuencia y, en cualquier otro caso, devolverá una mezcla de señales positivas y negativas.

EJEMPLO DE ALGORITMO

El problema consiste en encontrar el máximo de un conjunto de números. Para un ejemplo más complejo véase Algoritmo de Euclides.

Descripción de alto nivel

Dado un conjunto finito C de números, se tiene el problema de encontrar el número más grande. Sin pérdida de generalidad se puede asumir que dicho conjunto no es vacío y que sus elementos están numerados como c_0,c_1,\dots,c_n.
Es decir, dado un conjunto C=\{c_0,c_1,\dots,c_n\} se pide encontrar m tal que x\leq m para todo elemento x que pertenece al conjunto C.
Para encontrar el elemento máximo, se asume que el primer elemento (c_0) es el máximo; luego, se recorre el conjunto y se compara cada valor con el valor del máximo número encontrado hasta ese momento. En el caso que un elemento sea mayor que el máximo, se asigna su valor al máximo. Cuando se termina de recorrer la lista, el máximo número que se ha encontrado es el máximo de todo el conjunto.

Descripción formal

El algoritmo puede ser escrito de una manera más formal en el siguiente pseudocódigo:
Algoritmo Encontrar el máximo de un conjunto
función max(C)
//C es un conjunto no vacío de números//
n ← |C| //|C| es el número de elementos de C//
m ← c_0
para i ← 1 hasta n hacer
si c_i > m entonces
m ← c_i
devolver m
Sobre la notación:
  • "←" representa una asignación: m ← x significa que la variable m toma el valor de x;
  • "devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el máximo de C).

Implementación

En lenguaje C++:
int max(int c[], int n)
{
   int i, m = c[0];
   for (i = 1; i < n; i++)
      if (c[i] > m) m = c[i];
   return m;
}

Técnicas de diseño de algoritmos

  • Algoritmos voraces (greedy): seleccionan los elementos más prometedores del conjunto de candidatos hasta encontrar una solución. En la mayoría de los casos la solución no es óptima.
  • Algoritmos paralelos: permiten la división de un problema en subproblemas de forma que se puedan ejecutar de forma simultánea en varios procesadores.
  • Algoritmos probabilísticos: algunos de los pasos de este tipo de algoritmos están en función de valores pseudoaleatorios.
  • Algoritmos determinísticos: el comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro antecesor.
  • Algoritmos no determinísticos: el comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores, además todas las ramas se ejecutan simultáneamente.
  • Divide y vencerás: dividen el problema en subconjuntos disjuntos obteniendo una solución de cada uno de ellos para después unirlas, logrando así la solución al problema completo.
  • Metaheurísticas: encuentran soluciones aproximadas (no óptimas) a problemas basándose en un conocimiento anterior (a veces llamado experiencia) de los mismos.
  • Programación dinámica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial.
  • Ramificación y acotación: se basa en la construcción de las soluciones al problema mediante un árbol implícito que se recorre de forma controlada encontrando las mejores soluciones.
  • Vuelta atrás (backtracking): se construye el espacio de soluciones del problema en un árbol que se examina completamente, almacenando las soluciones menos costosas.
.

    BIBLIOGRAFÍA

    • Fundamentos de AlgoritmiaG. Brassard y P. Bratley. (ISBN 848966000X)
    • The Art of Computer ProgrammingKnuth, D. E. [quien fue también, el creador del TeX]
    • Introduction to Algorithms (2nd ed), Cormen, T. H., Leiserson, C. E., Rivest, R. L. y Stein, C.
    • Introduction to Algorithms. A Creative Approach, Mamber, U.
    • Algorithms in C (3r ed), Sedgewick, R. (también existen versiones en C++ yJava)
    • The Design and Analysis of Computer Algorithms, Aho, A.

    Componentes internos de una computadora



    EL GABINETE







    El gabinete de la computadora es la caja de metal y plástico que aloja a los componentes principales. Los gabinetes de las computadoras vienen en distintos tamaños y formas. Un gabinete de escritorio se coloca plano sobre el escritorio del usuario y, en la mayoría de los casos, el monitor se apoya sobre él. El gabinete en forma de torre que figura a continuación, es alto y se instala junto al monitor o en el piso. En la parte frontal del gabinete generalmente se encuentra el interruptor de encendido/apagado y dos o más unidades de disco. (Aprenderá más sobre las unidades de disquete de 3,5 pulgadas y las unidades de CD-ROM más adelante en este curso.)

    En la parte posterior del gabinete de una computadora, hay puertos de conexión que se utilizan para enchufar tipos específicos de dispositivos. Estos puertos incluyen: un puerto para el cable del monitor, varios puertos para el ratón y el teclado, un puerto para conectar el cable de la red, puertos de entrada para micrófonos/altavoces/auxiliares y un puerto para impresora (ya sea una interfaz SCSI o paralela). También hay un lugar para enchufar el cable de alimentación.G



    Componentes Internos de Una Computadora



    Placa Madre


    El motherboard es el corazón de la computadora. El motherboard (tarjeta madre) contiene los conectores para conectar tarjetas adicionales (también llamadas tarjetas de expansión por ejemplo tarjetas de video, de red, MODEM, etc.). Típicamente el motherboard contiene el CPU, BIOS, Memoria, interfaces para dispositivos de almacenamiento, puertos serial y paralelo aunque estos puertos ya son menos comunes por ser tecnología vieja ahora se utilizan mas los puertos USB, ranuras de expansión, y todos los controladores requeridos para manejar los dispositivos periféricos estándar, como el teclado, la pantalla de video y el dispositivo de disco flexible.

    Otro aspecto a considerar en el motherboard es que existen distintas tipos de formas de la tarjeta madre (form-factor), que definen como se conecta el motherboard al gabinete, los conectores para la fuente de poder y las características eléctricas. Hay bastantes formas de motherboard disponibles Baby AT, ATX, microATX y NLX. Hoy en día se consideran el Baby AT y el ATX como motherboards genéricos.

    El microprocesador

    El microprocesador es un
    circuito integrado que contiene todos los elementos necesarios para conformar una "unidad central de procesamiento", también es conocido como CPU (por sus siglas en inglés: Central Process Unit). En la actualidad este componente electrónico está compuesto por millones de transistores, integrados en una misma placa de silicio.

    Suelen tener forma de prisma chato, y se instalan sobre un elemento llamado zócalo (en inglés, socket). También, en modelos antiguos solía soldarse directamente a la placa madre (motherboard). Aparecieron algunos modelos donde se adoptó el formato de cartucho, sin embargo no tuvo mucho éxito. Actualmente se dispone de un zócalo especial para alojar el microprocesador y el sistema de enfriamiento, que comúnmente es un disipador de aluminio con un ventilador adosado (conocido como microcooler). Desde el punto de vista lógico y funcional, el microprocesador está compuesto básicamente por: varios registros; una Unidad de control, una Unidad aritmético-lógica; y dependiendo del procesador, puede contener una unidad en coma flotante.



    MEMORIA RAM


    RAM es acrónimo para random access memory (memoria de acceso aleatorio), es un tipo de memoria que puede ser accesado aleatoriamente; esto es, que cualquier byte de memoria puede ser accesado sin tocar los bytes predecesores. RAM es el tipo de memoria mas común encontrado en computadoras y otros dispositivos, como impresoras.

    Hay dos tipos básicos de RAM:

    RAM dinámica (DRAM)
    RAM estatica (SRAM)


    Los 2 tipos difieren en la tecnología que utilizan para retener datos, el tipo mas común es la RAM dinámica. La RAM Dinámica necesita refrescarse miles de veces por segundo. La RAM estática no necesita ser refrescada, lo cual la hace mas rápida, pero también mas cara que la RAM dinámica. Ambos tipos de RAM son volátiles, ya que pierden su contenido cuando la energía es apagada

    Memoria Rom



    ROM son las siglas de read-only memory, que significa "memoria de sólo lectura": una memoria de semiconductor destinada a ser leída y no destructible, es decir, que no se puede escribir sobre ella y que conserva intacta la información almacenada, incluso en el caso de que se interrumpa la corriente (memoria no volátil). La ROM suele almacenar la configuración del sistema o el programa de arranque de la computadora. Las memorias de sólo lectura o ROM son utilizada como medio de almacenamiento de datos en las computadoras. Debido a que no se puede escribir fácilmente, su uso principal reside en la distribución de programas que están estrechamente ligados al soporte físico de la computadora, y que seguramente no necesitarán actualización. Por ejemplo, una tarjeta gráfica puede realizar algunas funciones básicas a través de los programas contenidos en la ROM. Una razón de que todavía se utilice la memoria ROM para almacenar datos es la velocidad ya que los discos son más lentos. Aún más importante, no se puede leer un programa que es necesario para ejecutar un disco desde el propio disco. Por lo tanto, la BIOS, o el sistema de arranque oportuno de la computadora normalmente se encuentran en una memoria ROM.

    La memoria RAM normalmente es más rápida para lectura que la mayoría de las memorias ROM, por lo tanto el contenido ROM se suele traspasar normalmente a la memoria RAM cuando se utiliza.

    Memoria Caché



    Una memoria caché es una memoria en la que se almacenas una serie de datos para su rápido acceso. Básicamente, la memoria caché de un procesador es un tipo de memoria volátil (del tipo RAM), pero de una gran velocidad. En la actualidad esta memoria está integrada en el procesador, y su cometido es almacenar una serie de instrucciones y datos a los que el procesador accede continuamente, con la finalidad de que estos accesos sean instantáneos.
    Hay tres tipos diferentes de memoria caché para procesadores: 

    Caché de 1er nivel (L1): 

    Esta caché está integrada en el núcleo del procesador, trabajando a la misma velocidad que este. La cantidad de memoria caché L1 varía de un procesador a otro, estando normalmente entra los 64KB y los 256KB. Esta memoria suele a su vez estar dividida en dos partes dedicadas, una para instrucciones y otra para datos. 

    Caché de 2º nivel (L2): 

    Integrada también en el procesador, aunque no directamente en el núcleo de este, tiene las mismas ventajas que la caché L1, aunque es algo más lenta que esta. La caché L2 suele ser mayor que la caché L1, pudiendo llegar a superar los 2MB. 
    A diferencia de la caché L1, esta no está dividida, y su utilización está más encaminada a programas que al sistema. 

    Caché de 3er nivel (L3): 

    Es un tipo de memoria caché más lenta que la L2, muy poco utilizada en la actualidad. 

    En un principio esta caché estaba incorporada a la placa base, no al procesador, y su velocidad de acceso era bastante más lenta que una caché de nivel 2 o 1, ya que si bien sigue siendo una memoria de una gran rapidez (muy superior a la RAM, y mucho más en la época en la que se utilizaba), depende de la comunicación entre el procesador y la placa base. 

    Las memorias caché son extremadamente rápidas (su velocidad es unas 5 veces superior a la de una RAM de las más rápidas), con la ventaja añadida de no tener latencia, por lo que su acceso no tiene ninguna demora... pero es un tipo de memoria muy cara. 
    Esto, unido a su integración en el procesador (ya sea directamente en el núcleo o no) limita bastante el tamaño, por un lado por lo que encarece al procesador y por otro por el espacio disponible. 



    Ciclo de Reloj

    También denominado ciclos por segundo o frecuencia, este término hace referencia a la velocidad del procesador incorporado en la CPU del ordenador, y se mide en megaherzios (MHz). A mayor índice de frecuencia, más rápido es el procesador y, en consecuencia, el ordenador. Hace unos años era frecuente encontrar procesadores a 16 MHz, pero hoy en día lo normal es que éstos superen los 120 MHz.



    CPU


    Es la abreviación de las siglas en ingles de las palabras Unidad Central de Procesamiento (central processing unit). El CPU es el cerebro de la computadora. Algunas veces se le dice simplemente el procesador o procesador central. El CPU es donde se realizan la mayoría de los cálculos. En términos de poder de computación, el CPU es el elemento más importante de un sistema de computo.

    En computadoras personales y pequeños servidores, el CPU esta contenido en una pastilla llamada microprocesador.

    Dos componentes típicos del CPU son:

    La unidad lógica aritmética (ALU), la cual realiza las operaciones lógicas y matemáticas.
    La unidad de control, la cual extrae instrucciones de la memoria la decodifica y ejecuta, llamando al ALU cuando es necesario.
    Actualmente hay 2 productores principales de Procesadores, Intel y AMD.

    Intel tiene 2 familias de procesadores, El Celeron para los equipos menos poderosos y el Pentium 4 para los mas poderosos con el Pentium 5 en camino.

    AMD también tiene 2 familias de productos, El Duron para los equipos económicos y el Athlon para los mas poderosos.

    Los CPU´s de Intel y AMD requieren un motherboard diseñado especialmente para ellos. El procesador determina el tipo de motherboard que necesitas para tu sistema.

    En precio y reAndimiento los CPU´s de Intel y AMD están muy parejos.

    El rendimiento de un CPU generalmente se mide en ciclos de reloj por segundo. Entre mas alto los ciclos de reloj por segundo, es mas rápido el procesador, Aunque esto no siempre es verdad. Los procesadores AMD corren a menos ciclos de reloj por segundo que los CPU´s de Intel, pero siguen teniendo un rendimiento igual por el precio.

    Esto se debe a que los procesadores AMD son mas eficientes por ciclo de reloj, Los ciclos de reloj por segundo se expresan en Giga Hertz. Un procesador que corre a 1 Giga Hertz es considerado de baja velocidad y un procesador que corre a 3 o mas Giga Hertz se considera de alta velocidad.

    Los procesadores AMD usan un sistema de calificación basado en el rendimiento en vez de calificar solo la velocidad. Un procesador AMD calificado a 3200+ significa que tiene un rendimiento al mismo nivel que un CPU Pentium de 3200 MHZ o 3.2 GHZ.

    Los procesadores también se califican por la velocidad a la cual se conectan al motherboard. Esto se llama velocidad FSB (Front Side Bus). Los procesadores de Intel pueden tener una velocidad hasta 800 MHz FSB y el AMD hasta 400 MHz FSB. Por eso te debes de asegurar que el motherboard soporte la velocidad FSB del procesador.



    Tarjeta de Video



    La tarjeta de video, es el componente encargado de generar la señal de video que se manda a la pantalla de video por medio de un cable. La tarjeta de video se encuentra normalmente en integrado al motherboard de la computadora o en una placa de expansión. La tarjeta gráfica reúne toda la información que debe visualizarse en pantalla y actúa como interfaz entre el procesador y el monitor; la información es enviada a éste por la placa luego de haberla recibido a través del sistema de buses. Una tarjeta gráfica se compone, básicamente, de un controlador de video, de la memoria de pantalla o RAM video, y el generador de caracteres, y en la actualidad también poseen un acelerador de gráficos.
    El controlador de video va leyendo a intervalos la información almacenada en la RAM video y la transfiere al monitor en forma de señal de video; el número de veces por segundo que el contenido de la RAM video es leído y transmitido al monitor en forma de señal de video se conoce como frecuencia de refresco de la pantalla. Entonces, como ya dijimos antes, la frecuencia depende en gran medida de la calidad de la placa de video.

    BIOS
    Bios es un acrónimo de Basic input/output system (sistema básico de entrada / salida). El BIOS es el software que determina que puede hacer una computadora sin acceder programas de un disco. En las PCs, el BIOS contiene todo el código requerido para controlar el teclado, el monitor, las unidades de discos, las comunicaciones seriales, y otras tantas funciones.

    El BIOS típicamente se pone en una pastilla ROM que viene con la computadora (también se le llama ROM BIOS. Esto asegura que el BIOS siempre estará disponible y no se dañara por falla en el disco. También hace posible que la computadora inicie por sí sola. A causa de que la RAM es más rápida que el ROM, muchos fabricantes de computadoras diseñan sistemas en los cuales el BIOS es copiado de la ROM a la RAM cada vez que la computadora es iniciada. Esto se conoce como shadowing.

    Muchas computadoras modernas tienen Flash BIOS, que significa que el BIOS se grabo en una pastilla de memoria flash, que puede ser actualizado si es necesario.

    Unidades de Almacenamiento


    Refiriéndonos a varias técnicas y dispositivos para almacenar grandes cantidades de datos. Los primeros dispositivos de almacenamiento fueron las tarjetas perforadas, que fueron usadas desde el año 1804 en maquinas tejedoras de ceda. Los dispositivos modernos de almacenamiento incluyen todo tipos de unidades de disco y de unidades de cinta. Almacenamiento masivo es distinto al de memoria, que se refiere a almacenamiento temporal, en cambio los dispositivos de almacenamiento masivo retienen los datos aun cuando la computadora es apagada.

    Los tipos principales de dispositivos de almacenamiento masivo son:

    Discos flexibles (disquetes): Relativamente lentos y pequeña capacidad, pero muy portables, baratos y universales (casi obsoletos, las computadoras nuevas ya no los utilizán)

    Discos Duros:



    rápidos y mucho mayor capacidad, pero más caros, Algunos dispositivos de disco duro son portátiles pero la mayoría no.

    Discos Ópticos: (conocidos como CDs y DVD´s) al contrario de los discos flexibles y los discos duros, los cuales usan electromagnetismo para codificar los datos, los sistemas de discos ópticos usan un láser para leer y escribir datos. Los discos ópticos tienen buena capacidad, pero no son tan rápidos como los discos duros. Y por lo general son de solo lectura, aunque también hay reescribibles.

    Cintas: Relativamente baratas y pueden tener una gran capacidad, pero no permiten acceso aleatorio a los datos.

    Discos de memoria Flash USB:


    ( Jumpdrives, Pocket Drives, Pen Drives, thumb drives) dispositivos muy pequeños, ligeros y portátiles pueden almacenar hasta 2gb de datos estos dispositivos se han vuelto muy populares y están sustituyendo a los discos flexibles al tener mayor capacidad y velocidad, estos dispositivos pueden mantener la información hasta por 10 años.

    Fuente de Poder

    La fuente de poder es el componente que proporciona el poder eléctrico a la computadora. La mayoría de las computadoras pueden conectarse a un enchufe eléctrico estándar. La fuente de poder jala la cantidad requerida de electricidad y la convierte la corriente AC a corriente DC. También regula el voltaje para eliminar picos y crestas comunes en la mayoría de los sistemas eléctricos. Pero no todas las fuentes de poder, realizan el regulado de voltaje adecuadamente, así que una computadora siempre esta susceptible a fluctuaciones de voltaje. Las fuentes de poder se califican en términos de los watts que generan. Entre más poderosa sea la computadora, mayor cantidad de watts necesitan sus componentes. A continuación esta un video mostrando los componentes Internos Básicos de una computadora

    Fuente: www.arreglamipc.com

    Buses





    En arquitectura de computadores, un bus puede conectar lógicamente varios periféricos sobre el mismo conjunto de cables. Aplicada a la informática, se relaciona con la idea de las transferencias internas de datos que se dan en un sistema computacional en funcionamiento. En el bus todos los nodos reciben los datos aunque no se dirijan a todos éstos, los nodos a los que no van dirigidos los datos simplemente los ignoran. Por tanto, un bus es un conjunto de conductores eléctricos en forma de pistas metálicas impresas sobre la tarjeta madre del computador, por donde circulan las señales que corresponden a los datos binarios del lenguaje máquina con que opera el Microprocesador.

    Los primeros buses de computadoras eran literalmente buses eléctricos paralelos con múltiples conexiones. Hoy en día el término es usado para cualquier arreglo físico que provea la misma funcionalidad lógica que un bus eléctrico paralelo. Los buses modernos pueden usar tanto conexiones paralelas como en serie, y pueden ser cableados en topología multidrop o en daisy chain, o conectados por hubs switcheados, como el caso del USB.

    Fuente: www.wikipedia.com.



    Memorias Primarias


    La memoria primaria es el núcleo del sub-sistema de memoria de un ordenador.

    Consiste en un bloque de circuitos integrados capaces de retener ("memorizar") los valores binarios introducidos, y de mantener esos datos en tanto el bloque reciba alimentación eléctrica.

    La memoria primaria se comunica con el microprocesador de la CPU mediante el bus de direcciones. El ancho de este bus determina la capacidad que posea el microprocesador para el direccionamiento de localidades en memoria.

    Al bloque de memoria primaria, llamada sencillamente memoria RAM, por ser éste el tipo de circuitos integrados de memoria que conforman el bloque, se le asocian también, el circuito integrado CMOS, que almacena al programa BIOS del sistema, y los dispositivos periféricos de la memoria secundaria (discos y otros periféricos), para conformar el sub-sistema de memoria del ordenador.

    Memorias Secundarias

    La memoria secundaria es un conjunto de dispositivos periféricos para el almacenamiento masivo de datos de un ordenador, con mayor capacidad que la memoria principal, pero más lenta que ésta.

    El disquete, el disco duro o disco fijo, las unidades ópticas, las unidades de memoria flash y los discos Zip, pertenecen a esta categoría.

    Estos dispositivos periféricos quedan vinculados a la memoria principal, o memoria interna, conformando el sub-sistema de memoria del ordenador.

    Soportes de memoria secundaria:


    CD, CD-R, CD-RW


    DVD, DVD-/+R, DVD-/+RW


    Disquete


    Disco duro


    Cinta magnética


    Memoria flash