jueves, 14 de octubre de 2010

UNIDAD 3

ELEMENTOS Y RELACIONES DEL PROBLEMA

Hardware

Los componentes y dispositivos del Hardware se dividen en Hardware Básico y Hardware Complementario

  • El Hardware Básico: son las piezas fundamentales e imprescindibles para que la computadora funcione como son: Placa base, monitor, teclado y ratón.

  • El Hardware Complementario: son todos aquellos dispositivos adicionales no esenciales como pueden ser: impresora, escáner, cámara de vídeo digital, webcam, etc.

Placa Base o Placa Madre

Los componentes Hardware más importantes de la computadora y esenciales para su funcionamiento se encuentran en la Placa Base (también conocida como Placa Madre), que es una placa de circuito impreso que aloja a la Unidad Central de Procesamiento (CPU) o microprocesador, Chipset (circuito integrado auxiliar), Memoria RAM, BIOS o Flash-ROM, etc., además de comunicarlos entre sí.

Grupos de Hardware

Según sus funciones, los componentes y dispositivos del hardware se dividen en varios grupos y en el siguiente orden:

Dispositivos de Entrada

Los Dispositivos de Entrada son aquellos a través de los cuales se envían datos externos a la unidad central de procesamiento, como el teclado, ratón, escáner, o micrófono, entre otros.

Chipset (Circuito Integrado Auxiliar)

El Chipset o Circuito Integrado Auxiliar es la médula espinal de la computadora, integrado en la placa base, hace posible que esta funcione como eje del sistema permitiendo el tráfico de información entre el microprocesador (CPU) y el resto de componentes de la placa base, interconectándolos a través de diversos buses que son: el Northbridge (Puente Norte) y el Southbridge (Puente Sur).
El Northbridge o Puente Norte es un circuito integrado que hace de puente de enlace entre el microprocesador y la memoria además de las tarjetas gráficas o de vídeo AGP o PCI-Express, así como las comunicaciones con el Puente Sur.
El Southbridge o Puente Sur (también conocido como Concentrador de Controladores de Entrada/Salida), es un circuito integrado que coordina dentro de la placa base los dispositivos de entrada y salida además de algunas otras funcionalidades de baja velocidad. El Puente Sur se comunica con la CPU a través del Puente Norte.

Unidad Central de Procesamiento (CPU)

La CPU (Central Processing Unit o Unidad Central de Procesamiento) puede estar compuesta por uno o varios microprocesadores de circuitos integrados que se encargan de interpretar y ejecutar instrucciones, y de administrar, coordinar y procesar datos, es en definitiva el cerebro del sistema de la computadora. además, la velocidad de la computadora depende de la velocidad de la CPU o microprocesador que se mide en Mhz (unidad de medida de la velocidad de procesamiento). Se divide en varios registros:

Unidad de Control

La Unidad de Control es la encargada de controlar que las instrucciones se ejecuten, buscándolas en la memoria principal, decodificándolas (interpretándolas) y que después serán ejecutadas en la unidad de proceso.

Unidad Aritmético-Lógica

La Unidad Aritmético-Lógica es la unidad de proceso donde se lleva a cabo la ejecución de las instrucciones con operaciones aritméticas y lógicas.

Unidad de Almacenamiento

La Unidad de Almacenamiento o Memoria guarda todos los datos que son procesados en la computadora y se divide en Memoria Principal y Memoria Secundaria o Auxiliar.

Memoria Principal o Primaria (RAM – ROM)

En la Memoria Principal o Primaria de la computadora se encuentran las memorias RAM, ROM y CACHÉ.
La Memoria RAM (Random Access Memory o Memoria de Acceso Aleatorio) es un circuito integrado o chip que almacena los programas, datos y resultados ejecutados por la computadora y de forma temporal, pues su contenido se pierde cuando esta se apaga. Se llama de acceso aleatorio - o de acceso directo - porque se puede acceder a cualquier posición de memoria sin necesidad de seguir un orden. La Memoria RAM puede ser leída y escrita por lo que su contenido puede ser modificado.
La Memoria ROM (Read Only Memory o Memoria de sólo lectura) viene grabada en chips con una serie de programas por el fabricante de hardware y es sólo de lectura, por lo que no puede ser modificada - al menos no muy rápida o fácilmente - y tampoco se altera por cortes de corriente. En esta memoria se almacenan los valores correspondientes a las rutinas de arranque o inicio del sistema y a su configuración.
La Memoria Caché o RAM Caché es una memoria auxiliar de alta velocidad, que no es más que una copia de acceso rápido de la memoria principal almacenada en los módulos de RAM.

Memoria Secundaria (Disco Duro, Disco Flexibles, etc.)

La Memoria Secundaria (también llamada Periférico de Almacenamiento) está compuesta por todos aquellos dispositivos capaces de almacenar datos en dispositivos que pueden ser internos como el disco duro, o extraíble como los discos flexibles (disquetes), CDs, DVDs, etc.

Dispositivos de Salida

Los Dispositivos de Salida son aquellos que reciben los datos procesados por la computadora y permiten exteriorizarlos a través de periféricos como el monitor, impresora, escáner, plotter, altavoces,etc.
Dispositivos de Entrada/Salida (Periféricos mixtos): Hay dispositivos que son tanto de entrada como de salida como los mencionados periféricos de almacenamiento, CDs, DVDs, así como módems, faxes, USBs, o tarjetas de red.






 Sistema Operativo

El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc.
En sistemas grandes, el sistema operativo tiene incluso mayor responsabilidad y poder, es como un policía de tráfico, se asegura de que los programas y usuarios que están funcionando al mismo tiempo no interfieran entre ellos. El sistema operativo también es responsable de la seguridad, asegurándose de que los usuarios no autorizados no tengan acceso al sistema.

Clasificación de los Sistemas Operativos

Los sistemas operativos pueden ser clasificados de la siguiente forma:

  • Multiusuario: Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos permiten a centenares o millares de usuarios al mismo tiempo.

  • Multiprocesador: soporta el abrir un mismo programa en más de una CPU.

  • Multitarea: Permite que varios programas se ejecuten al mismo tiempo.

  • Multitramo: Permite que diversas partes de un solo programa funcionen al mismo tiempo.

  • Tiempo Real: Responde a las entradas inmediatamente. Los sistemas operativos como DOS y UNIX, no funcionan en tiempo real.

Cómo funciona un Sistema Operativo

Los sistemas operativos proporcionan una plataforma de software encima de la cual otros programas, llamados aplicaciones, puedan funcionar. Las aplicaciones se programan para que funcionen encima de un sistema operativo particular, por tanto, la elección del sistema operativo determina en gran medida las aplicaciones que puedes utilizar.
Los sistemas operativos más utilizados en los PC son DOS, OS/2, y Windows, pero hay otros que también se utilizan, como por ejemplo Linux.

Cómo se utiliza un Sistema Operativo

Un usuario normalmente interactúa con el sistema operativo a través de un sistema de comandos, por ejemplo, el sistema operativo DOS contiene comandos como copiar y pegar para copiar y pegar archivos respectivamente. Los comandos son aceptados y ejecutados por una parte del sistema operativo llamada procesador de comandos o intérprete de la línea de comandos. Las interfaces gráficas permiten que utilices los comandos señalando y pinchando en objetos que aparecen en la pantalla.
 

Ejemplos de Sistema Operativo

A continuación detallamos algunos ejemplos de sistemas operativos:

Familia Windows


  • Windows 95

  • Windows 98

  • Windows ME

  • Windows NT

  • Windows 2000

  • Windows 2000 server

  • Windows XP

  • Windows Server 2003

  • Windows CE

  • Windows Mobile

  • Windows XP 64 bits

  • Windows Vista (Longhorn)

Familia Macintosh


  • Mac OS 7

  • Mac OS 8

  • Mac OS 9

  • Mac OS X

Familia UNIX


  • AIX

  • AMIX

  • GNU/Linux

  • GNU / Hurd

  • HP-UX

  • Irix

  • Minix

  • System V

  • Solaris

  • UnixWare







Programas de aplicación

Es un tipo de software diseñado para facilitar al usuario la concreción de un cierto trabajo. Esta característica lo diferencia de otros tipos de programas  




LENGUAJES DE PROGRAMACIÓN


Los lenguajes de programación de una computadora en particular se conoce como código de máquinas o lenguaje de máquinas.
Estos lenguajes codificados en una computadora específica no podrán ser ejecutados en otra computadora diferente.

Para que estos programas funcionen para diferentes computadoras hay que realizar una versión para cada una de ellas, lo que implica el aumento del costo de desarrollo.

Por otra parte, los lenguajes de programación en código de máquina son verdaderamente difíciles de entender para una persona, ya que están compuestos de códigos numéricos sin sentido nemotécnico.

Los lenguajes de programación facilitan la tarea de programación, ya que disponen de formas adecuadas que permiten ser leidas y escritas por personas, a su vez resultan independientes del modelo de computador a utilizar.

Los lenguajes de programación representan en forma simbólica y en manera de un texto los códigos que podrán ser leidos por una persona.

Los lenguajes de programación son independientes de las computadoras a utilizar.
Existen estrategias que permiten ejecutar en una computadora un programa realizado en un lenguaje de programación simbólico. Los procesadores del lenguaje son los programas que permiten el tratamiento de la información en forma de texto, representada en los lenguajes de programación simbólicos.

Hay lenguajes de programación que utilizan compilador.


La ejecución de un programa con compilador requiere de dos etapas:

1) Traducir el programa simbólico a código máquina
2) Ejecución y procesamiento de los datos.

Otros lenguajes de programación utilizan un programa intérprete o traductor, el cual analiza directamente la descripción simbólica del programa fuente y realiza las instrucciones dadas.

El intérprete en los lenguajes de programación simula una máquina virtual, donde el lenguaje de máquina es similar al lenguaje fuente.

La ventaja del proceso interprete es que no necesita de dos fases para ejecutar el programa, sin embargo su inconveniente es que la velocidad de ejecución es más lenta ya que debe analizar e interpretar las instrucciones contenidas en el programa fuente.



BIBLIOGRAFÍA



GENERACIONES DE LOS LENGUJES DE PROGRAMACIÒN

LENGUAJES DE PRIMERA GENERACIÓN

  • Lo constituyen los lenguajes maquina.
Estos se consideran como de bajo nivel por que no existe un programa de codificación menos complicado que el que utiliza los símbolos binarios 1 y 0.

  • Ascii, utiliza ceros y unos para representar letras del alfabeto.
Como este es el lenguaje del CPU, los archivos de texto traducidos a los grupos binarios ASCII pueden leerse por casi cualquier plataforma de sistemas de computadoras.


LENGUAJES DE SEGUNDA GENERACIÓN

  • A estos se les denomió lenguaje ensamblador.

  • Los lenguajes ensambladores usan códigos como a para agregar o mvc para mover.

  • Los programas de software de sistemas tales como los sistemas operativos y los programas de utilidad se escriben con frecuencia en un lenguaje ensamblador.
LENGUAJES DE TERCERA GENERACIÓN

  • Estos son mas fáciles de aprender y usar que los lenguajes maquina y el lenguaje ensamblador, pues su similitud con la comunicación y comprensión humana cotidiana es mayor.

  • Enunciados, Print, Total sales, Read normal Pay etc.

  • Aunque son mas fáciles de programar, no son tan eficientes en términos de rapidez operacional y memoria.

  • Son relativamente independientes del hardware de la computadora. Esto significa que el mismo programa puede utilizarse en varias computadoras diferentes de distintos fabricantes
LENGUAJES DE CUARTA GENERACIÓN

  • Son lenguajes que se relacionan menos con procedimientosy que son aun mas parecidos al ingles que los lenguajes de tercera generación.

  • Algunas características incluyen capacidades de consulta y base de datos, de creación de códigos y capacidades gráficas.

  • Lenguajes de consulta son utilizados para hacer preguntas a la computadora con frases parecidas alas de un idioma.

  • Lenguaje de consulta estructurado. Lenguaje estándar que a menudo se usa para realizar consultas y manipulaciones ala base de datos.
LENGUAJES DE PROGRAMACIÓN ORIENTADOS A OBJETOS

  • Permiten la interacción de objetos de programación incluyendo elementos de datos y las acciones que se realizan en ellos.

  • Un objeto denotar datos respecto a un empleado y todas las operaciones que se pudieran realizar sobre los datos (cálculo de nóminas).

  • En la programación orientada al objeto, los datos, instrucciones y otros procedimientos de programación se agrupan en un elemento denominado objeto.

  • Encapsulación. Receso de reagrupar elementos dentro de un objeto.

  • Polimorfismo. Receso que le permite al programador desarrollar una rutina o grupo de actividades que operaran sobre objetos múltiples.

  • Herencia. Propiedad utilizada para describir objetos en un grupo de este tomando características de otros en el mismo grupo o clase de objetos.

  • Código reutilizable. Códigode instrucciones dentro de un objeto que se puede usar repetidamente en diferentes programas de diversas aplicaciones.
SMALLTALK

  • Lenguaje de programación amplio uso, orientado a objetos.
C++

  • Es una versión mejorada del lenguaje de programación c original.

  • Es un lenguaje de tiempo real, de propósito general, que se ha utilizado para aplicaciones empresariales y científicos.
JAVA

  • Proporciona a los programadores un ambiente de programación con gran capacidad y las condiciones para desarrollar aplicaciones de trabajo a través de Internet.

  • Para desarrollar pequeñas, Apletts, las cuales pueden insertarse en las páginas WebInternet.

  • Incluye un depurador, un generador de documentación, un compilador, y un visualizador, para ejecutar aplicaciones Java sin navegador de Internet.
LENGUAJES DE PROGRAMACIÓN VISUAL

  • Lenguajes que usan el ratón, iconos o símbolos en la pantalla y menús despegables para desarrollar programas.
LENGUAJES DE QUINTA GENERACIÓN

  • Alrededor de la mitad 1998 surgieron gripos de herramientas de lenguajes de quinta generación, los cuales combinan la creación de códigos basadas en reglas, la administración de reutilización y otros avances.

  • Programación basada en conocimiento. Método para el desarrollo de programas de computación en el que se le ordena ala computadora realizar un propósito en vez de instruirla para hacerlo.

BIBLIOGRAFÍA:



ESTRUCTURAS BÁSICAS DEL DIAGRAMA DE FLUJO

LAS ESTRUCTURAS BÁSICAS PUEDEN SER:

Secuenciales: cuando una instrucción del programa sigue a otra.
Selección o decisión: acciones en las que la ejecución de alguna dependerá de que se cumplan una o varias condiciones.
Repetición, Iteración: cuando un proceso se repite en tanto cierta condición sea establecida para finalizar ese proceso.


 ESTRUCTURA SECUENCIAL

Se caracteriza porque una acción se ejecuta detrás de otra. El flujo del programa coincide con el orden físico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicialización de variables, operaciones de asignación, cálculo,  sumarización, etc. Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa:
Definición de variables (Declaración)
Inicialización de variables.
Lectura de datos
Cálculo
Salida


Ejemplo 1.
Se desea encontrar la longitud y el área de un círculo de radio 5.

Solución.
El objetivo del ejercicio es encontrar la longitud y el área de un círculo con un radio conocido y de valor 5. Las salidas serán entonces la longitud y el área. Sabemos que la longitud de un círculo viene dada por la fórmula 2 * pi * radio y que el área viene dada por pi * radio al cuadrado. (Fase 4 del algoritmo) Si definimos las variables como: (fase 1 del algoritmo).
L = Longitud A = área R = radio pi = 3.1416 hagamos el algoritmo:
Inicio
Pi ¬ 3.1416 (definición de un valor constante)
R ¬ 5 (radio constante ya que es conocido su valor)
A ¬ pi * R ^ ² (asignación del valor del área)
L ¬ 2 * pi * R (asignación del valor de la longitud)
Escribir (A, L) (salida del algoritmo)
Fin



ESTRUCTURA SELECTIVAS

Las condiciones se especifican usando expresiones lógicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if - then - else o en español si - entonces - sino) y en flujograma con una figura geométrica en forma de rombo.
Las estructuras selectivas o alternativas se clasifican en:

a) Simples
b) Dobles
c) Compuestas
d) Múltiples

ESTRUCTURAS SELECTIVAS SIMPLES.
Se identifican porque están compuestos únicamente de una condición. La estructura si - entonces evalúa la condición y en tal caso:
Si la condición es verdadera, entonces ejecuta la acción Si (o acciones si son varias).
Si la condición es falsa, entonces no se hace nada.
Español                      Inglés
Si <condición>            If <condición>
Entonces                    then
<acción Si>                <acción Si>
fin_si                          endif

Ejemplo 1.

Construir un algoritmo tal, que dado como dato la calificación de un alumno en un examen, escriba "Aprobado" en caso que esa calificación fuese mayor que 8.
Salidas: mensaje de aprobado si se cumple la condición.
Entradas: calificación
Datos adicionales: un alumno aprueba si la calificación es mayor que 8
Variables:
Cal = calificación
Algoritmo:
Inicio
Leer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Fin_si
Fin

Son estructuras lógicas que permiten controlar la ejecución de varias acciones y se utilizan cuando se tienen dos opciones de acción, por la naturaleza de estas se debe ejecutar una o la otra, pero no ambas a la vez, es decir, son mutuamente excluyentes.
Representación pseudocodificada.
Español                                    Inglés
Si <condición> entonces             If <condición> then
<acción S1>                             <acción S1>
sino                                          else
<acción S2>                             <acción S2>
Fin_Si                                      End_if

Entonces, si una condición C es verdadera, se ejecuta la acción S1 y si es falsa, se ejecuta la acción S2.
Ejemplo 1
Dado como dato la calificación de un alumno en un examen, escriba "aprobado" si su calificación es mayor que 8 y "Reprobado" en caso contrario.
Algoritmo:
Inicio
Leer (cal)
Si cal > 8 entonces
Escribir ("aprobado")
Sino
Escribir ("reprobado")
Fin_si
Fin

En la solución de problemas encontramos numerosos casos en los que luego de tomar una decisión y marcar el camino correspondiente a seguir, es necesario tomar otra decisión. Dicho proceso puede repetirse numerosas veces. En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un bloque está anidado dentro del otro.
Ejemplo 1.
Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que éstas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al triple.
Solución.
Lo primero que hay que determinar es si el trabajador trabajó horas extras o no. Encontrar las horas extras de la siguiente forma:
Horas extras = horas trabajadas - 40
En caso que sí trabajó horas extras:
Si horas extras > 8 entonces a horas extras excedentes de 8 = horas extras -8 y pago por horas extras = pago por hora normal * 2 * 8 + pago por hora normal * 3 * horas extras excedentes de 8
De otra forma (solo horas al doble) pago por horas extras = pago por hora normal * 2 * horas extras.
Finalmente, pago total que recibirá el trabajador será:
Pago = pago * hora normal * 40 + pago por horas extras.
Si no trabajó horas extras tendremos:
Pago = pago por hora normal * horas trabajadas.
Datos de salida: Pago.
Datos de entrada: número de horas trabajadas y pago por hora normal.
Definición de variables:
ht = horas trabajadas                     het = horas extras que exceden de 8
ph = pago por hora normal             phe = pago por horas extras
he = horas extras               pt = pago que recibe el trabajador
Algoritmo:
Inicio
Leer (ht, ph)
Si ht >40 entonces
He ¬ ht - 40
Si he > 8 entonces
Het ¬he - 8
Phe ¬ph * 2 * 8 + ph * 3 * het
Sino
Phe ¬ ph * 2 * he
Fin_si
Pt ¬ph * 40 + phe
Sino
Pt ¬ ph * ht
Fin_si
Escribir (pt)
Fin

Con frecuencia es necesario que existan más de dos elecciones posibles. Este problema se podría resolver por estructuras selectivas simples o dobles, anidadas o en cascada, pero si el número de alternativas es grande puede plantear serios problemas de escritura y de legibilidad.
Usando la estructura de decisión múltiple se evaluará una expresión que podrá tomar n valores distintos, 1, 2 , 3, ....,n y según que elija uno de estos valores en la condición, se realizará una de las n acciones o lo que es igual, el flujo del algoritmo seguirá sólo un determinado camino entre los n posibles.
Esta estructura se representa por un selector el cual si toma el valor 1 ejecutará la acción 1, si toma el valor 2 ejecutará la acción 2, si toma el valor N realizará la acción N.

ESTRUCTURAS REPETITIVAS E ITERATIVAS.

Son operaciones que se deben ejecutar un número repetido de veces. El conjunto de instrucciones que se ejecuta repetidamente cierto número de veces, se llama Ciclo, Bucle o Lazo.
Iteración es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle.
Fases de un Programa Cíclico :
1. Entrada de datos e instrucciones previas
2. Lazo o bucle
3. Instrucciones finales o resto del proceso
4. Salida de resultado

BIBLIOGRAFIA:

PSEUDOCÒDIGO, DIAGRAMA DE FLUJO Y ALGORITMO

PROBLEMA:
Diseñar un algoritmo que lea 4 variables y calcule e imprima el producto, la suma y la media.

Algoritmo:

Inicio
      Paso 1: dar valor a las variables; Num1, Num2,Num3 y Num4.
      Paso 2: multiplicar Num1, Num2,Num3 y Num4. Asignar a Result 1.
      Paso 3: sumar Num1, Num2,Num3 y Num4.asignar a Result 2.
      Paso 4: Result 2 / 4
Fin

Pseudocódigo:

INICIO
     LEER. Num1, Num2,Num3 y Num4.
     ASIGNAR. Result 1= Num1*Num2*Num3*Num4.
     ASIGNAR. Result 2= Num1+Num2+Num3 +Num4.
     ASIGNAR. Result 3= Result 2/ 4  
     ESCRIBIR. Result 1, Result 2 y Result 3
FIN

Diagrama de flujo