ANTOLOGIA

“ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN”

INGENIERÍA INDUSTRIAL

ASESOR: I.S.C. Martha Araceli Gómez Díaz

COMITÁN DE DOMÍNGUEZ, CHIAPAS, AGOSTO 2010.

INDICE GENERAL Contenido 1. Introducción a la computación 1.1. Nuevas tecnologías de la información. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Elementos de un sistema computacional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Sistemas operativos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4. Paquetería de software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Desarrollo de la lógica algorítmica 2.1. 2.2. 2.3. 2.4. 3.1. 3.2. 3.3. 3.4. 3.5. 4.1. 4.2. 5.1. 5.2. 5.3. 6.1. 6.2. 6.3. 7.1. 7.2. 7.3. Bibliografía Metodología para la solución de problemas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Metodología para el diseño de software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definición de lenguajes algorítmicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pruebas y depuración. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción a la programación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción y orígenes del lenguaje. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estructura básica de un programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operadores, operandos y expresiones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instrucción return. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selectiva simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selectiva anidada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selectiva múltiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Repetir mientras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Repetir hasta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Repetir desde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Definición. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Características. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . inicialización. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 12 13 18 20 21 23 23 25 30 30 31 33 33 35 36 38 40 40 41 1 2 5 8 Pág.

3. Conocimiento de programación y un lenguaje

4. Funciones

5. Estructuras selectivas

6. Estructura de repetición

7. Arreglos

Algoritmos y lenguajes de programación

1. INTRODUCCIÓN A LA COMPUTACIÓN
1.1. Nuevas Tecnologías de la Información Resulta innegable el auge cada vez mayor de las NTIC en las diferentes esferas de la sociedad a escala mundial. El desarrollo impetuoso de la ciencia y la tecnología ha llevado a la sociedad a entrar al nuevo milenio inmerso en lo que se ha dado en llamar “era de la información” e incluso se habla de que formamos partes de la “sociedad de la información”. Sin lugar a dudas, estamos en presencia de una revolución tecnológica de alcance insospechado. Pero ¿Qué son las NTIC? Existen muchas definiciones al respecto, pero nos parece acertado definirlo como “...Un conjunto de aparatos, redes y servicios que se integran o se integraran a la larga, en un sistema de información interconectado y complementario. La innovación tecnológica consiste en que se pierden la frontera entre un medio de información y otro”. Estas NTIC conforman un sistema integrado por: Las telecomunicaciones: Representadas por los satélites destinados a la transmisión de señales telefónicas, telegráficas y televisivas; la telefonía que ha tenido un desarrollo impresionante a partir del surgimiento de la señal digital; el fax y el modem; y por la fibra óptica, nuevo conductor de la información en forma luminosa que entre sus múltiplex ventajas económicas se distingue el transmitir la señal a grandes distancias sin necesidad de usar repetidores y tener ancho de banda muy amplio. La informática: Caracterizada por notables avances en materia de hardware y software que permiten producir, transmitir, manipular y almacenar la información con mas efectividad, distinguiéndose la multimedia, las redes locales y globales (INTERNET), los bancos interactivo de información, los servicios de mensajería electrónica, etc. La tecnología audiovisual: Que ha perfeccionado la televisión de libre señal, la televisión por cable, la televisión restringida (pago por evento) y la televisión de alta definición. La denominación de “Nueva” ha traído no pocas discusiones y criterios encontrados, al punto que muchos especialistas han optado por llamarles simplemente No deja de asistirles la Tecnologías de la información y las comunicaciones (TIC). Razón cuando comprobamos que muchas de ellas son realmente ancianas, como el teléfono que data de 1876 es decir de ¡del siglo antepasado! Lo que no puede perderse de vista es que el término “Nueva” se les asocia fundamentalmente porque en todos ellas se distinguen transformaciones que erradican las deficiencias de sus antecesoras y por su integración como técnicas interconectadas en una nueva configuración física. La amplia utilización de las NTIC en el mundo, ha triado como consecuencia un importante cambio en la economía mundial, particularmente en los piases más industrializados, sumándote a los factores tradicionales de producción para la generación de riquezas, un nuevo factor que resulta estratégico. El conocimiento. Es por eso que ya no se habla de la “sociedad de la información”, sino también de la “sociedad del conocimiento”. Sus efectos y alcance sobrepasan los propios marcos de la información y la comunicación, y puede traer aparejadas modificaciones en las estructuras políticas, social, económica, laboral y jurídica debido a que posibilitan obtener, almacenar, procesar, manipular y distribuir con rapidez la información.

1

Algoritmos y lenguajes de programación

1.2. Elementos de un sistema computacional Hardware: Corresponde a todas las partes físicas y tangibles de una computadora: sus componentes eléctricos, electrónicos, electromecánicos y mecánicos; sus cables, gabinetes o cajas, periféricos de todo tipo y cualquier otro elemento físico involucrado; contrariamente al soporte lógico e intangible que es llamado software. El término es propio del idioma inglés (literalmente traducido: partes blandas o suaves), su traducción al español no tiene un significado acorde, por tal motivo se la ha adoptado tal cual es y suena; la Real Academia Española lo define como «Conjunto de los componentes que integran la parte material de una computadora». El término, aunque es lo más común, no necesariamente se aplica a una computadora tal como se la conoce, así por ejemplo, un robot también posee hardware (y software). La historia del hardware del computador se puede clasificar en cuatro generaciones, cada una caracterizada por un cambio tecnológico de importancia. Este hardware se puede clasificar en: básico, el estrictamente necesario para el funcionamiento normal del equipo, y el complementario, el que realiza funciones específicas. Un sistema informático se compone de una unidad central de procesamiento (CPU), encargada de procesar los datos, uno o varios periféricos de entrada, los que permiten el ingreso de la información y uno o varios periféricos de salida, los que posibilitan dar salida (normalmente en forma visual o auditiva) a los datos procesados. Clasificación del Hardware: Una de las formas de clasificar el Hardware es en dos categorías: por un lado, el "básico", que abarca el conjunto de componentes indispensables necesarios para otorgar la funcionalidad mínima a una computadora, y por otro lado, el "Hardware complementario", que, como su nombre indica, es el utilizado para realizar funciones específicas (más allá de las básicas), no estrictamente necesarias para el funcionamiento de la computadora. Así es que: Un medio de entrada de datos, la unidad de procesamiento y memoria y un medio de salida de datos constituye el "hardware básico". Los medios de entrada y salida de datos estrictamente indispensables dependen de la aplicación: desde un punto de vista de un usuario común, se debería disponer, al menos, de un teclado y un monitor para entrada y salida de información, respectivamente; pero ello no implica que no pueda haber una computadora (por ejemplo controlando un proceso) en la que no sea necesario teclado ni monitor, bien puede ingresar información y sacar sus datos procesados, por ejemplo, a través de una placa de adquisición/salida de datos. Las computadoras son aparatos electrónicos capaces de interpretar y ejecutar instrucciones programadas y almacenadas en su memoria, ellas consisten básicamente en operaciones aritmético-lógicas y de entrada/salida. Se reciben las entradas (datos), se las procesa y almacena (procesamiento), y finalmente se producen las salidas (resultados del procesamiento). Por ende todo sistema informático tiene, al menos, componentes y dispositivos hardware dedicados a alguna de las funciones antedichas; a saber: 1. Procesamiento: Unidad Central de Proceso o CPU 2. Almacenamiento: Memorias
2

Algoritmos y lenguajes de programación

3. Entrada: Periféricos de Entrada (E) 4. Salida: Periféricos de salida (S) 5. Entrada/Salida: Periféricos mixtos (E/S) Desde un punto de vista básico y general, un dispositivo de entrada es el que provee el medio para permitir el ingreso de información, datos y programas (lectura); un dispositivo de salida brinda el medio para registrar la información y datos de salida (escritura); la memoria otorga la capacidad de almacenamiento, temporal o permanente (almacenamiento); y la CPU provee la capacidad de cálculo y procesamiento de la información ingresada (transformación). Un periférico mixto es aquél que puede cumplir funciones tanto de entrada como de salida, el ejemplo más típico es el disco rígido (ya que en él se lee y se graba información y datos). Software: En computación, el software -en sentido estricto- es todo programa o aplicación programado para realizar tareas específicas. El término "software" fue usado por primera vez por John W. Tukey en 1957. Algunos autores prefieren ampliar la definición de software e incluir también en la definición todo lo que es producido en el desarrollo del mismo. La palabra "software" es un contraste de "hardware"; el software se ejecuta dentro del hardware. Una definición más amplia de software incluye mucho más que sólo los programas. Esta definición incluye: La representación del software: programas, detalles del diseño escritos en un lenguaje de descripción de programas, diseño de la arquitectura, especificaciones escritas en lenguaje formal, requerimientos del sistema, etc. El conocimiento de la ingeniería del software: Es toda la información relacionada al desarrollo de software (por ejemplo, cómo utilizar un método de diseño específico) o la información relacionada al desarrollo de un software específico (por ejemplo, el esquema de pruebas en un proyecto). Aquí se incluye información relacionada al proyecto, información sobre la tecnología de software, conocimiento acerca de sistemas similares y la información detallada relacionada a la identificación y solución de problemas técnicos. La información de la aplicación. El software, como programa, consiste en un código en un lenguaje máquina específico para un procesador individual. El código es una secuencia de instrucciones ordenadas que cambian el estado del hardware de una computadora. El software se suele escribir en un lenguaje de programación de alto nivel, que es más sencillo de escribir (pues es más cercano al lenguaje natural humano), pero debe convertirse a lenguaje máquina para ser ejecutado. El software puede distinguirse en tres categorías: software de sistema, software de programación y aplicación de software. De todas maneras esta distinción es arbitraria y muchas veces un software puede caer en varias categorías.
3

Algoritmos y lenguajes de programación

Software de sistema: ayuda a funcionar al hardware y a la computadora. Incluye el sistema operativo, controladores de dispositivos, herramientas de diagnóstico, servidores, sistema de ventanas, utilidades y más. Su propósito es evitar lo más posible los detalles complejos de la computación, especialmente la memoria y el hardware. Software de programación: provee herramientas de asistencia al programador. Incluye editores de texto, compiladores, intérprete de instrucciones, enlazadores, debuggers, etc. Software de aplicación: permite a los usuarios finales hacer determinadas tareas. Algunos software de aplicación son los navegadores, editores de texto, editores gráficos, antivirus, mensajeros, etc. Firmware: Firmware o programación en firme, es un bloque de instrucciones de programa para propósitos específicos, grabado en una memoria de tipo no volátil (ROM, EEPROM, flash,...), que establece la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo de cualquier tipo. Al estar integrado en la electrónica del dispositivo es en parte hardware, pero también es software, ya que proporciona lógica y se dispone en algún tipo de lenguaje de programación. Funcionalmente, el firmware es el intermediario (interfaz) entre las órdenes externas que recibe el dispositivo y su electrónica, ya que es el encargado de controlar a ésta última para ejecutar correctamente dichas órdenes externas. Encontramos firmware en memorias ROM de los sistemas de diversos dispositivos periféricos, como en monitores de video, unidades de disco, impresoras, etc., pero también en los propios microprocesadores, chips de memoria principal y en general en cualquier circuito integrado. Muchos de los firmwares almacenados en ROM están protegidos por Derechos de Autor. El programa BIOS de una computadora es un firmware cuyo propósito es activar una máquina desde su encendido y preparar el entorno para la instalación de un Sistema Operativo complejo, así como responder a otros eventos externos (botones de pulsación humana) y al intercambio de órdenes entre distintos componentes de la computadora. En un microprocesador el firmware es el que recibe las instrucciones de los programas y las ejecuta en la compleja circuitería del mismo, emitiendo órdenes a otros dispositivos del sistema. El Firmware hoy en día El firmware ha evolucionado para significar casi cualquier contenido programable de un dispositivo de hardware, no sólo código de máquina para un procesador, sino también configuraciones y datos para los circuitos integrados para aplicaciones específicas (ASICs), dispositivos de lógica programable, etc. Reproductores de música portátiles (codecs, interfaz gráfica de usuario, vida de la batería). Teléfonos celulares (actualizaciones de recepción y calidad de sonido). Automóviles (sensores).

4

Algoritmos y lenguajes de programación

1.3. Sistemas operativos Un sistema operativo es el encargado de brindar al usuario una forma amigable y sencilla de operar, interpretar, codificar y emitir las ordenes al procesador central para que este realice las tareas necesarias y especificas para completar una orden. El sistema operativo, es el instrumento indispensable para hacer de la computadora un objeto útil. Bajo este nombre se agrupan todos aquellos programas que permiten a los usuarios la utilización de este enredo de cables y circuitos, que de otra manera serian difíciles de controlar. Un sistema operativo se define como un conjunto de procedimientos manuales y automáticos, que permiten a un grupo de usuarios compartir una instalación de computadora eficazmente. Funciones de los Sistemas Operativos. Interpreta los comandos que permiten al usuario comunicarse con el ordenador. Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse. Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas. Gestiona los errores de hardware y la pérdida de datos. Servir de base para la creación del software logrando que equipos de marcas distintas funcionen de manera análoga, salvando las diferencias existentes entre ambos. Clasificación de los Sistemas Operativos. Con el paso del tiempo, los Sistemas Operativos fueron clasificándose de diferentes maneras, dependiendo del uso o de la aplicación que se les daba. A continuación se mostrarán diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus características: Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea). Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutación de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o más aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicación que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicación. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicación está esperando información del usuario), y siempre que esta aplicación lo permita. En los sistemas multitarea de tiempo compartido, como OS/2, cada tarea recibe la atención del microprocesador durante una fracción de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado que el sentido temporal del usuario es mucho más lento que la velocidad de procesamiento del ordenador, las operaciones de multitarea en tiempo compartido parecen ser simultáneas.

5

Algoritmos y lenguajes de programación

Se distinguen por sus habilidades para poder soportar la ejecución de dos o más trabajos activos (que se están ejecutado) al mismo tiempo. Esto trae como resultado que la Unidad Central de Procesamiento (UCP) siempre tenga alguna tarea que ejecutar, aprovechando al máximo su utilización. Su objetivo es tener a varias tareas en la memoria principal, de manera que cada uno está usando el procesador, o un procesador distinto, es decir, involucra máquinas con más de una UCP. Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC-OS, OS/2, soportan la multitarea. Sistema Operativo Monotareas. Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión. Sistema Operativo Monousuario. Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se esté ejecutando. Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se está utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y están orientados principalmente por los microcomputadores. Sistema Operativo Multiusuario. Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing). Sistemas Operativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Estos sistemas son de los más tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Cuando estos sistemas son bien planeados, pueden tener un tiempo de ejecución muy alto, porque el procesador es mejor utilizado y los Sistemas Operativos pueden ser simples, debido a la secuenciabilidad de la ejecución de los trabajos.

6

Algoritmos y lenguajes de programación

Algunos ejemplos de Sistemas Operativos por lotes exitosos son el SCOPE, del DC6600, el cual está orientado a procesamiento científico pesado, y el EXEC II para el UNIVAC 1107, orientado a procesamiento académico. Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores. También en el ramo automovilístico y de la electrónica de consumo, las aplicaciones de tiempo real están creciendo muy rápidamente. Otros campos de aplicación de los Sistemas Operativos de tiempo real son los siguientes:
     

Control de trenes. Telecomunicaciones. Sistemas de fabricación integrada. Producción y distribución de energía eléctrica. Control de edificios. Sistemas multimedia.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra. Los Sistemas Operativos de tiempo real, cuentan con las siguientes características: Sistemas Operativos de tiempo compartido. Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario. Los principales recursos del sistema, el procesador, la memoria, dispositivos de E/S, son continuamente utilizados entre los diversos usuarios, dando a cada usuario la ilusión de que tiene el sistema dedicado para sí mismo. Esto trae como consecuencia una gran carga de trabajo al Sistema Operativo, principalmente en la administración de memoria principal y secundaria. Ejemplos de Sistemas Operativos de tiempo compartido son Multics, OS/360 y DEC-10. Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas básicos de éstos. Un sistema fuertemente acoplado es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los

7

Algoritmos y lenguajes de programación

procesadores. En un sistema débilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Los sistemas distribuidos deben de ser muy confiables, ya que si un componente del sistema se compone otro componente debe de ser capaz de reemplazarlo. Entre los diferentes Sistemas Operativos distribuidos que existen tenemos los siguientes: Sprite, Solaris-MC, Mach, Chorus, Spring, Amoeba, Taos, etc. Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o más computadoras unidas através de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Los Sistemas Operativos de red más ampliamente usados son: Novell Netware, Personal Netware, LAN Manager, Windows NT Server, UNIX, LANtastic. Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo. En UNIX existe también la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). Así, en lugar de esperar a que el proceso termine de ejecutarse (como lo haría normalmente), regresa a atender al usuario inmediatamente después de haber creado el proceso. Ejemplos de estos tipos de Sistemas Operativos están: Alpha, PVM, la serie AIX, que es utilizado en los sistemas RS/6000 de IBM.

1.4. Paquetería de software: En informática, Una Aplicación es un programa informático diseñado para facilitar al usuario la realización de un determinado tipo de trabajo. Posee ciertas características que le diferencia de un sistema operativo (que hace funcionar a la computadora), de una utilidad (que realiza tareas de mantenimiento o de uso general) y de un lenguaje (con el cual se crean los programas informáticos). Suele resultar una solución informática para la automatización de ciertas tareas complicadas como puede ser la contabilidad o la gestión de un almacén. Ciertas aplicaciones desarrolladas “a medida”; suelen ofrecer una gran potencia ya que están exclusivamente diseñadas para resolver un problema específico. Otros, llamados paquetes integrados de software, ofrecen menos potencia pero a cambio incluyen varias aplicaciones, como un programa procesador de textos, de hoja de cálculo y de base de datos. Los programas de aplicación se dividen en muchos tipos, entre los cuales se pueden nombrar:

8

Algoritmos y lenguajes de programación

De procesadores de texto: Lotus Word Pro, Microsoft Word, Corel WordPerfect, OpenOffice.org Writer. De hojas electrónicas o de cálculo: Quattro Pro, Lotus 1-2-3, OpenOffice.org Calc, Microsoft Excel. De manejo de base de datos: MySQL, Microsoft Access, Visual FoxPro, dBase. Comunicación de datos: Safari,Mozilla Firefox, MSN Explorer, Internet Explorer, Netscape Navigator, Kazaa, MSN Messenger Yahoo! Messenger, ICQ, AOL Instant Messenger,Opera. Multimedia: XMMS, Mplayer, Windows Media Player, Winamp, RealPlayer, QuickTime, DVX. De presentaciones: Microsoft Power Point, OpenOffice.org Impress, Corel Presentations, Windows Movie Maker. De diseño: Corel Draw, GIMP, Corel PHOTO-PAINT, Corel Painter, Adobe Photoshop, Microsoft Photo Editor, Microsoft Paint, Microsoft Publisher, AutoCAD, Macromedia Fireworks, Macromedia FreeHand. De edición: Corel Ventura, QuarkXPress, Adobe PageMaker, Adobe InDesign, FrameMaker, Adobe Acrobat. De cálculo: Maple. De finanzas: Microsoft Money. Compiladores: Visual Basic, C++, Pascal, Visual FoxPro. De correo electrónico: Outlook Express, MozillaThunderbird. De compresión de archivos: WinZip, gzip, WinRar. De presupuestación de obras: DataObra, Presto. Algunas compañías como Microsoft, Lotus, Sun Microsystems ó Corel, entre otras, agrupan varios programas de distinta naturaleza para que formen un paquete (llamados suites o suite ofimática) que sean satisfactorios para las necesidades más apremiantes del usuario, como el caso de las siguientes suites: Microsoft Office, que incluye: Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Microsoft InfoPath, Microsoft Outlook, Microsoft Access, Microsoft Publisher, entre otros según la presentación (básica, estándar o profesional). OpenOffice.org, que incluye: OpenOffice.org Writer, OpenOffice.org Calc, OpenOffice.org Impress, entre otros según la presentación (básica, estándar o profesional). Lotus SmartSuite, que incluye: Lotus Word Pro (antes AmiPro), Lotus 1-2-3, Lotus FreelanceGraphics, Lotus Organizer, entre otros según la presentación (básica, estándar o profesional).

9

Algoritmos y lenguajes de programación

2. DESARROLLO DE LÓGICA ALGORÍTMICA
2.1. Metodología para la solución de problemas La solución de un problema por computadora, requiere de siete pasos, dispuestos de tal forma que cada uno es dependiente de los anteriores, lo cual indica que se trata de un proceso complementario y por lo tanto cada paso exige el mismo cuidado en su elaboración. Los siete pasos de la metodología son los siguientes: 1. Definición del problema 2. Análisis de la solución 3. Diseño de la solución 4. Codificación 5. Prueba y Depuración 6. Documentación 7. Mantenimiento

Definición del problema Es el enunciado del problema, el cual debe ser claro y completo. Es fundamental conocer y delimitar por completo el problema, saber que es lo se desea realice la computadora, mientras esto no se conozca del todo, no tiene caso continuar con el siguiente paso. Análisis de la solución Consiste en establecer una serie de preguntas acerca de lo que establece el problema, para poder determinar si se cuenta con los elementos suficientes para llevar a cabo la solución del mismo, algunas preguntas son: ¿Con qué cuento? Cuáles son los datos con los que se va a iniciar el proceso, qué tenemos que proporcionarle a la computadora y si los datos con los que cuento son suficientes para dar solución al problema. ¿Qué hago con esos datos? Una vez que tenemos todos los datos que necesitamos, debemos determinar que hacer con ellos, es decir que fórmula, cálculos, que proceso o transformación deben seguir los datos para convertirse en resultados.
10

Algoritmos y lenguajes de programación

¿Qué se espera obtener? Que información deseamos obtener con el proceso de datos y de que forma presentarla; en caso de la información obtenida no sea la deseada replantear nuevamente un análisis en los puntos anteriores. Es recomendable que nos pongamos en el lugar de la computadora y analicemos que es lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados. Diseño de la solución Una vez definido y analizado el problema, se procede a la creación del algoritmo (Diagrama de flujo ó pseudocódigo), en el cual se da la serie de pasos ordenados que nos proporcione un método explícito para la solución del problema. Es recomendable la realización de pruebas de escritorio al algoritmo diseñado, para determinar su confiabilidad y detectar los errores que se pueden presentar en ciertas situaciones. éstas pruebas consisten en dar valores a la variable e ir probando el algoritmo paso a paso para obtener una solución y si ésta es satisfactoria continuar con el siguiente paso de la metodología; de no ser así y de existir errores deben corregirse y volver a hacer las pruebas de escritorio al algoritmo. Codificación Consiste en escribir la solución del problema (de acuerdo al pseudocódigo); en una serie de instrucciones detalladas en un código reconocible por la computadora; es decir en un lenguaje de programación (ya sea de bajo o alto nivel), a esta serie de instrucciones se le conoce como PROGRAMA.

Prueba y Depuración Prueba es el proceso de identificar los errores que se presenten durante la ejecución del programa; es conveniente que cuando se pruebe un programa se tomen en cuenta los siguientes puntos: 1. - Tratar de iniciar la prueba con una mentalidad saboteadora, casi disfrutando la tarea de encontrar un error. 2. - Sospechar de todos los resultados que arroje la solución, con lo cual se deberán verificar todos. 3. - Considerar todas las situaciones posibles, normales y aún las anormales. La Depuración consiste en eliminar los errores que se hayan detectado durante la prueba, para dar paso a una solución adecuada y sin errores.

Documentación Es la guía o comunicación escrita que sirve como ayuda para usar un programa, o facilitar futuras modificaciones. A menudo un programa escrito por una persona es usado por muchas otras, por ello la documentación es muy importante; ésta debe presentarse en tres formas: EXTERNA, INTERNA y AL USUARIO FINAL. Documentación Interna Consiste en los comentarios o mensajes que se agregan al código del programa, que explican las
11

Algoritmos y lenguajes de programación

funciones que realizan ciertos procesos, cálculos o fórmulas para el entendimiento del mismo.

Documentación Externa También conocida como Manual Técnico, está integrada por los siguientes elementos: Descripción del Problema, Nombre del Autor, Diagrama del Flujo y/o Pseudocódigo, Lista de variables y constantes, y Codificación del Programa, esto con la finalidad de permitir su posterior adecuación a los cambios. Manual del Usuario Es la documentación que se le proporciona al usuario final, es una guía que indica el usuario como navegar en el programa, presentando todas las pantallas y menús que se va a encontrar y una explicación de los mismos, no contiene información de tipo técnico.

Mantenimiento Se lleva a cabo después de determinado el programa, cuando se ha estado trabajando un tiempo, y se detecta que es necesario hacer un cambio, ajuste y/o complementación al programa para que siga trabajando de manera correcta. Para realizar esta función, el programa debe estar debida mente documentado, lo cual facilitará la tarea. 2.2. Metodología para el diseño de software Top-down y Bottom-up son estrategias de procesamiento de información características de las ciencias de la información, especialmente en lo relativo al software. Por extensión se aplican también a otras ciencias sociales y exactas. En el modelo Top-down se formula un resumen del sistema, sin especificar detalles. Cada parte del sistema se refina diseñando con mayor detalle. Cada parte nueva es entonces redefinida, cada vez con mayor detalle, hasta que la especificación completa es lo suficientemente detallada para validar el modelo. El modelo "Top-down" se diseña con frecuencia con la ayuda de "cajas negras" que hacen más fácil cumplir requerimientos aunque estas cajas negras no expliquen en detalle los componentes individuales. En contraste, en el diseño Bottom-up las partes individuales se diseñan con detalle y luego se enlazan para formar componentes más grandes, que a su vez se enlazan hasta que se forma el sistema completo. Las estrategias basadas en el flujo de información "bottom-up" se antojan potencialmente necesarias y suficientes porque se basan en el conocimiento de todas las variables que pueden afectar los elementos del sistema. En el proceso de desarrollo de software, los enfoques Top-down y Bottom-up juegan un papel crucial. El diseño Top-down fue promovido en los setenta por los investigadores de IBM Harlan Mills y Niklaus Wirth. Mills desarrolló los conceptos de programación estructurada para usos prácticos y los probó en un proyecto en 1969 para automatizar el índice de la morgue del New York Times. El éxito administrativo e ingenieril del proyecto hicieron que el enfoque top-down se esparciera por
12

Algoritmos y lenguajes de programación

IBM y por el resto de la industria de los computadores. Niklaus Wirth, que entre sus logros está el desarrollo del lenguaje de programación Pascal, escribió el artículo Program Development by Stepwise Refinement, que tuvo mucha influencia. Los métodos Top-down fueron favorecidos en la ingeniería de software hasta que llegó la programación orientada a objetos a finales de los 1980s. El enfoque top-down enfatiza la planificación y conocimiento completo del sistema. Se entiende que la codificación no puede comenzar hasta que no se haya alcanzado un nivel de detalle suficiente, al menos en alguna parte del sistema. Esto retrasa las pruebas de las unidades funcionales del sistema hasta que gran parte del diseño se ha completado. Bottom-up hace énfasis en la programación y pruebas tempranas, que pueden comenzar tan pronto se ha especificado el primer módulo. Este enfoque tiene el riesgo de programar cosas sin saber cómo se van a conectar al resto del sistema, y esta conexión puede no ser tan fácil como se creyó al comienzo. La reutilización del código es uno de los mayores beneficios del enfoque bottom-up. El desarrollo de software moderno usualmente combina tanto Top-down como Bottom-up. Aunque un conocimiento completo del sistema se considera usualmente necesario para un buen diseño, haciendo que teóricamente sea un enfoque top-down, la mayoría de proyectos de desarrollo de software tratan de usar código existente en algún grado. El uso de módulos existentes le dan al diseño un sabor 'bottom-up'. Algunos enfoques usan un enfoque en el que un sistema parcialmente funcional es diseñado y programado completamente, y este sistema se va expandiendo para llenar los requisitos del proyecto.

2.3. Definición de lenguajes algorítmicos Definición de Algoritmo. "Un algoritmo se define como un método que se realiza paso a paso para solucionar un problema que termina en un número finito de pasos". Las características fundamentales que debe cumplir todo algoritmo son: Debe ser preciso. e indicar el orden de realización de cada paso. Debe ser definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. 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.

13

Algoritmos y lenguajes de programación

Diseñar un algoritmo para cambiar una llanta a un coche. Inicio. Traer gato. Levantar el coche con el gato. Aflojar tornillos de las llantas. Sacar los tornillos de las llantas. Quitar la llanta. Poner la llanta de repuesto. Poner los tornillos. Apretar los tornillos. Bajar el gato. Fin. Definición de Lenguajes Algorítmicos. Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten describir los pasos con mayor o menor detalle. La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera: Lenguaje Natural. Lenguaje de Diagrama de Flujo. Pseudocódigo. Lenguaje de Programación de Algoritmos. Lenguaje Natural. Es aquél que describe en español, para nuestro caso, los pasos a seguir utilizando un vocabulario cotidiano. Se le conoce como lenguaje jerga cuando se utilizan términos especializados de una determinada ciencia, profesión o grupo. Lenguaje de Diagrama de Flujo. Es aquél que se vale de diversos símbolos para representar las ideas o acciones a desarrollar. Es útil para organizar las acciones o pasos de un algoritmo pero requiere de etapas posteriores para implementarse en un sistema de cómputo. Diagramas que utilizan símbolos para representar y especificar detalles algorítmicos de un proceso. En otras palabras, representan gráficamente los pasos de un proceso. Un Diagrama de Flujo representa la esquematización gráfica de un algoritmo, el cual muestra gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema. Su correcta construcción es sumamente importante porque, a partir del mismo se escribe un programa en algún Lenguaje de Programación. Si el Diagrama de Flujo está completo y correcto, el paso del mismo a un Lenguaje de Programación es relativamente simple y directo.
14

Algoritmos y lenguajes de programación

Es importante resaltar que el Diagrama de Flujo muestra el sistema como una red de procesos funcionales conectados entre sí por " Tuberías " y "Depósitos" de datos que permite describir el movimiento de los datos a través del Sistema. Este describirá : Lugares de Origen y Destino de los datos , transformaciones a las que son sometidos los datos, lugares en los que se almacenan los datos dentro del sistema , los canales por donde circulan los datos.

15

Algoritmos y lenguajes de programación

Diagrama de flujo que encuentra la suma de los primeros 50 números naturales

Pseudocódigo En pseudocódigo se describen los algoritmos utilizando una mezcla de lenguaje común, con instrucciones de programación, palabras claves, etc. El objetivo es que el programador se centre en la solución lógica del algoritmo y no en la implementación en un lenguaje de programación concreto (con las posibles complicaciones en las reglas sintácticas), o en otras palabras, sólo ayudan a "pensar" un programa antes de escribirlo en un lenguaje de programación formal. La solución de problemas a nivel profesional se basa fundamentalmente en el análisis previo de la situación a resolver y el caso de la programación de computadoras un buen pseudocódigo permitirá traducir más fácilmente un algoritmo a un lenguaje de programación. Inicio Programa valor = 0 Mientras (valor sea menor a 20) Mostrar valor valor++ Si (valor es igual a 10) Mostrar "me gusta el 10"
16

Algoritmos y lenguajes de programación

Fin Si Fin Mientras Fin Programa

valor = 0 Mientras (valor sea menor a 20) { mostrar valor valor = valor + 1 Si (valor es igual a 10) { mostrar "me gusta el 10" } }

El pseudocódigo es un forma de representar un algoritmo, mediante sentencias similares al lenguaje natural, pero con una precisión mayor. Lenguaje de Programación de Algoritmos. Es aquél que se utiliza para introducir en la computadora un algoritmo específico. Se les conoce también como Lenguaje de Programación. Lenguaje de Programación: Es un conjunto de palabras, símbolos y reglas sintácticas mediante los cuales puede indicarse a la computadora los pasos a seguir para resolver un problema. Los lenguajes de programación pueden clasificarse por diversos criterios, siendo el más común su nivel de semejanza con el lenguaje natural, y su capacidad de manejo de niveles internos de la máquina. Los principales tipos de lenguajes utilizados son tres : Lenguaje Máquina. Lenguaje de bajo Nivel (ensamblador). Lenguajes de Alto Nivel. Lenguaje Máquina. Son aquéllos que están escritos en lenguajes directamente inteligibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (cadenas o series de caracteres de dígitos 0 y 1) que especifican una operación y las posiciones (dirección) de memoria implicadas en la operación se denominan instrucciones de máquina o código máquina. El código máquina es el conocido código binario.
17

Algoritmos y lenguajes de programación

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 significa "sumar el 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 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, requiere de una fase de traducción al lenguaje máquina para poder ser ejecutado directamente por la computadora. El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje máquina se conoce como programa objeto, el cual ya es directamente entendible por la computadora. Lenguajes de Alto Nivel. Estos lenguajes son los más utilizados por los programadores. Están diseñados para que las personas escriban y entiendan los programas de un modo mucho más fácil que los lenguajes máquina y ensambladores. Un programa escrito en lenguaje de alto nivel es independiente de la máquina (las instrucciones no dependen del diseño del hardware o de una computadora en particular), por lo que estos programas son portables o transportables. Los programas escritos en lenguaje de alto nivel pueden ser ejecutados con poca o ninguna modificación en diferentes tipos de computadoras.

2.4. Pruebas y depuración Es muy difícil elaborar procedimientos perfectos en un primer intento y la dificultad aumenta a medida que los problemas se vuelven más complejos. Después de traducir el algoritmo en un lenguaje de programación, el procedimiento resultante debe ser probado y los resultados validados (revisión). A este proceso se le conoce como depuración y contribuye a mejorar en los estudiantes la capacidad para resolver problemas puesto que la depuración basada en la retroalimentación es una habilidad útil para toda la vida (Stager, 2003). La depuración de un procedimiento hace parte fundamental del ciclo de programación y desde el punto de vista educativo estimula en los estudiantes la curiosidad, la perspectiva, la comunicación
18

Algoritmos y lenguajes de programación

y promueve valores como responsabilidad, fortaleza, laboriosidad, paciencia y perseverancia. La programación facilita un diálogo interior en el cual la retroalimentación constante y el éxito gradual empujan a los alumnos a ir más allá de sus expectativas (Stager, 2003). Otras dos actividades relacionadas con esta etapa, que no se tratarán, son la afinación y la documentación. La primera consiste en realizar retoques para lograr una mejor apariencia del programa (en pantalla o en los resultados impresos) o para ofrecer funcionalidades más allá de los resultados esperados, especificados en la fase de análisis del problema. La segunda tiene un carácter eminentemente comunicativo, con la documentación de un programa se pone a prueba la capacidad del estudiante para informar a otras personas qué hace su programa, cómo lo hace y el significado de cada elemento utilizado. Esta actividad se puede llevar a cabo mediante comentarios introducidos al código o por medio de documentación formal en un documento que se anexa al procedimiento elaborado. Depuración La corrección de fallas es una de las situaciones que mayor frecuencia tienen en el mundo profesional. Con esta actividad se intenta identificar fallas sintácticas o lógicas en programas que no funcionan adecuadamente; una vez aislada la falla, esta se soluciona y se vuelve a probar el programa y a validar los resultados. Según Jonassen (2003), para corregir fallas efectiva y eficientemente se requiere conocimiento del sistema (comprensión conceptual de cómo funciona el sistema), conocimiento procedimental (cómo llevar a cabo tanto procedimientos de solución de fallas, como actividades de prueba) y conocimiento estratégico (saber cuándo, dónde y por qué aplicar procedimientos de solución de fallas y actividades de prueba). En caso de presentarse una falla de sintaxis, el estudiante debe: Comprender el mensaje de error que reporta el ambiente de programación (apoyarse en las opciones de ayuda que ofrece el docente). Examinar el código del programa para identificar en cuál instrucción se encuentra la falla. Corregir la falla. Probar el programa de nuevo.

19

Algoritmos y lenguajes de programación

3. CONOCIMIENTO DE PROGRAMACIÓN Y UN LENGUAJE ESTRUCTURADO
3.1. Introducción a la programación Después que se ha diseñado y pensado como resolver el problema en papel, se debe comenzar el proceso de introducir el programa en un archivo en el disco duro de la computadora. La introducción y modificación del programa en un archivo se hace utilizando un simple editor de texto o un editor especializado que hace la tarea de escribir un programa una tarea muy fácil. El programa que se introduzca en el editor, estará escrito en Java o C++ o cualquier otro, pero ni C++ ni Java son lenguajes máquina, muy al contrario, son lenguajes de alto nivel diseñados para hacer más fácil la programación que utilizando el lenguaje máquina. Los lenguajes, como todo, hay que aprendérselos, pero tienen una ventaja, y es que hay varios puntos en común. 3.1.1. Definición de programa. Es el conjunto de instrucciones escritas en algún lenguaje de programación y que ejecutadas secuencialmente resuelven un problema especifico. Ejemplos de instrucciones: Leer un dato del teclado. Guardar un dato en la memoria. Ejecutar una operación sobre dos datos. Mostrar un dato en la pantalla. Las instrucciones están en un lenguaje entendible por el programador y decodificable por la computadora, habitualmente llamado lenguaje fuente u origen. Una vez escrito el programa en lenguaje fuente, para que la computadora lo pueda ejecutar, con un programa traductor lo transforma en lenguaje de máquina u objeto. 3.1.2. Definición de programación. Es la acción y efecto de programar. En términos informáticos es la elaboración de programas en un lenguaje de programación, el código fuente de un software para la resolución de problemas mediante computadoras. 3.1.3. Definición de lenguaje de programación. Es un conjunto de símbolos, caracteres y reglas (programas) que les permiten a las personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación.

20

Algoritmos y lenguajes de programación

3.2. Introducción y orígenes del lenguaje. La historia de la informática y de la computación se ha caracterizado fundamentalmente en la existencia de centenares de lenguajes de programación, existen muchos realmente, aunque de estos centenares de lenguajes, son pocos los lenguajes que han pisado fuerte, que han tenido un impacto significativo. Muchos de los lenguajes de programación actuales tienen sus raíces en los lenguajes que nacieron a finales de los cincuenta y primeros años de los sesenta, tales como: COBOL, FORTRAN, BASIC, LOGO. Estos lenguajes representaron la primera alternativa a los lenguajes ensambladores. En la década de los setenta y primeros años de los ochenta emergieron nuevos lenguajes como: ALGOL, BASIC, SIMULA, SMALLTAK. A mediados de los ochenta y principios de los noventa se presentaron C, C++, JAVA. El propósito de un lenguaje de programación es permitir a las personas comunicarse con una computadora. Los lenguajes de las personas y los lenguajes de la máquina son muy diferentes, ya que las características y posibilidades de las personas y de las máquinas son muy diferentes. Los lenguajes de programación permiten a las personas escribir en un lenguaje que sea más apropiado a las características humanas y se puedan traducir al lenguaje máquina de diferentes tipos de máquinas. Los principales tipos de lenguajes utilizados: 1. Lenguajes máquina. Instrucciones binarias (ceros y unos). Sólo la máquina puede entenderlo. 2. Lenguajes de bajo nivel (assembler). Pueden entenderlo las personas Instrucciones nemotécnicas a las binarias. Instrucciones compuestas de palabras cortas y números: (LOD 15 6, ADD 15 16 17, JMP 10). 3. Lenguajes de alto nivel. Instrucciones en lenguaje fácil de leer por las personas. Es fácil escribir y entender para las personas. Los lenguajes de programación de alto nivel existentes hoy en día son muy numerosos, aunque la práctica demuestra que los más usados se reducen a: C PYTHON RUBY PHP C# C++ JAVA JAVASCRIPT Unos programas especiales llamados traductores (compiladores o intérpretes) convierten las instrucciones escritas en un determinado lenguaje de programación en instrucciones escritas en el lenguaje que la máquina se sabe y entiende muy bien (0 y 1, bits).

LOD 16 8,

21

Algoritmos y lenguajes de programación

Traductores de lenguaje. Los traductores de lenguaje son programas que traducen los programas fuente escritos en un lenguaje entendible por personas a un lenguaje que la máquina entienda. Los traductores se dividen en: Intérpretes: que son traductores que toman un programa fuente, lo traducen y a continuación lo ejecutan. Compiladores: generan un programa equivalente que la máquina será capaz de interpretar.

El lenguaje de programación Java. Java surgió en 1991 cuando un grupo de ingenieros de Sun Microsystems trataron de diseñar un nuevo lenguaje de programación destinado a electrodomésticos. La historia va más o menos así: En 1991, Sun Microsystems financió un proyecto de investigación corporativo interno. Un resultado del proyecto fue la creación de un lenguaje basado en C y C++ que su creador, James Gosling, llamó Oak, inspirado por un roble (oak, en inglés) que crecía afuera de su ventana en Sun. Más tarde se descubrió que ya existía un lenguaje de programación llamado Oak. Un día cuando un grupo de empleados de Sun visitó una cafetería cerca, alguien sugirió el nombre Java (como se conoce también en inglés al café), y el nombre gusto mucho. Sun anunció formalmente a Java en una conferencia importante en mayo de 1995. Años después de su lanzamiento oficial, Java se ha convertido en un estándar de la industria, en un lenguaje de programación para desarrollo de aplicaciones tanto de propósito general como de Internet y también en un lenguaje para comenzar la formación en programación, al tener características adecuadas para el aprendizaje.

Características. El código fuente se guarda en un archivo con extensión .java Un compilador traduce el código fuente en código de byte, y lo guarda en un archivo con extensión .class Un programa puede ser compuesto de varios archivos Necesita de un intérprete (Java Virtual Machine -JVM) para poder ejecutar. Orientado a objetos. Multiplataforma. Ampliamente usado: o Web (Applets, Servlets) o Dispositivos móviles (J2ME) o Mundo empresarial (J2EE) Ventajas: o Básico, fácil de entender. o Portátil: el mismo código sirve para todos los sistemas operativos.
22

Algoritmos y lenguajes de programación

o Soporta interfaz gráfica de usuario (GUI). o Apropiado para programas en Internet . Desventajas: o La ejecución es más lenta que algunos otros lenguajes 3.3. Estructura básica de un programa. //importación de la librería para poder hacer uso de ventanas import javax.swing.JOptionPane; //definición de clase publica o accesible public class PrimeraAplicación { // programa principal de la clase public static void main(String args[]){ // escritura por pantalla
JOptionPane.showMessageDialog(null,"Esta es mi primera aplicación");

} } El nombre del archivo Java debe coincidir con el de la clase definida en él <NombreClase>.java

3.4. Datos. Representación formal de hechos, conceptos o instrucciones, adecuada para su comunicación, interpretación y procesamientos por seres humanos o medios automáticos. Tipos de Datos. Especificación de un dominio (rango de valores) y de un conjunto válido de operaciones a los que normalmente los traductores asocian un esquema de representación interna propio.

Todas las variables en el lenguaje Java deben tener un tipo de dato. El tipo de la variable determina los valores que la variable puede contener y las operaciones que se pueden realizar con ella. Tipos de datos en Java. Existen 8 tipos de datos primitivos o integrados: 4 tipos enteros (byte, short, int, long). 2 tipos de coma flotante (float, double). Booleano (boolean). Carácter (char).

23

Algoritmos y lenguajes de programación

Tipo byte short int long float double char boolean Identificadores.

Tamaño (en bits) 8 16 32 64 32 64 16 1

Rango -128 a 127 -32,768 a 32,767 -2,147,483,648 a -2,147,483,647 -9,223,372,036,854,775,808L a -9,223,372,036,854,775,807L +/-3.4E+38F (6-7 dígitos importantes) +/-1.8E+308 (15 dígitos importantes) Conjunto de caracteres Unicode ISO Verdadero o Falso

Los identificadores representan los datos de un programa (constantes, variables, tipos de datos). Un identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que nos permite accesar a su contenido. Ejemplo: Nombre Num_hrs Calif2 Reglas para formar un Identificador Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en blanco. Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del primer carácter. Se recomienda usar nombres pequeños. Deben ser 100% descriptivas en el nombre y tipo de información que almacenan. Constante. Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

Ejemplo: pi = 3.1416 Variable. Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato durante la ejecución de un proceso, su contenido puede cambia durante la ejecución del

24

Algoritmos y lenguajes de programación

programa. Para poder reconocer una variable en la memoria de la computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un algoritmo. Ejemplo: Area = Pi * Radio * Radio

Las variables son: Radio, Area y la constate es Pi Nombres de Variables Un programa se refiere al valor de una variable por su nombre. Por convención, en Java, los nombres de las variables empiezan con una letra minúscula (los nombres de las clases empiezan con una letra mayúscula). Un nombre de variable Java. 1. Debe ser un identificador legal de Java comprendido en una serie de caracteres Unicode. Unicode es un sistema de codificación que soporta texto escrito en distintos lenguajes humanos. Unicode permite la codificación de 34.168 caracteres. Esto le permite utilizar en sus programas Java varios alfabetos como el Japonés, el Griego, el Ruso o el Hebreo. Esto es importante para que los programadores pueden escribir código en su lenguaje nativo. 2. No puede ser el mismo que una palabra clave o el nombre de un valor booleano (true or false). 3. No deben tener el mismo nombre que otras variables cuyas declaraciones aparezcan en el mismo ámbito. La regla número 3 implica que podría existir el mismo nombre en otra variable que aparezca en un ámbito diferente. Por convención, los nombres de variables empiezan por un letra minúscula. Si una variable está compuesta de más de una palabra, como 'nombreDato' las palabras se ponen juntas y cada palabra después de la primera empieza con una letra mayúscula.

3.5. Operadores, operandos y expresiones. Expresiones. Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Por ejemplo: A + (B + 3) / C.

Cada expresión toma un valor que se determina tomando los valores de las variables y constantes implicadas y la ejecución de las operaciones indicadas.

25

Algoritmos y lenguajes de programación

Una expresión consta de operadores y operandos. Según sea el tipo de datos que manipulan, se clasifican las en: Aritméticas Relaciónales Lógicas Operadores. Son elementos que relacionan de forma diferente, los valores de una o mas variables y/o constantes. Es decir, los operadores nos permiten manipular valores. Tipos de Operadores Aritméticos Relaciónales Lógicos

Operadores Aritméticos. Los operadores aritméticos permiten la realización de operaciones matemáticas con los valores (variables y constantes). Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. Operando (Operador) Operando

Valor (constante o variable)

Operadores aritméticos + Suma – Resta * Multiplicación / División real % Residuo Ejemplos: 7 / 2 = 3.5 7%2=1 7 + 2/2 = 8 4 + 2 * 5 = 14

26

Algoritmos y lenguajes de programación

Prioridad de los Operadores Aritméticos. 1. Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con paréntesis anidados se evalúan de dentro a fuera, el paréntesis mas interno se evalúa primero. 2. Dentro de una misma expresión los operadores se evalúan en el siguiente orden. a. ^ Exponenciación b. *, /, %, Multiplicación, división, residuo. c. +, - Suma y resta. 3. Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda a derecha. Ejemplos: 4 + 2 * 5= 14 23 * 2 / 5 = 9.2 3 + 5 * (10 - (2 + 4)) = 23 0.35 + 5.09 - 14.0 / 40 = 5.09 2.1 * (1.5 + 3.0 * 4.1) = 28.98 Operadores Relaciónales. Se utilizan para establecer una relación entre dos valores. Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relaciónales comparan valores del mismo tipo (numéricos o cadenas). Tienen el mismo nivel de prioridad en su evaluación y tienen menor prioridad que los aritméticos. Operadores Relacionales > Mayor que < Menor que > = Mayor o igual que < = Menor o igual que !> Diferente = = Igual Ejemplos: Si: A = 10; A+B>C A-B<C A-B==C A * B !> C Ejemplos no lógicos: A<B<C 10 < 20 < 30 T < 30 (no es lógico porque tiene diferentes operandos). B = 20; C = 30 Falso Verdadero Falso Verdadero

27

Algoritmos y lenguajes de programación

Operadores Lógicos: Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos valores pueden ser resultado de una expresión relacional. Operadores Lógicos And Y Or O Not Negación

Tabla de verdad del Operador And Operando1 Operador Operando2 Resultado V Y V V V F F F V F F F F Tabla de verdad del Operador Or Operando1 Operador Operando2 Resultado V O V V V F V F V V F F F Tabla de verdad del Operador Not Operando Resultado V F F V Ejemplos: (nA < nB) and (nB < nC) (10<20) and (20<30) V Y V

V Prioridad de los Operadores Lógicos Not And Or
28

Algoritmos y lenguajes de programación

Prioridad de los Operadores en General 1. 2. 3. 4. 5. () ^ *, /, Mod, Not +, -, And >, <, > =, < =, < >, =, Or

Ejemplos: A = 10; B = 12; C = 13; D =10 ((A > B) F V F O (A < C)) V Y ((A = C) F F O (A > = B)) F

29

Algoritmos y lenguajes de programación

4. FUNCIONES
4.1. Definición. En Java una función es un modulo de un programa separado del cuerpo principal, que realiza una tarea específica y que puede regresar un valor a la parte principal del programa u otra función o procedimiento que la invoque. La forma general de una función es: tipodatoregresa Nom_fun(parametros) { cuerpo de instrucciones; instrucción return; } El tipo especifica el tipo de valor que la función regresara utilizando la instrucción return. Si no se especifica un tipo se asume de default que el tipo regresado es int. La lista de parámetros formales es una lista de variables separadas por comas (,) que almacenaran los valores que reciba la función, estas variables actúan como locales dentro del cuerpo de la función. Aunque no se ocupen parámetros los paréntesis son requeridos. La declaración de parámetros es la especificación de cada tipo de parámetro recibido. 4.2 Instrucción return Dentro del cuerpo de la función deber haber una instrucción return cuando menos, para regresar el valor, esta instrucción permite regresar datos. Es permitido poner más de un return en el cuerpo de instrucciones sobre todo en condiciones, pero solo un return se ejecutara. Ejemplo; if (suma >= 10) { return 10; } else { return 20; } Las funciones le entregan al programador dos beneficios importantes: 1. Permiten que las complejas tareas computacionales puedan ser subdivididas en fragmentos lo suficientemente pequeños para caber de manera cómoda dentro de un cerebro humano. 2. Estos le permiten que se les entreguen a estos fragmentos subdivididos nombres lógicos y comprensibles, para que puedan ser manipulados de forma competente por un único cerebro humano.

30

Algoritmos y lenguajes de programación

5. ESTRUCTURAS SELECTIVAS
Al finalizar la unidad usted podrá:

1. Crear construcción IF e IF/ELSE 2. Usar la construcción SWITCH
Los operadores relacionales permiten tomar una única decisión en función de múltiples condiciones. La especificación formal de algoritmos tiene realmente utilidad cuando el algoritmo requiere una descripción más complicada que una lista sencilla de instrucciones. Este es el caso cuando existen un número de posibles alternativas resultantes de la evaluación de una determinada condición. Estas estructuras se identifican porque en la fase de solución del problema existe algún punto en el cual es necesario establecer una pregunta, para decidir si ciertas acciones deben realizarse o no. 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. Las estructuras selectivas o alternativas se clasifican en: a) Simples b) Dobles c) Anidadas d) Múltiples 5.1. 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 Si <condición> Entonces <acción Si> fin_si Inglés If <condición> then <acción Si> endif

31

Algoritmos y lenguajes de programación

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 Ejemplo de un programa en Java: //Este programa al dar tu edad te dice si eres mayor o menor de edad. //Para este programa se utiliza la sentencia if(condicion) o en Pseudocodigo Si(condicion) y else o sino. import javax.swing.J Option Pane; class ifcondicional{ public static void main(String args[]){ //Declaracion de variables //Variable tipo cadena String a; //Variable Tipo entero. int edad; //En esta parte del programa se pide al usuario que nos de su edad a=JOptionPane.showInputDialog(“Introduce Tu Edad:”); edad=Integer.parseInt(a); //En esta parte se utiliza la sentencia if con la condicion de si la edad es >= 18 se imprimirá el msn eres mayor de edad, if(edad>=18){ System.out.println(“Eres Mayor De Edad”); } //Else solo se ejecutara cuando la edad se menor a 18 y la condicion anterios no se cumpla else{ System.out.println(“Eres Menor De Edad”); } } }

32

Algoritmos y lenguajes de programación

5.2 Selectivas anidadas La estructura selectiva es anidada cuando dentro de alguna acción de ésta, se encuentra otra estructura selectiva y la(s) acción(es) de esta puede contener otra selectiva y esta otra más; es decir cuando después de una decisión se debe tomar otra, después otra y así sucesivamente. Permite introducir más de una expresión de comparación. Si la primera condición no se cumple, se compara la segunda y así sucesivamente. En el caso de que no se cumpla ninguna de las comparaciones se ejecutan las sentencias correspondientes al else. If (booleanExpresion1){ Statements1; } else If (booleanExpresion2){ Statements2; } else If (booleanExpresion3){ Statements3; } else if Las llaves {} sirven para agrupar en un bloque las sentencias que se han de ejecutar, y no son necesarias si solo hay una sentencia dentro del if. Las sentencias incluidas en el else en caso de no cumplirse la expresión de comparación (false). 5.3 Selectiva múltiple En ingles switch La sentencia switch se utiliza para realizar sentencias condicionalmente basadas en alguna expresión. Por ejemplo, supón que tu programa contiene un entero llamado mes cuyo valor indica el mes en alguna fecha. Que también quieres mostrar el nombre del mes basándose en su número entero equivalente. Podrías utilizar la sentencia switch de Java para realizar esta tarea. int mes; switch (mes) { case 1: System.out.println(“Enero”); break; case 2: System.out.println(“Febrero”);break; case 3: System.out.println(“Marzo”); break; case 4: System.out.println(“Abril”); break; case 5: System.out.println(“May0″); break; case 6: System.out.println(“Junio”); break; case 7: System.out.println(“Julio”); break; case 8: System.out.println(“Agosto”); break; case 9: System.out.println(“Septiembre”); break; case 10: System.out.println(“Octubre”); break; case 11: System.out.println(“Noviembre”); break;
33

Algoritmos y lenguajes de programación

case 12: System.out.println(“Diciembre”); break; } La sentencia switch evalúa su expresión, en este caso el valor de mes, y ejecuta la sentencia case apropiada. Cada sentencia case debe ser única y el valor proporcionado a cada sentencia case debe ser del mismo tipo que el tipo de dato devuelto por la expresión proporcionada a la sentencia switch. Otro punto de interés en la sentencia switch son las sentencias break después de cada case. La sentencia break hace que el control salga de la sentencia switch y continúe con la siguiente línea. El formato es: switch ( expresion_entera ) { case valor_entero: sentencia; break; case valor_entero: sentencia; break; ... default: sentencia; } Cuidado: en el switch la expresión que se evalúa no es una expresión booleana como en el if-else, sino una expresión entera. Se ejecuta el bloque case cuyo valor coincida con el resultado de la expresión entera de la clausula switch. Se ejecuta hasta que se encuentra una sentencia break o se llega al final del switch. Si ningún valor de case coincide con el resultado de la expresión entera se ejecuta el bloque default(si está presente). default y break son opcionales.

34

Algoritmos y lenguajes de programación

6. ESTRUCTURAS DE REPETICIÓN
6.1 Repetir mientras (WHILE) Es una de las estructuras de repetición empleada en la programación de algoritmos. While permite al programador especificar las veces que se repita una acción (ejecutando repetidamente el mismo bloque de código) mientras una condición se mantenga verdadera (hasta que se cumpla una condición de terminación). Hay cuatro partes en cualquier bucle. Inicialización, cuerpo, iteración y terminación. La forma del while en lenguaje Java es: [inicialización;] while(condición){ cuerpo; iteración; } Mientras la condición se mantenga verdadera, el bloque de instrucciones dentro de las llaves se ejecutará "x" cantidad de veces. Es necesario que alguna vez la condición se haga falsa, pues de lo contrario se entraría en un ciclo infinito de repeticiones (bucle infinito) y el programa se consideraría bloqueado. Por lo tanto es necesario que en el bloque de instrucciones dentro de la estructura while, se ejecute alguna acción que en algún momento haga que la condición sea falsa. Un ejemplo del funcionamiento de la estructura de repetición while: int num; num = 0; while (num<=10) { System.out.println(“Repetición numero ”+ num); num = num + 1; // num++; } El código anterior imprimirá en pantalla: Repetición numero 0 Repetición numero 1 Repetición numero 2 Repetición numero 3 Repetición numero 4 Repetición numero 5 Repetición numero 6 Repetición numero 7 Repetición numero 8 Repetición numero 9 Repetición numero 10

35

Algoritmos y lenguajes de programación

¿Por qué? Vemos que iniciamos la variable del tipo entero (int) num en cero. Luego, se evalúa por primera vez si es menor o igual a 10, al ser verdadera, se ejecuta el bloque dentro del while por primera vez. Se imprime Repetición numero 0, pues el valor dentro de num es cero. Luego el proceso se repite hasta que num con valor 10 se le suma 1, y toma el valor 11. Se evalúa la condición del while y se determina que NO se cumple, por lo tanto, salta el bloque y sigue la ejecución del programa. Ejercicios de while. 1. Mostrar la conversión de 1 hasta 10 dólares en pesos, dólar tras dólar, suponiendo que el tipo de cambio es 12.76 pesos/dolar. public class Cambio { public static void main(String[] args) { int dolar = 1; while (dolar<=10) { System.out.println(dolar +" dolares = " + dolar*12.76 +" pesos"); dolar++; } } } 2. Una persona desea invertir $1000.00 en un banco, el cual le otorga un 2% de interés mensual. Cual será la cantidad de dinero que esta persona tendrá al cabo de un año si todo el dinero lo reinvierte?. public class Interes { public static void main(String[] args) { double dinero = 1000; int mes = 1; while (mes<=12) { dinero = dinero * 1.02; mes++; } System.out.println(dinero); } }

6.2 Repetir hasta (DO – WHILE) Es lo mismo que en el caso anterior pero aquí como mínimo siempre se ejecutara el cuerpo una vez, en el caso anterior es posible que no se ejecute ni una sola vez. Sintaxis en Java: La forma de esta estructura do – while es: [inicialización;] do{ cuerpo;
36

Algoritmos y lenguajes de programación

iteración; }while(condición); Veamos un ejemplo en donde se imprimen los números del 1 al 10 usando esta estructura. Al final también se imprime en pantalla el valor contenido en la variable principal a fin de mostrar cuál es su valor final. num = 1; do { System.out.println(“Numero “+ num); num = num + 1; //num++; } while (num<=10); printf(“La variable num vale: ”+ num); Esto imprime en pantalla: Numero 1 Numero 2 Numero 3 Numero 4 Numero 5 Numero 6 Numero 7 Numero 8 Numero 9 Numero 10 La variable num vale: 11 Ejercicios de do-while. 1. Este programa lo que hace es ir sumando n1 mientras que los valores no sean superiores a 100. class fibo{ public static void main(String args[]){ int n1=0; do{ n1++; System.out.println(n1+" "); }while(n1<100); } } 2. Realiza un programa que nos imprima los números pares del 1 al 300. int n1=1; do{ if (n1%2 ==0 ) System.out.println(“Valor par = ”+ n1); n1++; }while(n1<=300);

37

Algoritmos y lenguajes de programación

6.3 Repetir desde (FOR) El ciclo FOR, realiza las mismas operaciones que en los casos anteriores pero la sintaxis es una forma compacta. Es una de las estructuras de repetición empleada en la programación de algoritmos para repetir un código (una o más sentencias de programación) dependiendo de un contador. La sintaxis de esta instrucción en lenguaje Java es:

for (inicialización; condición; iteración) { sentencia1; sentencia2; } Ejemplo de código en Java: int contador; for (contador = 0; contador<10; contador++) { System.out.println(“Repetición numero ”+ contador); } Primero se crea la variable contador de tipo entero (será la variable de control en el for). Luego se ejecuta la estructura for iniciando la variable contador en 0. Luego se verifica que se cumple la condición contador<10 y se ejecuta el bloque dentro de la estructura, o sea, imprime en pantalla Repetición número 0. Luego la variable contador es incrementada en uno con la expresión contador++ y el ciclo se inicia otra vez. La variable contador ahora vale 1, por lo tanto se verifica la condición y se vuelve a ejecutar el código. Este proceso se ejecuta hasta que contador toma el número 10 y la condición se hace falsa y no ejecuta el bloque. Visualizando en pantalla: Repetición numero 0 Repetición numero 1 Repetición numero 2 Repetición numero 3 Repetición numero 4 Repetición numero 5 Repetición numero 6 Repetición numero 7 Repetición numero 8 Repetición numero 9

38

Algoritmos y lenguajes de programación

Ejercicios de for. 1. Realizar un programa en Java que muestre números del 1 al 100. Utilizando un bucle de tipo FOR. Public class numeros{ public static void main(String args[]){ int n1; for (n1=0;n1<100;n1++) System.out.print("Numero "+ n+1); } } 2. Visualizar en pantalla la tabla de multiplicar del 9. public class multiplica{ public static void main(String args[]){ int n1; System.out.print("Tabla del 9”); for (n1=0;n1<10;n1++) System.out.print("multiplicar 9 X ”+ n+1+” = ”+ (n+1)*9); } }

39

Algoritmos y lenguajes de programación

7. ARREGLOS
7.1. Definición Los arreglos en Java son dinámicos, pero no extensibles, lo cual significa que deben ser creados con el tamaño que tendrán hasta el final de su vida. Un arreglo se declara de la siguiente forma: <tipo>[] <nombre>; O sea, para declarar, por ejemplo, un arreglo de números enteros utilizaremos la siguiente sentencia: int[] arrInt; Es importante notar que el arreglo aún no ha sido creado, sino meramente declarado. Para crear el arreglo (reservar su memoria e inicializarlo) deberemos recurrir al operador new: arrInt = new int[10]; Este comportamientodebe comprenderse de esta forma: en Java todo es un objeto, y los objetos deben ser creados mediante el operador new. El caso de los arreglos no es diferente, el tipo de datos del arreglo (int[] en este caso) es una clase y cada una de sus instancias debe ser creada explícitamente, el tamaño puede pensarse como un parámetro al constructor de la clase. A partir de este momento podemos utilizar arrInt como un arreglo de cualquier otro lenguaje. Una de las características que hacen de Java un entorno de programación seguro, y que se relaciona con el manejo de los arreglos es que el lenguaje no permite la indexación de arreglos fuera de rango, o sea, una asignación de este tipo generará una excepción: ArrInt[25] = 1; Otra forma de declararlos es la siguiente: UNIDIMENSIONALES: tipo nombre_array[]=new tipo[nº]; tipo nombre_array[]={valores}; BIDIMENSIONALES: tipo nombre_array[][]=new tipo[nº][nº]; tipo nombre_array[][]={valores}; 7.2. Características: Algunas de sus características más importantes de los arrays son las siguientes:
40

Algoritmos y lenguajes de programación

1. Los arrays se crean con el operador new seguido del tipo y número de elementos. 2. Se puede acceder al número de elementos de un array con la variable miembro implícita length (por ejemplo, vect.length). 3. Se accede a los elementos de un array con los corchetes [] y un índice que varía de length-1. 4. Se pueden crear arrays de objetos de cualquier tipo. En principio un array de objetos es un array de referencias que hay que completar llamando al operador new. 5. Los elementos de un arrayse inicializan al valor por defecto del tipo correspondiente (cero para valores numéricos, el carácter nulo para char, false para boolean, null para Strings y para referencias). 6. Como todos los objetos, los arrays se pasan como argumentos a los métodos por referencia. 7. Se pueden crear arrays anónimos (por ejemplo, crear un nuevo array como argumento actual en la llamada a un método). 7.3 Inicialización de arrays: 1. Los arrays se pueden inicializar con valores entre llaves {...} separados por comas. 2. También los arrays de objetos se pueden inicializar con varias llamadas a new dentro de unas llaves {...}. 3. Si se igualan dos referencias a un array no se copia el array, sino que se tiene un array con dos nombres, apuntando al mismo y único objeto. 4. Creación de una referencia a un array. Son posibles dos formas: double[] x; // preferible double x[]; 5. Creación del array con el operador new: x = new double[100]; 6. Las dos etapas 4 y 5 se pueden unir en una sola: double[] x = new double[100]; Sumar el total de los valores de los elementos de un arreglo 01 // Sumar el total de los valores de los elementos de un arreglo. 02 import javax.swing.*; 03 04 public class SumarArreglo { 05 06 public static void main( String args[] ) 07 {
41

Algoritmos y lenguajes de programación

08 int arreglo[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 09 int total = 0; 10 11 // sumar el valor de cada elemento al total 12 for ( int contador = 0; contador < arreglo.length; contador++ ) 13 total += arreglo[ contador ]; 14 15 JOptionPane.showMessageDialog( null, 16 "Total de elementos del arreglo: " + total, 17 "Sumar los elementos de un arreglo", 18 JOptionPane.INFORMATION_MESSAGE ); 19 20 System.exit( 0 ); 21 22 } // fin de main 23 24 } // fin de la clase SumarArreglo

42

Algoritmos y lenguajes de programación

BIBLIOGRAFÍA

“Introducción a la programación”. Universidad Autónoma Metropolitana. Unidad Azcapotzalco http://luda.uam.mx/curso1/index.htm Aguilar, Luis Joyanes. “Fundamentos de programación: algoritmos, estructuras de datos y objetos”. McGraw-Hill, Interamericana García de Jalón Javier. “Aprenda Java como si estuviera en primero”. Escuela Superior de Ingeniero Campus Tecnológico de la Universidad de Navarra. Flores Rosales Germán. “Como programar en Java”. “Programación en Java II” Serie Shawn. McGraw-Hill http://www.programacionfacil.com/java_windows:ciclo_do_while http://www.programacionfacil.com/java:ciclo_for

43

Sign up to vote on this title
UsefulNot useful