domingo, 20 de abril de 2014

PROGRAMACIÓN!

¿QUÉ ES UNA COMPUTADORA?   

   Una computadora, también llamada PC, es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y la información se pueden introducir en la computadora por la entrada (input) y a continuación se procesan para producir una salida (output, resultados), como se observa en la Figura 1.1.


    La computadora se puede considerar como una unidad en la que se ponen ciertos datos, entrada de datos, procesa estos datos y produce unos datos de salida. Los datos de entrada y los datos de salida pueden ser realmente cualquier cosa, texto, dibujos o sonido. El sistema más sencillo de comunicarse una persona con la computadora es esencialmente mediante un ratón (mouse), un teclado y una pantalla (monitor).

Hoy día existen otros dispositivos muy populares tales como escáneres, micrófonos, altavoces, cámaras


de vídeo, cámaras digitales, etc.; de igual manera, mediante módems, es posible conectar su
computadora con otras computadoras a través de redes, siendo la más importante, la red Internet.

   Los componentes físicos que constituyen la computadora, junto con los dispositivos que realizan las tareas de entrada y salida, se conocen con el término hardware. El conjunto de instrucciones que hacen funcionar a la computadora se denomina programa, que se encuentra almacenado en su memoria; a la persona que escribe programas se llama programador y al conjunto de programas escritos para una computadora se llama software.






¿Qué es el hardware?



Así como la computadora se subdivide en dos partes, el hardware que la compone también, de este modo podemos encontrar el llamado hardware básico y hardware complementario.


El hardware básico agrupa a todos los componentes imprescindibles para el funcionamiento de la PC como motherboard, monitor, teclado y mouse, siendo la motherboard, la memoria RAM y la CPU los componentes más importantes del conjunto.
Por otro lado tenemos el hardware complementario, que es todo aquel componente no esencial para el funcionamiento de una PC como impresoras, cámaras, pendrives y demás.
También podremos encontrar una diferenciación adicional entre los componentes de la PC, y se encuentra dada por la función que estos cumplen dentro de la misma. En los siguientes párrafos podremos conocer la forma en que se dividen.
Dispositivos de Entrada: Dispositivos que permiten el ingreso de información a la PC.





CPU: Este dispositivo tiene la tarea de interpretar y ejecutar las instrucciones recibidas del sistema operativo, además de administrar las peticiones realizadas por los usuarios a través de los programas.

Memoria RAM: La Memoria RAM  o Memoria de Acceso Aleatorio es donde la computadora almacena los programas, datos y resultados procesados por la CPU, lo que permite su rápida recuperación por parte del sistema, brindado así una mejor performance.


Unidades de almacenamiento: Son todos aquellos dispositivos destinados al almacenamiento de los datos del sistema o de usuario, es decir, el lugar físico en donde se ubica el sistema operativo, los programas y los documentos del usuario. Estos pueden ser discos rígidos, unidades de CD, DVD o BluRay, pendrives o discos externos extraíbles.

Unidades de almacenamiento: Son todos aquellos dispositivos destinados al almacenamiento de los datos del sistema o de usuario, es decir, el lugar físico en donde se ubica el sistema operativo, los programas y los documentos del usuario. Estos pueden ser discos rígidos, unidades de CD, DVD o Blu Ray, pendrives o discos externos extraíbles.

Dispositivos mixtos: Estos son componentes que entregan y reciben información, y en este grupo podemos mencionar placas de red, módems y puertos de comunicaciones, entre otros.




¿Qué es el software?

El software de una computadora es todo aquel que le permite al usuario ordenarle a la misma que realice una tarea. También se deben subdividir en diversas categorías en base a las funciones que realizan en el sistema.


Conceptos de Software
Software es una secuencia de instrucciones que son interpretadas y/o ejecutadas para la gestión, redireccionamiento o modificación de un dato/información o suceso. 



Software también es un producto, el cual es desarrollado por la ingeniería de software, e incluye no sólo el programa para la computadora, sino que también manuales y documentación técnica. 




Un software de computadora está compuesto por una secuencia de instrucciones, que es interpretada y ejecutada por un procesador o por una máquina virtual. En un software funcional, esa secuencia sigue estándares específicos que resultan en un determinado comportamiento. 




En nuestra computadora, todos los programas que usamos son software: El Windows, el Outlook, el Firefox, el Internet Explorer, los antivirus e inclusive los virus son software.



Un software puede ser ejecutado por cualquier dispositivo capaz de interpretar y ejecutar las instrucciones para lo cual es creado. 





Cuando un software está representado como instrucciones que pueden ser ejecutadas directamente por un procesador decimos que está escrito en lenguaje de máquina. La ejecución de un software también puede ser realizada mediante un programa intérprete, responsable por entender y ejecutar cada una de sus instrucciones. Una categoría especial y notable de intérpretes son las máquinas virtuales, como la Máquina virtual Java (JVM). 




El dispositivo más conocido que dispone de un procesador es la computadora.Existen otras máquinas programables, como los teléfonos celulares, máquinas de automatización industrial, etc.

Clasificación del software
Software de Sistema: Este grupo comprende el sistema operativo, controladores de dispositivos, utilitarios de sistema y toda aquella herramienta que sirva para el control específico de las características de la computadora.
Software de Aplicación: Se le llama software de aplicación a todos aquellos programas utilizados por los usuarios para la concreción de una tarea, y en este grupo podemos encontrar software del tipo ofimático, de diseño gráfico, de contabilidad y de electrónica, por solo citar una pequeña fracción de todas las categorías de aplicaciones que podemos encontrar en el mercado.

Arquitectura del Computador


La arquitectura de computadoras es el diseño conceptual y la estructura operacional fundamental de un sistema de computadora. Es decir, es un modelo y una descripción funcional de los requerimientos y las implementaciones de diseño para varias partes de una computadora, con especial interés en la forma en que la unidad central de proceso (UCP) trabaja internamente y accede a las direcciones de memoria.
También suele definirse como la forma de seleccionar e interconectar componentes de hardware para crear computadoras según los requerimientos de funcionalidad, rendimiento y costo.
El ordenador recibe y envía la información a través de los periféricos por medio de los canales. La UCP es la encargada de procesar la información que le llega al ordenador. El intercambio de información se tiene que hacer con los periféricos y la UCP. Todas aquellas unidades de un sistema exceptuando la UCP se denomina periférico, por lo que el ordenador tiene dos partes bien diferenciadas, que son: la UCP (encargada de ejecutar programas y que está compuesta por la memoria principal, la Unidad aritmético lógica (UAL) y la Unidad de Control) y los periféricos (que pueden ser de entrada, salida, entrada-salida y comunicaciones).

(Una visión típica de una arquitectura de computadora como una serie de capas de abstracción:hardwarefirmwareensamblador,kernelsistema operativo y aplicaciones.)



Componentes básicos internos

Algunos de los componentes que se encuentran dentro del gabinete o carcaza de la computadora
-Placa Madre: toda computadora cuenta con una placa madre, pieza fundamental de una computadora, encargada de intercomunicar todas las demás placas, periféricos y otros componentes entre sí.
-Microprocesador: ubicado en el corazón de la placa madre, es el "cerebro" de la computadora. Lógicamente es llamado CPU.
-Memoria: la memoria RAM, donde se guarda la información que está siendo usada en el momento. También cuenta con memoria ROM, donde se almacena la BIOS y la configuración más básica de la computadora.
-Fuente eléctrica: para proveer de energía a la computadora.
-Puertos de comunicación: USB, puerto serial, puerto paralelo, para la conexión con periféricos externos


Componentes de almacenamiento


Son los componentes típicos empleados para el almacenamiento en una computadora. También podría incluirse la memoria RAM en esta categoría.

-Discos duros: son los dispositivos de almacenamiento masivos más comunes en las computadoras. Almacenan el sistema operativo y los archivos del usuario.


-Discos ópticos: las unidades para la lectura de CDs, DVDs, Blu-Rays y HD-DVDs.

-Disquetes: las unidades para lectura de disquetes, casi sin uso en la actualidad.

Componentes o periféricos externos de salida

Son componentes que se conectan a diferentes puertos de la computadora, pero que permanecen externos a ella. Son de "salida" porque el flujo principal de datos va desde la computadora hacia el periférico.

-Monitor: se conecta a la placa de video (muchas veces incorporada a la placa madre) y se encarga de mostrar las tareas que se llevan a cabo en la computadora. Actualmente vienen en CRT o LCD.


-Impresora: imprime documentos informáticos en papel u otros medios.

Componentes o periféricos externos de entrada
Son componentes que se conectan a diferentes puertos de la computadora, pero que permanecen externos a ella. Son de "entrada" porque el flujo principal de datos va desde el periférico hacia la computadora.
-Mouse o ratón: dispositivo empleado para mover un cursor en los interfaces gráficos de usuario.
Cumplen funciones similares: el Touchpad, el Trackball, y el Lápiz óptico.
-Teclado: componentes fundamental para la entrada de datos en una computadora.
-Webcam: entrada de video, especial para videoconferencias.
-Escáner: permiten digitalizar documentos u objetos.

LENGUAJES DE PROGRAMACIÓN
   Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos, respectivamente. Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML.





Lenguajes compilados


    Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una corrida de compilación antes de procesar los datos de un problema.
Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).
Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el código.



Lenguajes interpretados


    Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la corrida de compilación para utilizarlo en una corrida de producción futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el código objeto para utilizarlo posteriormente.
    La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instrucción del ciclo tendrá que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). El intérprete elimina la necesidad de realizar una corrida de compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de producción.


ALGUNOS LENGUAJES DE PROGRAMACIÓN:




CONCEPTO DE ALGORITMO


    Un algoritmo es un método para resolver un problema. Aunque la popularización del término ha llegado con el advenimiento de la era informática, algoritmo proviene de Mohammed al-Khowârizmi, matemático persa que vivió durante el siglo IX y alcanzó gran reputación por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir números decimales; la traducción al latín del apellido en la palabra algorismus derivó posteriormente en algoritmo. Euclides, el gran matemático griego (del siglo IV antes de Cristo) que inventó un método para encontrar el máximo común divisor de dos números, se considera con Al-Khowârizmi el otro gran padre de la algoritmia (ciencia que trata de los algoritmos).
    El profesor Niklaus Wirth —inventor de Pascal, Modula-2 y Oberon— tituló uno de sus más famosos libros, Algoritmos + Estructuras de datos = Programas, significándonos que sólo se puede llegar a realizar un buen programa con el diseño de un algoritmo y una correcta estructura de datos. Esta ecuación será una de las hipótesis fundamentales consideradas en esta obra.
La resolución de un problema exige el diseño de un algoritmo que resuelva el problema propuesto.





Los pasos para la resolución de un problema son:

1. Diseño del algoritmo, que describe la secuencia ordenada de pasos —sin ambigüedades— que conducen a la solución de un problema dado. (Análisis del problema y desarrollo del algoritmo.)
2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase de codificación.)
3. Ejecución y validación del programa por la computadora.

   Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa.
   Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo. Así, por ejemplo, en una analogía con la vida diaria, una receta de un plato de cocina se puede expresar en español, inglés o francés, pero cualquiera que sea el lenguaje, los pasos para la elaboración del plato se realizarán sin importar el idioma del cocinero.
   En la ciencia de la computación y en la programación, los algoritmos son más importantes que los lenguajes de programación o las computadoras. Un lenguaje de programación es tan sólo un medio para expresar un algoritmo y una computadora es sólo un procesador para ejecutarlo. Tanto el lenguaje de programación como la computadora son los medios para obtener un fin: conseguir que el algoritmo sen ejecute y se efectúe el proceso correspondiente.


Características de los algoritmos

Las características fundamentales que debe cumplir todo algoritmo son:
• Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
• Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
• Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un número finito de pasos.

La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de cocina citado anteriormente se tendrá:

Entrada: ingredientes y utensilios empleados.
Proceso: elaboración de la receta en la cocina.
Salida: terminación del plato (por ejemplo, cordero).



Representación de algoritmos: gráfica y pseudocódigo.


    Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del lenguaje de programación elegido. Ello permitirá que un algoritmo pueda ser codificado indistintamente en  cualquier lenguaje . Para   conseguir este objetivo sen precisa que el  algoritmo  sea representado  gráfica  o numéricamente  ,  de modo que  las sucesivas acciones  no  dependan  de  la sintaxis  de ningún  lenguaje  de  programación, sino que  la descripción pueda  servir  fácilmente para  su  transformación en  un programa, es  decir, su codificación.

Gráfica

un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de como deben realizarse los paso en la computadora para producir resultados. Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante lineas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización.

Partes de un Diagrama de Flujo



Inicio/Final
Se utiliza para indicar el inicio y el final de un diagrama; del Inicio sólo puede salir una línea de flujo y al Final sólo debe llegar una línea.



Entrada General
Entrada/Salida de datos en General (en esta guía, solo la usaremos para la Entrada).


Entrada por teclado
Instrucción de entrada de datos por teclado. Indica que el computador debe esperar a que el usuario teclee un dato que se guardará en una variable o constante.


Llamada a subrutina
Indica la llamada a una subrutina o procedimiento determinado.


Acción/Proceso General
Indica una acción o instrucción general que debe realizar el computador (cambios de valores de variables, asignaciones, operaciones aritméticas, etc).


Flujo
Indica el seguimiento lógico del diagrama. También indica el sentido de ejecución de las operaciones.


Decisión
Indica la comparación de dos datos y dependiendo del resultado lógico (falso o verdadero) se toma la decisión de seguir un camino del diagrama u otro.


Iteración
Indica que una instrucción o grupo de instrucciones deben ejecutarse varias veces.



Salida Impresa
Indica la presentación de uno o varios resultados en forma impresa.




Salida en Pantalla
Instrucción de presentación de mensajes o resultados en pantalla.


Conector
Indica el enlace de dos partes de un diagrama dentro de la misma página.


Conector
Indica el enlace de dos partes de un diagrama en páginas diferentes.



Ejemplo de un diagrama de flujo:



Pseudocogido


Ejemplos de Pseudocódigo

Ejemplo: Realizar el pseudocódigo de un programa que permita calcular el área de un rectángulo. Se debe introducir la base y la altura para poder realizar el cálculo..
Programa; área
Entorno: BASE, ALTURA, AREA son número enteros
Algoritmo:
            escribir “Introduzca la base y la altura”
            leer BASE, ALTURA
            calcular AREA = BASE * ALTURA
            escribir “El área del rectángulo es “AREA
Finprograma
Ejemplo: Realizar el pseudocódigo que permita al usuario introducir por teclado dos notas, calculando la suma y el producto de las notas.
Programa: SumaProducto
Entorno: NOTA1,NOTA2,SUMA,PRODUCTO son números enteros
Algoritmo:
escribir “Introduzca las notas”
leer NOTA1,NOTA2
calcular SUMA = NOTA1 + NOTA2
calcular PRODUCTO = NOTA1 * NOTA2
escribir “La suma de las dos notas es:” SUMA
escribir “El producto de las dos notas es :”PRODUCTO
Finprograma

Ejemplo: Realizar el pseudocódigo de un programa que permita saber si un número es mayor, menor o igual a cero.
    Programa: ComparaNúmeros
       Entorno: NUMERO es un número entero
Algoritmo:
Escribir “Introduzca un número “
leer NUMERO
SI NUMERO>0  ENTONCES
          escribir “El número introducido es positivo”
SI NO
          SI NUMERO<0 ENTONCES
                 escribir “El número introducido es negativo”
          SI NO
                 escribir “El número es cero”
          FINSI
FINSI
Finprograma

PROGRAMA

Es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Sin programas, estas máquinas no pueden funcionar.[1] [2] Al conjunto general de programas, se le denomina software, que más genéricamente se refiere al equipamiento lógico o soporte lógico de una computadora digital. En informática, se los denomina comúnmente binarios, (propio en sistemas Unix, donde debido a la estructura de este último, los ficheros no necesitan hacer uso de extensiones. Posteriormente, los presentaron como ficheros ejecutables, con extensión .exe, en los sistemas operativos de la familia Windows) debido a que una vez que han pasado por el proceso de compilación y han sido creados, las instrucciones que se escribieron en un lenguaje de programación que los humanos usan para escribirlos con mayor facilidad, se han traducido al único idioma que la máquina comprende, combinaciones de ceros y unos llamada código máquina. El mismo término, puede referirse tanto a un programa ejecutable, como a su código fuente, el cual es transformado en un binario cuando es compilado