Sie sind auf Seite 1von 64

Manual de Fundamentos de Programacin

ndice Unidad 1 Conceptos Bsicos ................................................................................................................... 3


1.1 Clasificacin del software de: sistemas y aplicacin ...................................................................................................... 4 1.2 Algoritmo .................................................................................................................................................................... 4 1.3 Lenguaje de Programacin ........................................................................................................................................... 4 1.4 Programa..................................................................................................................................................................... 4 1.5 Programacin .............................................................................................................................................................. 5 1.6 Paradigmas de programacin ....................................................................................................................................... 5 1.7 Editores de texto ......................................................................................................................................................... 6 1.8 Compiladores e intrpretes .......................................................................................................................................... 6 1.9 Ejecutables .................................................................................................................................................................. 7 1.10 Consola de lnea de comandos ................................................................................................................................... 7

Unidad 2 Algoritmos ............................................................................................................................... 9


2.1 Anlisis de problemas ................................................................................................................................................ 10 2.2 Representacin de algoritmos: grfica y pseudocdigo............................................................................................... 10 2.3 Diseo de algoritmos aplicados a problemas. ............................................................................................................. 12 2.4 Diseo algortmico de funciones ................................................................................................................................ 13

Unidad 3 Introduccin a la Programacin ............................................................................................ 17


3.1 Caractersticas del lenguaje de programacin ............................................................................................................. 18 3.2 Estructura bsica de un programa. ............................................................................................................................. 18 3.3 Traduccin de un programa: compilacin, enlace de un programa, errores en tiempo de compilacin y 3.4 Ejecucin de un programa. .............................................................................................................................................................. 20 3.5 Elementos del lenguaje: datos, literales y constantes, identificadores, variables, parmetros, operadores, entrada y salida de datos................................................................................................................................................................. 21 3.6 Errores en tiempo de ejecucin. ................................................................................................................................. 38

Unidad 4 Control de flujo. ..................................................................................................................... 40


Elabor: Ing. Fabiola Fuentes Herrera

Manual de Fundamentos de Programacin

Introduccin.................................................................................................................................................................... 41 4.1 Estructuras secuenciales. ........................................................................................................................................... 42 4.2 Estructuras selectivas: simple, doble y mltiple. ......................................................................................................... 43 4.4 Diseo e implementacin de funciones ...................................................................................................................... 50

Unidad 5 Arreglos ................................................................................................................................. 54


Introduccin.................................................................................................................................................................... 55 5.1 Unidimensionales: conceptos bsicos, operaciones y aplicaciones.............................................................................. 55 5.2 Multidimensionales: conceptos bsicos, operaciones y aplicaciones. .......................................................................... 57 Fuentes de Informacin................................................................................................................................................... 64

Elabor: Ing. Fabiola Fuentes Herrera

Manual de Fundamentos de Programacin

Unidad 1 Conceptos Bsicos


Unidad 1 Conceptos Bsicos

Elabor: Ing. Fabiola Fuentes Herrera

Manual de Fundamentos de Programacin

1.1 Clasificacin del software de: sistemas y aplicacin

1.2 Algoritmo
Un algoritmo es un conjunto de acciones que determinan la secuencia de los pasos a seguir para resolver un problema especfico.

1.3 Lenguaje de Programacin


Un Lenguaje de Programacin es un conjunto de reglas, notaciones, smbolos y/o caracteres que permiten a un programador poder expresar el procesamiento de datos y sus estructuras en la computadora. Cada lenguaje posee sus propias sintaxis. Tambin se puede decir que un programa es un conjunto de rdenes o instrucciones que resuelven un problema especfico basado en un Lenguaje de Programacin. Existen varias clasificaciones para los lenguajes de programacin.

1.4 Programa
Es un conjunto de instrucciones que sigue la computadora para alcanzar un resultado especfico. Un programa se escribe en un lenguaje de programacin (Java, C, C#,etc).

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 1 Conceptos Bsicos

Manual de Fundamentos de Programacin

1.5 Programacin
La programacin es el proceso de disear, codificar, depurar y mantener el cdigo fuente de programas computacionales.

1.6 Paradigmas de programacin


Existe una infinidad de definiciones de lo que es un paradigma. Un paradigma es un determinado marco desde el cual miramos el mundo, lo comprendemos, lo interpretamos e intervenimos sobre l. Abarca desde el conjunto de conocimientos cientficos que imperan en una poca determinada hasta las formas de pensar y de sentir de la gente en un determinado lugar y momento histrico. Adam Smith define paradigma, en su libro Los poderes de la mente, como un conjunto compartido de suposiciones. Es la manera como percibimos el mundo: agua para el pez. El paradigma nos explica el mundo y nos ayuda a predecir su comportamiento". En nuestro contexto, el paradigma debe ser concebido como una forma aceptada de resolver un problema en la ciencia, que ms tarde es utilizada como modelo para la investigacin y la formacin de una teora. Tambin, el paradigma debe ser concebido como un conjunto de mtodos, reglas y generalizaciones utilizadas conjuntamente por aquellos entrenados para realizar el trabajo cientfico de investigacin. En nuestro contexto, los paradigmas de programacin nos indican las diversas formas que, a lo largo de la evolucin de los lenguajes, han sido aceptadas como estilos para programar y para resolver los problemas por medio de una computadora. Se muestran a continuacin un resumen de los paradigmas de uso ms extendido en programacin.

Programacin por procedimientos Es el paradigma original de programacin y quiz todava el de uso ms comn. En l, el programador se concentra en el procesamiento, en el algoritmo requerido para llevar a cabo el cmputo deseado. Los lenguajes apoyan este paradigma proporcionando recursos para pasar argumentos a las funciones y devolviendo valores de las funciones. FORTRAN es el lenguaje de procedimientos original, Pascal y C son inventos posteriores que siguen la misma idea. La programacin estructurada se considera como el componente principal de la programacin por procedimientos. Unidad 1 Conceptos Bsicos

Programacin modular Con los aos, en el diseo de programas se dio mayor nfasis al diseo de procedimientos que a la organizacin de la informacin. Entre otras cosas esto refleja un aumento en el tamao de los programas. La programacin modular surge como un remedio a esta situacin. A menudo se aplica el trmino mdulo a un conjunto de procedimientos afines junto con los datos que manipulan. As, el paradigma de la programacin modular consiste en: a) Establecer los mdulos que se requieren para la resolucin de un problema. b) Dividir el programa de modo que los procedimientos y los datos queden ocultos en mdulos. Elabor: Ing. Fabiola Fuentes Herrera

Manual de Fundamentos de Programacin

Este paradigma tambin se conoce como principio de ocultacin de procedimientos y datos. Aunque C++ no se diseo especficamente para desarrollar la programacin modular, su concepto de clase proporciona apoyo para el concepto de mdulo.

Abstraccin de datos Los lenguajes como ADA y C++ permiten que un usuario defina tipos que se comporten casi de la misma manera que los tipos definidos por el lenguaje. Tales tipos de datos reciben a menudo el nombre de tipos abstractos o tipos definidos por el usuario. El paradigma de programacin sobre este tipo de datos consiste en: a) Establecer las caractersticas de los tipos de datos abstractos se desean definir. b) Proporcionar un conjunto completo de operaciones vlidas y tiles para cada tipo de dato. Cuando no hay necesidad de ms de un objeto de un tipo dado, no es necesario este estilo y basta con el estilo de programacin de ocultamiento de datos por medio de mdulos.

Programacin orientada a objetos (OOP) El problema con la abstraccin de datos es que no hay ninguna distincin entre las propiedades generales y las particulares de un conjunto de objetos. Expresar esta distincin y aprovecharla es lo que define a la OOP a travs del concepto de herencia. El paradigma de la programacin orientada a objetos es, entonces, a) Definir que clases se desean b) Proporcionar un conjunto completo de operaciones para cada clase c) Indicar explcitamente lo que los objetos de la clase tienen en comn empleando el concepto de herencia En algunas reas las posibilidades de la OOP son enormes. Sin embargo, en otras aplicaciones, como las que usan los tipos aritmticos bsicos y los clculos basados en ellos, se requiere nicamente la abstraccin de datos y/o programacin por procedimientos, por lo que los recursos necesarios para apoyar la OOP podran salir sobrando.

1.7 Editores de texto


Es un programa que permite crear y modificar archivos digitales compuestos nicamente por texto sin formato, conocidos comnmente como archivos de texto o texto plano Unidad 1 Conceptos Bsicos

1.8 Compiladores e intrpretes


Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o simplemente texto. Este proceso de traduccin se conoce como compilacin. Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora. Elabor: Ing. Fabiola Fuentes Herrera

Manual de Fundamentos de Programacin

En ciencias de la computacin, intrprete o interpretador es un programa informtico capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripcin en un lenguaje de programacin al cdigo de mquina del sistema, los intrpretes slo realizan la traduccin a medida que sea necesaria, tpicamente, instruccin por instruccin, y normalmente no guardan el resultado de dicha traduccin. Usando un intrprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables especficos a cada sistema. Los programas interpretados suelen ser ms lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son ms flexibles como entornos de programacin y depuracin (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o aadir mdulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la mquina donde se ejecuta el intrprete, sino del propio intrprete (lo que se conoce comnmente como mquina virtual). Para mejorar el desempeo, algunas implementaciones de programacin de lenguajes de programacin pueden interpretar o compilar el cdigo fuente original en una ms compacta forma intermedia y despus traducir eso al cdigo de mquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los archivos fuente guardados en esta representacin intermedia (ej. Python, UCSD Pascal y Java). Comparando su actuacin con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intrprete corresponde al intrprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito. En la actualidad, uno de los entornos ms comunes de uso de los intrpretes informticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.

1.9 Ejecutables
En informtica, un ejecutable o archivo ejecutable, es tradicionalmente un archivo binario cuyo contenido se interpreta por el ordenador como un programa. Generalmente, contiene instrucciones en cdigo mquina de un procesador en concreto, pero tambin puede contener bytecode que requiera un intrprete para ejecutarlo. Adems suele contener llamadas a funciones especficas de un sistema operativo (llamadas al sistema). Dependiendo del tipo de que se traten las instrucciones, hablaremos de ejecutables portables (se pueden ejecutar en varias plataformas) y no portables (destinado a una plataforma concreta). Por ejemplo, un ejecutable Java es portable ya que utiliza un bytecode no asociado a un procesador en concreto.

1.10 Consola de lnea de comandos


Es un mtodo que permite a las personas dar instrucciones a algn programa informtico por medio de una lnea de texto simple. Debe notarse que los conceptos de CLI, Shell y Emulador de Terminal no son lo mismo, aunque suelen utilizarse como sinnimos. La Lnea de Comandos de Windows es una implementacin de la consola MS-DOS para la interfaz grfica de las diversas versiones Microsoft Windows.

La lnea de comandos ha estado presente en forma activa en el sistema operativo Windows desde la versin 3.0 hasta la Elabor: Ing. Fabiola Fuentes Herrera

Unidad 1 Conceptos Bsicos

Manual de Fundamentos de Programacin

versin Windows 98, donde los programas de la interfaz grfica eran ejecutados por medio de la consola y sobre la cual todo el sistema operativo era montado. A partir de la versin de Windows XP, la lnea de comandos pas a segundo plano como un complemento de sistema, sin que perdiera la funcionalidad de la misma.

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 1 Conceptos Bsicos

Manual de Fundamentos de Programacin

Unidad 2 Algoritmos
Unidad 2 Algoritmos

Elabor: Ing. Fabiola Fuentes Herrera

Manual de Fundamentos de Programacin

2.1 Anlisis de problemas


Regresando al tema 1.2 tenemos que un algoritmo es un conjunto de acciones que determinan la secuencia de los pasos a seguir para resolver un problema especfico. Sus pasos deben estar definidos con precisin de forma que no existan ambigedades que den origen a elegir una opcin equivocada. Los algoritmos son finitos; es decir, su ejecucin termina en un nmero determinado de pasos. La mayora de los algoritmos de utilidad al programador poseen 3 partes principales:

Entrada de Datos

Algoritmo

Procesamiento de Datos

Salida de Resultados

2.2 Representacin de algoritmos: grfica y pseudocdigo


Los algoritmos pueden representarse a travs de un conjunto de palabras por medio de las cuales se puede representar la lgica de un programa. Este conjunto de palabras constituyen lo que se conoce como pseudocdigo.

Adems, los algoritmos se pueden representar grficamente a travs de un diagrama de flujo. Ambas herramientas se describen a continuacin.

Diagramas de flujo Un diagrama de flujo es una representacin grfica de un algoritmo o de una parte del mismo. La ventaja de utilizar un diagrama de flujo es que se le puede construir independientemente del lenguaje de programacin, pues al momento de llevarlo a cdigo se puede hacer en cualquier lenguaje. Dichos diagramas se construyen utilizando ciertos smbolos de uso especial como son rectngulos, valos, pequeos crculos, etc.; estos smbolos estn conectados entre s por flechas conocidas como lneas de flujo. A continuacin se presentan estos smbolos y su significado.

Smbolos y su Significado

Terminal. Representa el inicio y fin de un programa.

Proceso. Son acciones que el programa tiene que realizar

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 2 Algoritmos

10

Manual de Fundamentos de Programacin

Decisin. Indica operaciones lgicas o de comparacin.

Entrada. Nos permite ingresar datos.

Salida. Es usado para indicar salida de resultados

Selector mltiple. Representa una decisin con mltiples alternativas.

Conector. Enlaza dos partes cualesquiera de un programa

Lnea de flujo. Indica direccin de flujo del diagrama. Las flechas de flujo no deben cruzarse. Los diagramas se leen de arriba hacia abajo y de izquierda a derecha.

Conector fuera de pgina. Representa conexin entre partes del algoritmo representadas en pginas diferentes.

Reglas 1. 2. 3. 4. 5. 6. 7. 8. Todo diagrama debe de tener un inicio y un fin Las lneas utilizadas para indicar la direccin del flujo del diagrama deben ser rectas, verticales y/o horizontales. Todas las lneas utilizadas para indicar la direccin del flujo del diagrama deben estar conectadas. La conexin puede ser a un smbolo que exprese lectura, proceso, decisin, impresin, conexin o fin de diagrama. El diagrama de flujo debe ser construido de arriba hacia abajo (Top-down) y de izquierda a derecha (right to left) La notacin utilizada en el diagrama de flujo debe ser independiente del lenguaje de programacin. La solucin presentada en el diagrama puede escribirse posteriormente y fcilmente en diferentes lenguajes de programacin. Es conveniente cuando realizamos una tarea compleja poner comentarios que expresen o ayuden a en tender lo que hicimos. Si el diagrama de flujo requiriera ms de una hoja para su construccin, debemos utilizar los conectores adecuados y enumerar las pginas convenientemente. No puede llegar ms de una lnea a un smbolo

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 2 Algoritmos

11

Manual de Fundamentos de Programacin

Pseudocdigo A continuacin se muestran algunos ejemplos de palabras utilizadas para construir algoritmos en pseudocdigo. PALABRA ABRE CASO CIERRA ENTONCES ESCRIBE FIN HASTA HAZ INICIO LEER MIENTRAS NO O O - BIEN PARA SI USUAL Y { } <= UTILIZACIN Abre un archivo Seleccin entre mltiples alternativas Cierra un archivo Complemento de la seleccin SI ENTONCES Visualiza un dato en pantalla Finaliza un bloque de instrucciones Cierra la iteracin HAZ HASTA Inicia la iteracin HAZ HASTA Inicia un bloque de instrucciones Leer un dato del teclado Inicia la iteracin mientras Niega la condicin que le sigue Disyuncin lgica Complemento opcional de la seleccin SI ENTONCES Inicia un nmero fijo de iteraciones Inicia la seleccin SI-ENTONCES Opcional en la instruccin CASO Conjuncin lgica Inicio de comentario Fin de comentario Asignacin

2.3 Diseo de algoritmos aplicados a problemas.


Para llegar a la realizacin de un programa es necesario el diseo previo de algoritmo, de modo que sin algoritmo no puede existir un programa.

Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la computadora que lo ejecuta. Unidad 2 Algoritmos

Caractersticas de algoritmo La resolucin de un problema exige el diseo de un algoritmo que resuelva el problema, como lo muestra la siguiente figura:

Elabor: Ing. Fabiola Fuentes Herrera

12

Manual de Fundamentos de Programacin

Pasos para la resolucin de un problema 1.- Diseo del algoritmo que describe la secuencia ordenada de pasos sin ambigedades- que conducen a la solucin de un problema dado (Anlisis del problema y desarrollo del algoritmo). 2.- Expresar el algoritmo como un programa en un lenguaje adecuado. (Fase de codificacin). 3.- Ejecucin y validacin del programa por la computadora.

Caractersticas de los algoritmos Un algoritmo debe: 1. 2. 3. ser preciso e indicar el orden de realizacin de cada paso. estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. ser finito. Si se sigue un algoritmo, se debe terminar en algn momento; o sea, debe tener un nmero finito de pasos.

Existen dos herramientas utilizadas conceptualmente para disear algoritmos: los diagramas de flujo y el pseudocdigo.

2.4 Diseo algortmico de funciones

Introduccin La programacin modular permite la descomposicin de un problema en un conjunto de subproblemas independientes entre s, ms sencillos de resolver y que pueden ser tratados separadamente unos de otros. Mdulo Uno de los elementos principales de programacin utilizados en la representacin de cada mdulo es la subrutina. Una subrutina es un conjunto de instrucciones de cmputo que realizan una tarea. Un programa principal llama a estos mdulos a medida que se necesitan. Un mdulo es un segmento, rutina, subrutina, subalgoritmo, procedimiento o funcin, que puede definirse dentro de un algoritmo con el fin de ejecutar una tarea especfica y puede ser llamada o invocada desde el algoritmo principal cuando sea necesario. Los mdulos son independientes en el sentido de que ningn mdulo puede tener acceso directo a cualquier otro mdulo, con excepcin del mdulo al que llama y sus propios submdulos. Sin embargo, los resultados producidos por un mdulo pueden ser utilizados por cualquier otro mdulo cuando se transfiera a ellos el control. Los mdulos tienen una entrada y una salida. Se pueden tomar decisiones dentro de un mdulo que tenga repercusin en todo el flujo, pero el salto debe ser nicamente hacia el programa principal. Al descomponer un programa en mdulos independientes ms simples se conoce tambin como el mtodo de "Divide y vencers".

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 2 Algoritmos

13

Manual de Fundamentos de Programacin

El problema principal es denominado controlador o conductor (drive) y la solucin de los subproblemas son conocidos como procedimientos (subrutinas) o funciones. Se dice que el programa principal invoca al subprograma, el subprograma ejecuta la tarea y luego devuelve el control al programa.

Un subprograma puede llamar a su vez a sus propios subprogramas

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 2 Algoritmos

14

Manual de Fundamentos de Programacin

Funciones La funcin es una estructura autnoma similar a los mdulos. La diferencia radica en que la funcin se usa para devolver un solo valor de un tipo de dato simple a su punto de referencia. La funcin se relaciona especificando su nombre en una expresin, como si fuera una variable ordinaria de tipo simple. Las funciones se dividen en estndares y definidas por el usuario. - Estndar: Son funciones proporcionadas por cualquier lenguaje de programacin de alto nivel, y se dividen en aritmticas y alfabticas. - Definidas por el usuario: son funciones que puede definirlas el programador con el propsito de ejecutar alguna funcin especfica, y que por lo general se usan cuando se trata de hacer algn clculo que ser requerido en varias ocasiones en la parte principal del algoritmo.

Declaracin de funciones Consta de una cabecera, seguido de la palabra (funcin) y del nombre del argumento de la funcin despus ira el cuerpo que es una serie de acciones cuya ejecucin har que se asigne un valor al nombre de la funcin, esto determina el resultado que ha de devolver al programa.

Invocacin de las funciones. Una funcin puede ser llamada de la siguiente forma: Nombre_funcion: funcin que llama Lista de parmetros actuales: constantes variable , expresiones. Cada vez que se llama a una funcin desde el algoritmo principal se establece una correspondencia entre los parmetros formales y los parmetros actuales. Una llamada a la funcin implica los siguientes pasos: 1. 2. 3. A cada parmetro formal se le asigna el valor real de su correspondiente parmetro actual. Se ejecuta el cuerpo de acciones de la funcin. Se devuelve el valor de la funcin y se retorna al punto de llamada. mbito: Variables locales y globales Segn el lugar donde son declaradas puede haber dos tipos de variables: Unidad 2 Algoritmos

Globales: las variables permanecen activas durante todo el programa. Se crean al iniciarse ste y se destruyen de la memoria al finalizar. Pueden ser utilizadas en cualquier procedimiento o funcin. Locales: las variables son creadas cuando el programa llega a la funcin o procedimiento en la que estn definidas. Al finalizar la funcin o el procedimiento, desaparecen de la memoria. Si dos variables, una global y una local, tienen el mismo Elabor: Ing. Fabiola Fuentes Herrera

15

Manual de Fundamentos de Programacin

nombre, la local prevalecer sobre la global dentro del mdulo en que ha sido declarada. Dos variables locales pueden tener el mismo nombre siempre que estn declaradas en funciones o procedimientos diferentes.

Comunicacin con subprogramas: Parmetros por Valor: Son los parmetros que pueden recibir valores pero que no pueden devolverlos. Es una variable global que se conecta con una variable local mediante el envo de su valor, despus de lo cual ya no hay relacin. Lo que le sucede a la variable local no afectar a la global. Cuando un parmetro actual se pasa por valor, el subprograma hace una copia del valor de ste en una posicin de memoria idntica en tamao pero distinta en ubicacin a la del parmetro actual y la asigna al parmetro formal correspondiente. Como el subprograma trabaja a partir de sus parmetros formales, si durante la ejecucin se modifica el valor de un parmetro formal correspondiente a un paso por valor, el contenido de la posicin de memoria del parmetro actual no se ver alterado. Parmetros por Variable: Son los que pueden recibir y devolver valores. Son variables globales que se conectan con una local a travs de su contenido; al establecerse dicha conexin las variables se convierten en sinnimos, lo que afecte a la variable local le suceder a la variable global.

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 2 Algoritmos

16

Manual de Fundamentos de Programacin

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 3 Introduccin a la Programacin

Unidad 3 Introduccin a la Programacin

17

Manual de Fundamentos de Programacin

3.1 Caractersticas del lenguaje de programacin


Caractersticas comunes a todos los lenguajes de programacin: Tienen una sintaxis: un conjunto de reglas que definen qu expresiones de texto son correctas. Por ejemplo, en C todas las sentencias deben terminar en ';'. Los lenguajes de programacin se ejecutan en un computador y tienen una determinada semntica que define cul ser el resultado de la ejecucin de un programa. Definen un conjunto de tipos de datos primitivos que representan los posibles valores que pueden devolver las expresiones del lenguaje. Tienen mecanismos de abstraccin para definir nuevos tipos de datos a partir de los primitivos o nuevas funciones y procedimientos.

Todos los lenguajes de programacin permiten combinar ideas simples en ideas ms complejas mediante los siguientes tres mecanismos: expresiones primitivas, que representan las entidades ms simples del lenguaje mecanismos de combinacin con los que se construyen elementos compuestos a partir de elementos ms simples mecanismos de abstraccin con los que dar nombre a los elementos compuestos y manipularlos como unidades

3.2 Estructura bsica de un programa.


Bien, listo es hora de ver un poco de la estructura bsica de los programas en java, algo a tener en cuenta y que debemos recordar siempre es el archivo debe llevar el nombre de la clase con la extensin .java de lo contrario, no nos funcionar. Siempre que se est viendo un lenguaje nuevo se utiliza el memorable "Hola mundo", ya que es una buena forma de adentrarse en un lenguaje desconocido. Nosotros no seremos la excepcin, a continuacin "Hola mundo" desde java:

01 public class HelloWorld { 02 03 public static void main(String[] args) { 04 05 06 07 } 08 } 09 Java es un lenguaje sensible a minsculas y maysculas, as que debemos ser muy cuidadosos a la hora de teclear nuestro cdigo, no es lo mismo: Elabor: Ing. Fabiola Fuentes Herrera System.out.println("Hola mundo"); //imprimir en pantalla Unidad 3 Introduccin a la Programacin

18

Manual de Fundamentos de Programacin

Public Class A: public class Analicemos el cdigo linea por linea: 01 public class HelloWorld { Inicia con la declaracin de una clase ya que en Java todo programa debe contener por lo menos una clase por archivo. La palabra reservada class indica la declaracin de una clase y espera posteriormente el nombre de la clase, en este caso "HelloWorld". Comienza con la declaracin de una clase nombrada HelloWord. Toda aplicacin java lleva por lo menos una clase.

Las palabras clave son aquellas que son reservadas exclusivamente por java y son escritas en minsculas. Generalmente los nombres de las clases inician con una letra mayscula pero bien, pueden llevar el nombre del que el programador guste. El nombre de la clase se conoce como un identificador, y se encuentra compuesto por un conjunto de caracteres, que bien pueden ser letras, dgitos. Sin embargo no se pueden comenzar con dgitos ni incluir espacios, generalmente cuando se desean dejar espacios se utilizan guiones bajos (_). Ejemplo de identificadores vlidos: hola5, Hola, Hola_mundo, $hola Ejemplo de identificadores no vlidos: Ho la, 1Hola 03 public static void main(String[] args) { Todo programa en java debe necesitan un punto de entrada, y esto es el mtodo main; Es el lugar por le que la JVM entrar a ejecutar cdigo. Este marca el punto de inicio del programa. Una clase generalmente contiene mtodos, java obliga al programador definir el mtodo main, de lo contrario el intrprete de java mandar un error. La palabra clave void indica que el bloque de cdigo siguiente relazar un trabajo pero no regresar ningn dato, simplemente har acciones. 05 System.out.println("Hola mundo"); Aqu estamos invocando un mtodo para decirle a la computadora que imprima el mensaje "Hola mundo", los mtodos se llaman colocando el nombre del mtodo y posteriormente parntesis, los mtodos pueden recibir parmetros, cuando es as son colocado entre los parntesis y separados por comas, en este caso slo enviamos un parmetro "Hola mundo", que es el mensaje que deseamos se imprima en pantalla. Otro dato importante en esta linea es notar que las instrucciones en Java deben terminar con un ";". Una vez que tenemos nuestro cdigo debemos guardarlo en un archivo, es importante que el nombre del archivo debe ser el mismo que el nombre de la clase ya que de no ser as no funcionar, para nuestro caso guardaremos nuestro cdigo en "HelloWorld.java". Una vez realizado lo anterior tenemos nuestro archivo listo para compilar. Unidad 3 Introduccin a la Programacin

Elabor: Ing. Fabiola Fuentes Herrera

19

Manual de Fundamentos de Programacin

Nota: Los nmeros de linea no son parte del cdigo en java, se colocaron slo para apoyarnos en la explicacin 6 // imprimiendo en pantalla

Cuando se colocan // indica que esa lnea ser ignorada por el compilador de java. Son utilizadas para agregar comentarios a nuestro programa y existen distintos tipos de comentarios, cuando se desea crear comentarios de ms de una lnea se incluyen /* y de all en adelante todo eso ser ignorado por el compilador java hasta que se encuentre con */, pudiendo as crear comentarios de ms de una lnea.

3.3 Traduccin de un programa: compilacin, enlace de un programa, errores en tiempo de compilacin y 3.4 Ejecucin de un programa.
A causa de que hay varias personas que no comprenden la diferencia de un IDE y un compilador por lo que se explicara cmo se compilan los programas en java desde la consola. Compilaremos y ejecutaremos nuestro programa HolaMundo. Aqu tenemos el cdigo de HolaMundo: public class HelloWorld { public static void main(String[] args) { System.out.println("Hola mundo"); } }

1.

Guardar el archivo con la exencin .java y con el nombre de la clase Copiaremos y pegaremos este cdigo en un bloc de notas Vamos al men "Archivo -> Guardar" En nombre escribimos HelloWorld.java(El archivo debe tener el mismo nombre que la clase) En "Guardar como tipo" seleccionamos "Todos los archivos Clic en guardar

Ahora tendremos un archivo HelloWorld.java en la unidad c. 2. Abrir la consola Para windows xp: Clic en inicio Clic en ejectuar Escribimos "cmd" sin las comillas Enter

Para windows 7:

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 3 Introduccin a la Programacin

20

Manual de Fundamentos de Programacin

Inicio Escribimos "cmd" en el buscador Abrimos el primer resultado que ser "cmd.exe" 3. Preparando la consola

Ahora lo que haremos ser situar la consola en la direccin que se encuentra el archivo,para ello escribiremos "cd " y la direccin del archivo, yo tengo el archivo situado en "C:\Users\MyUser\Desktop\" por lo que escribir "cd C:\Users\MyUser\Desktop\" y presionar Enter 4. Compilando el programa

Escribe "javac " y el nombre del archivo, por lo quedaria algo asi "javac HelloWorld.java" Si hubo algn problema durante la compilacin aqu nos aparecern los errores y las lineas en que se produjeron. Si todo salio bien no aparecer nada en especial. 5. Ejecutando el programa

Escribir "java" y el nombre del archivo sin la exencin, por lo que seria algo como "java HelloWorld" Listo, ahora puedes hacer tus pruebas y programas en java usando slo un bloc de notas y las herramientas del JDK.

3.5 Elementos del lenguaje: datos, literales y constantes, identificadores, variables, parmetros, operadores, entrada y salida de datos.
Los datos que procesa una computadora se clasifican en simples y estructurales. La principal caracterstica de los tipos de datos simples es que ocupa solo una casilla de memoria. Dentro de este grupo de datos se encuentran principalmente los enteros y los reales y los caracteres. Tipos de datos simples Se utiliza para almacenar Este tipo de dato puede tomar dos valores (true verdadero , false, ,falso) Un byte de datos (Rango 128 .. 127) Un carcter UNICODE Nmeros de coma flotante de doble precisin Rango 1.7e-30 .. 1.7e+308 Nmero entero entre Rango -2.147.483.648 .. -2.147.483.647 Nmero de coma flotante de simple precisin Rango 3.4e38..3.4e + 38 Nmero entero entre Rango -9..223.372.036.854.775.808 .. 9.223.372.036.854.775.807 Nmero entero entre Rango 32.768 .. 32.767

Tipo de dato Boolean byte char double int float long

Requisitos de Almacenamiento 1 byte Unidad 3 Introduccin a la Programacin 1 byte 2 bytes 8 bytes 4 bytes

8 bytes

slust

2bytes

Por otra parte, los datos estructurados se caracterizan por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria. Es decir, un dato estructurado tiene varios componentes. Los arreglos, cadenas de caracteres y registros representan los datos estructurados ms conocidos.

Elabor: Ing. Fabiola Fuentes Herrera

21

Manual de Fundamentos de Programacin

Literales Los literales permiten valores de tipos primitivo, el tipo string o null se escriben directamente como un texto de programa. Literales enteros Valores decimales de tipo int (32 bit) 0,124, -525, 55661, 2354657, -321124 Valores hexadecimales de tipo int () precedidos por un 0 o bien DX (los dgitos hexadecimales se pueden representar de a f o bien A-F. DXD DX12F OXFFED DXFFFF 0X12DEFF

Valores octales de tipo int estn precedidos por un 0 a la izquierda seguido por dgitos en el rango 0-7 00, 0123, 0777, -045321, -05 Literales de coma flotante Los nmeros bsicos de una coma flotante incluyen un punto decimal. 1.2345 1234.5678 0.1 305 -24.123 Si el nmero de coma flotante termina con un sufijo f o F ser de tipo Float. 1.23f 3.456F of .5Ff -45673F

El sufijo d o D se pueden utilizar para representar tipos double. Regla Unidad 3 Introduccin a la Programacin Los literales en coma flotante en Java son por defecto double precisin .Para especificar un literal float se debe aadir una constante F o f. Se puede especificar explcitamente un literal de tipo double aadiendo D o d. Literales boolean Existen dos valores lgicos que pueden tener un valor lgico o boolean true (verdadero) y false (falso) Literales carcter Un Literal carcter representa un solo carcter encerrado entre comillas simples. a, A ,,4, Tabla A.2 Secuencia de escape Secuencia de escape Descripcin \ ddd Carcter octal (dddd)

Elabor: Ing. Fabiola Fuentes Herrera

22

Manual de Fundamentos de Programacin

\ uxxx \ \ \\ \r \n \f \t \b Literales de cadena

Carcter hexadecimal UNICODE (xxxx) Comilla simple Comillas doble Diagonal Retorno de carro Nueva lnea Avance de pgina Tabulacin Retroceso

Los literales de cadena se especifican encerrado una secuencia de caracteres entre un par de comillas dobles. Hola Carchelejo cinco/nlineas Esto es una cadena,Hola mundo/n Identificadores Un identificador es el nombre de variables, mtodos, clases e interfaces. Un identificador es una secuencia ilimitada de caracteres alfabticos o dgitos (unicode) que comienzan con un carcter alfabtico. Los nombres pueden incluir el carcter subrayado (_) y el dlar ($). Nombres vlidos Nombres no vlidos representan total longitud persona distancia una prctica frecuente es crear un identificador como una concatenacin de dos o ms palabras, reparadas por un carcter subrayado o utilizando letras maysculas en la primera letra de las palabras. Salario_ mensual posicin Relativa elemento Tabla Convenio: Los identificadores que comienzan con una letra mayscula se reservan solo para nombres de clase o interfaces. Los identificadores que estn todos en maysculas representan constantes. Los nombres de las variables y mtodos comienzan con letras minsculas. Comentarios Los comentarios permiten aadir al cdigo fuente notas o comentarios de texto que son ignorados por el compilador. Los comentarios vienen en tres formatos: Elabor: Ing. Fabiola Fuentes Herrera Unidad 3 Introduccin a la Programacin

23

Manual de Fundamentos de Programacin

1 // Comentario de una sola lnea 2 /* Comentario multilnea */ 3 //** Comentario de documentacin */

1. 2. 3.

Los comentarios de una sola lnea comienzan con // y continuan hasta el final de la lnea. Los comentarios comienzan con /* y terminan con */ Los comentarios de documentacin son un tipo especial de comentarios multilnea que arranca con /**.Se utiliza para empotrar en la documentacin del cdigo fuente de una clave y se puede leer con el propio cdigo fuente con la herramienta Javadoc para genera documentacin HTML para sus clases.

Palabras reservadas Ciertas palabras estn reservadas para uso interno por Java y no se pueden utilizar como nombres de variables. abstract conft finally int public this bolean continue float interface return throw break default for long throw byte do goto static transient care double if new scictpf try catch else implements package super void chaw extend import private switch volatile class final instance of protected synchronized while native Unidad 3 Introduccin a la Programacin

Las palabras reservadas cont y goto son reservadas pero no se utilizan. Nota. Adems de estas palabras reservadas, Java se reserva false,null y true como valores definidos en el lenguaje. Variables Las variables son unidades bsicas de almacenamiento en Java que pueden cambiar su valor durante la ejecucin de un programa. Una variable se define por la combinacin de un identificador, un tipo y un inicializador opcional. Adems las variables tienen un mbito que define su visibilidad y una duracin. Elabor: Ing. Fabiola Fuentes Herrera

24

Manual de Fundamentos de Programacin

Declaracin de variables Una variable debe ser declarada antes de poder ser utilizada. Sintaxis nombretipo identificador nombretipo identificador =expresin; Es posible declarar dos o ms variables a la vez. Nombre tipo id1, id2,...; Existen dos categoras de variables: 1. Variables de tipo primitivo que contienen directamente una representacin de un valor de un tipo primitivo. 2. Variables de tipo referencia que contienen una referencia a un objeto cuando un tipo de referencia toma el valor null, significa que no se refiere a un objeto real(referencia nula) Modificaciones de variables Las variables se pueden modificar mediante indicadores. Public La clase o variable de instancia es accesible desde todos los mbitos.

Protected La clase o variable de instancia es accesible solo en el mbito actual de la clase,el mbito del paquete actual y todas las subclases de la clase actual. Private La clase o variable de instancia es accesible solo en el mbito actual de la clase. Final Static La variable es una constante ,de modo que su valor no se puede modificar. La variable es una variable de clase, compartida entre todos los objetos instancia de una clase. Se declara que no es parte de un estado persistente del objeto . Unidad 3 Introduccin a la Programacin

Transfert

Volatile Se necesita a veces cuando se utiliza una variable instancia por para prevenir al compilador de su optimizacin?.

Inicializacin de variables Se utilizan los siguientes valores por defecto byte short (short) 0 (byte ) 0

Elabor: Ing. Fabiola Fuentes Herrera

25

Manual de Fundamentos de Programacin

Int long float double char boolean

0 0l 0.0f 0.0d / u000(carcter nulo) false

La inicializacin se realiza de tres formas. int i=100; char c=d; float f=45.325 int i; {i=100;} asignacin dentro del cuerpo de un constructor int a=10,b,c=5; Variables parmetro Estas variables se inicializan siempre a una copia del valor utilizado en la llamada del mtodo o constructor. Variables locales Todas las variables locales deben ser explcitamente directa o indirectamente antes de un uno. { int i=10; ... } o por una asignacin hecha a la variable antes de ser utilizada en cualquier otra expresin. { int i; // no puede haber ninguna ? Que utilice i Unidad 3 Introduccin a la Programacin

Elabor: Ing. Fabiola Fuentes Herrera

26

Manual de Fundamentos de Programacin

i=? } Variables finales Las variables que se declaran final deben ser inicializadas cuando son declaradas y no pueden ser modificadas. Static final int MAX-CUENTA=100, Conversin de tipos y moldeado Cuando un tipo de dato se asigna a otro tipo de variable tiene lugar una conversin automtica de tipos si se cumplen las dos condiciones siguientes: Los dos tipos son compatibles El tipo destino es ms grande que el tipo fuerte. doble a = 6.0 float b; b= (float) a; la variable double a se convierte a float y se asigna a la variable b Las variables primitivas nunca se pueden moldear a un objeto clase String obj-str=(string)0, //err Para convertir un entero a una cadena ,aadir un literal de cadena vaca. Unidad 3 Introduccin a la Programacin String obj-str=0+; // el operador + significa

Caracteres especiales Los caracteres especiales de difcil representacin Sintaxis \ \ \\ \b Elabor: Ing. Fabiola Fuentes Herrera Significado Comillas simples Dobles comillas Diagonal Retroceso

27

Manual de Fundamentos de Programacin

\f \n \r \t \dee \xdd \udddd

Avance de pgina Nueva lnea Retorno de carro Tabulacin Representacin octal Representacin hexadecimal Carcter Unicode

Arrays Un array es un grupo de variables de tipos similares que se conocen con un nombre comn. Los diferentes elementos contenidos en un array se definen por un ndice y se acceden a ellos utilizando su ndice; los ndices arrancan en 0. Los arrays pueden ser multidimensionales y al igual que los objetos de la clase se crean utilizando la palabra reservada new.

Arrays de una dimensin Para crear un array se debe crear primero una variable array de tipo deseado. La declaracin es Tipo nombre _van[ ]; Int dia_mes [ ];0 El operador new sirve para asignar memoria y crear un array de una dimensin. Var_array=new tipo[longitud]; Dia_mes=new int [12]; //array de 12 enteros Dia_mes[1]=28, //array 28 a dia_mes Sintaxis Tipo variable nombreArray[ ]=new tipo Variable[logArray]; Tipo Variable[ ] nombreArray=new tipovariable[longArray]; int [ ] datos =new int [15]; int datos [ ]; datos=new int[15]; Unidad 3 Introduccin a la Programacin

Elabor: Ing. Fabiola Fuentes Herrera

28

Manual de Fundamentos de Programacin

Arrays multidimensionales En Java , los arrays multidimensionales son realmente arrays de arrays. Tipovariable [ ] nombrearray=[val1,val2,...valn]; Esta sentencia crea un array de n. elementos y lo inicializa conlos valores contenidos entre llaves. La sintaxis completa es: Tipovariable[ ] nombreArray=new tipovariable[ ]{val1,val2,...valn} Ejemplo Int dosD[ ] [ ] new int[4][5]; Esta sentencia asigna un array de enteros ,4 por 5 y lo asigna a dos. Sintaxis alternativa de declaracin de arrays Tipo[ ] nombre-var Las siguientes declaraciones son equivalentes Int a1[ ]=new[int3]; Int [ ]a20newint[3]; Las siguientes dos declaraciones son tambin equivalentes Char mod1[][]=new chatr[3][4], Char [][]mod2=new char[3][4] Acceso y asignacin de valores a elementos de un array. La sintaxis para acceder a un elemento es NombreArray[ndice] Y para asignar valor al miembro del array se especifica a el indice. Por ejemplo: NombreArray[indice]=valor; Por ejemplo Datos[0]=45; Unidad 3 Introduccin a la Programacin

Arrays de dos dimensiones

Elabor: Ing. Fabiola Fuentes Herrera

29

Manual de Fundamentos de Programacin

TipoVariable [][]nombreArray=new tipoVAriable[filas][columnas]. Crea un objeto array de dos dimensiones. Si el nmero de columnas se deja en blanco, el array puede tener un nmero de columnas diferentes por cada final. Ejemplo: Crear un array bidimensional con 8 filas y un nmero variable de columnas por cada fila. La primera fila se crea con 20 columnas y la tercera con 100 columnas. class TestArraybidimensional { Public static void main (string arrays[]){ Int[][]multD=new int[8]; MultD[0]=new int[20]; MultD[1]=new int[1000]; } } Inicializacin de un array de dos dimensiones TipoVariable[]nombreArray={{val1,val2,...},{val1,val2,...}} Crea un array bidimensional e inicializa las columnas con los valores contenidos entre llaves. Cada conjunto de llaves representa una fila del array bidimensional. Ejemplo Unidad 3 Introduccin a la Programacin Inicializar un array bidimensional de valores enteros de modo que se visualice el elemento [0][2] Public class tesArray2D{ Public static void main(string arrays[]) { int[][]multiD={1,2,3,4,5}{6,7,8,} }; system.out.printl/El elemento[0][2]es + multiD[0][2];

La variable lenght Elabor: Ing. Fabiola Fuentes Herrera

30

Manual de Fundamentos de Programacin

Todos los arrays unidimensionales tienen una variable de instancia denominada lenght asociada con ellos. Esta variable contiene la longitud del array. En el caso de arrays bidimensionales, La variable lenght se utiliza para acceder a la longitud de la primera fila. Public class teslongitudinal { public static void main(sting arrays[]) { int[][]multiD=}{1,2,3,4,}{5,6,7} }; system.out.printl ( la longitud de la 1fase +multiD[0].lenght); } } Salida La longitud de la primera fila es 4

Parmetros

Son una forma de intercambiar informacin con el mtodo. Pueden servir para introducir datos para ejecutar el mtodo (entrada) o para obtener o modificar datos tras su ejecucin (salida). Unidad 3 Introduccin a la Programacin Declaracin de parmetros Los parmetros se declaran en la cabecera de la declaracin de los mtodos. Al declararse el parmetro, se indica el tipo de dato y el identificador correspondiente. Los parmetros o argumentos de un constructor o de un mtodo pueden ser de cualquier tipo, ya sean tipos primitivos o referencias de objetos (en este caso debe indicarse el identificador de la clase correspondiente). Ejemplos de declaraciones de cabeceras de mtodos: public double devuelve() { . . . return . . . ;} public void asigna(double x) { ... } public int elMayor(int a, int b) // Dos parametros, a y b de tipo int { ... } Elabor: Ing. Fabiola Fuentes Herrera // Un parametro, x de tipo double // Sin parametros

31

Manual de Fundamentos de Programacin

public static double sumatorio (double [] v) // Un parametro, v, array real { ... } public boolean caducado (Fecha fechaLimite) // Un parmetro de la clase Fecha { ... } El identificador del parmetro se emplea slo dentro del mtodo para hacer referencia al argumento correspondiente y puede coincidir con el de un atributo de la misma clase. En tal caso, sedice que oculta a la variable miembro. Esta tcnica suele emplearse en los constructores para inicializar una instancia. Por ejemplo en la clase Circulo: public class Circulo { int x, y, radio; public circulo(int x, int y, int radio) { ... } } La clase Circulo tiene tres atributos o variables miembro x, y y radio y un constructor con tres argumentos con los mismos identificadores que facilitan los valores iniciales a los atributos respectivamente. Los identificadores de los parmetros ocultan a las variables miembro dentro del cuerpo del constructor, de forma que x, y y radio dentro del constructor hacen referencia a los parmetros y no a las variables miembro. Para acceder a las variables miembro, es necesario emplear la palabra reservada this que referencia a la instancia que est siendo inicializada por el constructor. public class Circulo { int x, y, radio; public Circulo(int x, int y, int radio) { this.x = x; // this.x hace referencia al atributo x Unidad 3 Introduccin a la Programacin

// x hace referencia al parametro x this.y = y; // this.y hace referencia al atributo y

// y hace referencia al parametro y this.radio = radio; // this.radio hace referencia al atributo radio // radio hace referencia al parametro radio } Elabor: Ing. Fabiola Fuentes Herrera

32

Manual de Fundamentos de Programacin

} Normalmente dentro del cuerpo del mtodo de una clase puede hacerse referencia directa a las variables miembro de las instancias. Salvo en el caso del ejemplo anterior en el que las variables miembro estn ocultas. Por otro lado, los parmetros de un mismo mtodo no puede compartir el mismo identificador (no pueden coincidir) con el de una variable local. El siguiente cdigo genera un error de compilacin: public void asigna(double x) { // Un parametro, x de tipo doubl double x; ... } Operadores Los operadores permiten a las expresiones combinarse en expresiones ms complejas. Java proporciona una coleccin grande de operadores que se pueden utilizar para manipular datos, incluyendo operadores aritmticos, asignacin, lgicos y de moldeado. Las reglas de asociacin y de prioridad se utilizan para determinar como evaluar expresiones utilizando operadores. Operadores aritmticos Los operadores aritmticos se utilizan en expresiones matemticas de igual modo que se utilizan en lgebra. Operadores aritmticos Operador + * / % ++ -Significado Unidad 3 Introduccin a la Programacin Suma Resta(tambin menos unitario) Multiplicacin Divisin Mdulo Incremento en 1 Decremento en 1 // Error de compilacin

Elabor: Ing. Fabiola Fuentes Herrera

33

Manual de Fundamentos de Programacin

Los operadores de incremento y decremento pueden aparecer en formato prefijo (++variable) o postfijo (variable --). En formato prefijo, la variable se incrementa o decrementa antes de que se ejecute cualquier operacin. Este formato postfijo, la variable se incrementa o decrementa despus que se ha ejecutado otras operaciones.

Operadores de asignacin El operador de asignacin simple se utiliza para asignar un valor a una variable, vas = expresin. Otros operadores de asignacin combinan la asignacin con una operacin aritmtica. Var=var op expresin, equivale a var op =expresin; X + y equivale a x=x+y Ejemplo Int x,y,z; X=y=z=100;//x,y,z, se ponen a 100

Operadores de asignacin Operador = += -= *= /= %= Significado Asignacin simple Asignacin y suma Asignacin y resta Unidad 3 Introduccin a la Programacin Asignacin y multiplicacin Asignacin y divisin Asignacin y mdulo, devuelve el resto del valor de la expresin de la izquierda dividida por el valor de al expresin de la derecha.

Operadores lgicos (bolean) Los operadores lgicos (bolean) se utilizan para manipular valores bolean. Operadores lgicos Operador ! && Elabor: Ing. Fabiola Fuentes Herrera Significado Negacin Conjugacin

34

Manual de Fundamentos de Programacin

||

Disyuncin

La tabla de la verdad de estos operadores se presenta a continuacin. Tabla de verdad de operadores lgicos P Verdadero 1 Verdadero 1 Falso 0 Falso 0 Q Verdadero 1 Falso 0 Verdadero 1 Falso 1 (!P) Falso 0 Falso 0 Verdadero 1 Verdadero 0 (!Q) Falso 0 Verdadero 1 Falso 0 Verdadero 1 (P||Q) Verdadero 1 Verdadero 1 Verdadero 1 Falso 0 (P && Q) Verdadero 1 Falso 0 Falso 0 Falso 1

Operador ternario (condicional) Java incluye un operador especial ternario que puede reemplazar a ciertos tipos de sentencias if-then-else. Su formato es : Expresin1 ?expresin2= expresin3 Expresin1, es cualquier expresin que se evala a un valor lgico(boolean). Si expresin1 es verdadera entonces se evala la expresin2;. El resultado de la operacin ? es el de la expresin evaluada. Tanto expresin2 como expresin3 han de devolver el mismo tipo de retorno que no puede ser void. 1 k=i<0 ? i=i; se obtiene el valor absoluto de i 2 int i=j<0?5:10, asigna a i si j es menor que 0,y 10 en caso contrario. Operadores relacionales Los operadores relacionales determinan la relacin que un operador tiene con otro. Operadores relacionales Operador == ! => > < >= Elabor: Ing. Fabiola Fuentes Herrera Significado Igual a No igual a Mayor que Menor que Mayor o igual que

Unidad 3 Introduccin a la Programacin

35

Manual de Fundamentos de Programacin

<=

Menor o igual que

Reglas de precedencia A continuacin se muestra el orden de precedencia (prioridad) de mayor o menor. Los parntesis se usan para alterar la procedencia de la operacin.

Precedencia de los operadores Java Mas alta () [ ] . ++ -* / % +>> >>> << > >= < <= = = I= & ^ I && II ?: = op= Ms baja

Los parntesis elevan la precedencia de las operaciones que estn en su interior. Esta tcnica se utiliza para obtener el resultado deseado. Unidad 3 Introduccin a la Programacin

Entrada y salida de Datos Entrada de Datos

En todo programa es indispensable la entrada y salida de datos para que se d la interaccin humano-computadora. En esta entrada veremos como aceptar datos desde el teclado. Entre la rica librera de java, dentro de java.util existe una clase llamada Scanner que permite realizar entradas desde un lugar definido (en este caso el teclado).La clase Scanner cuenta con varios mtodos para aceptar datos segn el tipo de dato que nos interese leer, esto es numeros enteros, numeros fraccionarios y palabras. Mtodos que nos interesan de Scanner: nextLine nextInt nextLong nextShort Elabor: Ing. Fabiola Fuentes Herrera

36

Manual de Fundamentos de Programacin

nextByte nextBoolean Cada uno de estos mtodos lee un tipo de dato especifico y lo regresa para ponerlo en nuestras manos. Ahora veamos un ejemplo de su uso en cdigo: // HelloScanner.java import java.util.Scanner; public class HelloScanner { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); System.out.println("Ingrese su nombre: "); String nombre = entrada.nextLine(); System.out.println("Hola " + nombre); } } Analicemos el cdigo: import java.util.Scanner; Para poder usar la clase Scanner primero debemos decirle a Java dnde puede encontrar dicha clase, como mencinoamos anteriormente se encuentra dentro de java.util. Si nocolocas estra instruccin obtendrs un error como "Scanner cannot be resolved to a type". Scanner entrada = new Scanner(System.in); Creamos un objeto de la clase Scanner para poder utilizar sus mtodos, como parmetro le enviamos el lugar de dnde se capturaran los datos. System.in es la entrada estndar de java para el teclado. String nombre = entrada.nextLine(); El mtodo nextLine regresa un String de los datos ingresados, por lo que al ejecutar esta linea tendremos en la variable nombre lo que se tecleo. Unidad 3 Introduccin a la Programacin

Salida de Datos El flujo de salida estndar permite acceder a los mtodos bsicos de impresin; print() y println(),de la clase PrintStream. Proporciona una referencia a un objeto de printStream que puede acceder a esos mtodos .La variable out es un miembro de la clase System. Sintaxis: Elabor: Ing. Fabiola Fuentes Herrera

37

Manual de Fundamentos de Programacin

System.out // uno de la variable out Mtodo print( ) Print( ) imprime el argumento parado a la salida estndar (normalmente la consola). Sin un carcter fin de lnea. Sintaxis: public void print(String s) public void print(Boolean b) public void print(Char c) public void print(double d) public void print(float f) public void print(int i) public void print(long l) public void print(object ob)

Mtodo println( ) Println( ) es similar al mtodo print( ) excepto un carcter fin de lnea o secuencia se aade al final.

3.6 Errores en tiempo de ejecucin.


Unidad 3 Introduccin a la Programacin Una excepcin es una condicin anormal que surge en una secuencia de cdigo durante la ejecucin del programa. Cuando un mtodo ha provocado una excepcin, tiene dos posibilidades: Gestionarla l mismo. Es decir, el propio mtodo deber capturar, o detectar, el error producido y tratar de resolverlo. Pasarla a otro mtodo. El mtodo que ha originado el error puede pasar el objeto de tipo excepcin al mtodo que lo invocase.

Tipos de excepciones en java Excepcin. Se trata de un conjunto de excepciones que el programa del usuario debera capturar, es decir, resolver. Error. Esta clase representa fallos, generalmente, no controlados que originan la parada del programa en ejecucin. Excepciones no capturadas. El propio intrprete de java es el encargado de resolver el problema. Excepciones capturadas. El programador debe encargarse de capturar y resolver el problema, si no lo hace el programa no compilar. Elabor: Ing. Fabiola Fuentes Herrera

38

Manual de Fundamentos de Programacin

Clases derivadas de exception AWTException. Excepcin sobre elemento derivado del paquete java.awt. ClassNotFoundException. Error al tratar de utilizar una clase. IllegalAccesssException. Se intenta acceder a una clase a la que no se tiene permiso. DataFormatException. Error en el formato de los datos. IOException. Excepciones producidas al realizar tareas de entrada y salida por el programa. NoSuchFieldException. No se encuentra un determinado atributo. NoSuchMethodException. No se encuentra un determinado mtodo. RuntimeException. Errores en tiempo de ejecucin, las clases derivadas son: ArithmeticException, ClassCastException, IndexOutofBoundsException, NegativeArraySizeException, NullPointerException.

Sentencias try/catch/finally try: Es un bloque que intenta ejecutar un cdigo que podra generar una o varias excepciones. Esta sentencia debe tener por lo menos una sentencia catch. La sentencia try puede tener bloques try/catch anidados. catch: Si se produce la excepcin se captura por este bloque de cdigo ( pueden existir varios). finally: Bloque opcional, aparece despus del ltimo catch y proporciona un cdigo que siempre se ejecuta, sucedan o no los excepciones.

Sentencias throw y throws throw: Se utiliza para lanzar (crear) una excepcin, esta indica el punto desde el cual se lanza la excepcin. throws: Permite listar los tipos de excepciones que un mtodo puede lanzar (el listado de excepciones aparecern separados por una coma). La sintaxis de esta sentencia es:

Tipo nombre_de_mtodo (lista_parametros) throws lista_excepciones{ //cuerpo del mtodo } Unidad 3 Introduccin a la Programacin

Declaracin de excepciones propias Para definir una nueva excepcin nicamente ser necesario crear una nueva clase que herede de la clase Exception (extends Exception) e implementar aquellos mtodos que se consideran necesarios.

Elabor: Ing. Fabiola Fuentes Herrera

39

Manual de Fundamentos de Programacin

Unidad 4 Control de flujo.


Unidad 4 Control de flujo.

Elabor: Ing. Fabiola Fuentes Herrera

40

Manual de Fundamentos de Programacin

Introduccin
Un problema se puede dividir en acciones elementales o instrucciones, usando un nmero limitado de estructuras de control (bsicas) y sus combinaciones que pueden servir para resolver dicho problema. Las Estructuras Bsicas pueden ser: Secuenciales: cuando una instruccin del programa sigue a otra. Seleccin o decisin: acciones en las que la ejecucin de alguna depender de que se cumplan una o varias condiciones. Repeticin, Iteracin: cuando un proceso se repite en tanto cierta condicin sea establecida para finalizar ese proceso. ESTRUCTURAS BSICAS.

La estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. Se caracteriza porque una accin se ejecuta detrs de otra. El flujo del programa coincide con el orden fsico en el que se han ido poniendo las instrucciones. Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicializacin de variables, operaciones de asignacin, clculo, suma, etc. En Pseudocdigo una Estructura Secuencial se representa de la siguiente forma:

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 4 Control de flujo.

41

Manual de Fundamentos de Programacin

Observe el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en Pseudocdigo y en diagramas de flujos: Tengo un telfono y necesito llamar a alguien pero no s cmo hacerlo.

El anterior ejemplo es un sencillo algoritmo de un problema cotidiano dado como muestra de una estructura secuencial.

4.1 Estructuras secuenciales.


La estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. Una estructura de programa es secuencial si se ejecutan una tras otra a modo de secuencia, es decir que una instruccin no se ejecuta hasta que finaliza la anterior. Componentes Asignacin La asignacin consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor. La asignacin se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constate a una variable (a=15) Contador: Consiste en usarla como un verificador del nmero de veces que se realiza un proceso (a=a+1) Acumulador: Consiste en usarla como un sumador en un proceso (a=a+b) De trabajo: Donde puede recibir el resultado de una operacin matemtica que involucre muchas variables (a=c+b*2/4). Unidad 4 Control de flujo.

Lectura La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operacin se representa en un pseudocodigo como sigue: Elabor: Ing. Fabiola Fuentes Herrera

42

Manual de Fundamentos de Programacin

Leer a, b Donde a y b son las variables que recibirn los valores Escritura Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudocodigo como sigue: Escribe El resultado es:, R Donde El resultado es: es un mensaje que se desea aparezca y R es una variable que contiene un valor.

4.2 Estructuras selectivas: simple, doble y mltiple.


Se encuentran en la solucin algortmica de casi todo tipo de problemas. Estas estructuras se utilizan cuando se debe tomar una decisin en el desarrollo de la solucin del problema. La toma de decisin se basa en la evaluacin de una o ms condiciones que nos sealaran como consecuencia la rama a seguir. Las estructuras selectivas que se estuduaran son if, ifelse y switch. Estructura selectiva simple if Permite que el flujo del diagrama siga por un camino especfico si se cumple una condicin determinada. Si al evaluar la condicin el resultado es verdadero, entonces se sigue por el camino especfico hacia abajoy se ejecuta una operacin o accin o un conjunto de ellas. Por otra parte, si el resultado de la evaluacin es falso, entonces se pasa(n) por alto es(s) operacin(es). En ambos casos se contina con la secuencia normal de diagrama de flujo. Observemos la representacin grafica de esta estructura.

Sintaxis en java de la condicional if

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 4 Control de flujo.

43

Manual de Fundamentos de Programacin

if (expresinLgica) bloqueSentencias1 //si son varias sentencias se encierran entre {}

Ejemplo: if (diasemana==1) dia=Lunes; if (diasemana==2) dia=Martes; if (diasemana==3) dia=Mircoles; if (diasemana==4) dia=Jueves; if (diasemana==5) dia=Viernes; if (diasemana==6) dia=Sbado; if (diasemana==7) dia=Domingo;

Estructura Selectiva doble If-else Permite que el diagrama de flujo se bifurque por dos ramas diferentes en el punto de la toma de decisin. Si al evaluar la condicin el resultado es verdadero, entonces se sigue por un camino especfico el de la izquierda y se ejecuta una accin determinada o un conjunto de ellas. Pro otra parte, si el resultado de la evaluacin es falso, entonces se sigue por otro camino el de la derechay se realiza(n) otra(s) accin(es). En ambos caso, luego de ejecutar las acciones correspondientes, se contina con la secuencia normal del diagrama de flujo. Observemos la representacin grafica de esta estructura.

Sintaxis if (condicin) {

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 4 Control de flujo.

44

Manual de Fundamentos de Programacin

instrucciones que se ejecutan si la condicin es true } else { instrucciones que se ejecutan si la condicin es false }

Ejemplo if ((diasemana>=1) && (diasemana<=5)){ trabajar = true; } else { trabajar = false; }

Estructura selectiva mltiple switch La estructura selectiva switch permite que el flujo del diagrama de flujo se bifurque por varias ramas en el punto de la toma de decisin. La eleccin del camino a seguir depende del contenido de la variable como selector, a cual puede tomar valores de un conjunto previamente establecido. El camino elegido, entonces, depender del valor que tome el selector. Asi, si el selector toma el valor 1, se ejecutara la accin 1; si toma el valor 2, se ejecutara la accin 2, y si toma el valor N, se realizara la accin N. a continuacin se mostrara la figura que ilustra la estructura selectiva.

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 4 Control de flujo.

45

Manual de Fundamentos de Programacin

Sintaxis Switch(<selector>) { case <valor1>: <accin1>; break; //es necesario poner el break para no evaluar los dems casos case <valor2>: <accin2>; break; //es necesario poner el break para no evaluar los dems casos . . . case <valorN>: <accinN>; break; //es necesario poner el break para no evaluar los dems casos default: <accionx>; // sentencias que se ejecutan si no se cumple ninguna de las anteriores break; } Accin N+1; Ejemplo 1: switch (diasemana) { case 1: dia=Lunes; break; Unidad 4 Control de flujo.

Elabor: Ing. Fabiola Fuentes Herrera

46

Manual de Fundamentos de Programacin

case 2: dia=Martes; break; case 3: dia=Mircoles; break; case 4: dia=Jueves; break; case 5: dia=Viernes; break; case 6: dia=Sbado; break; case 7: dia=Domingo; break; default: dia=?; } Unidad 4 Control de flujo.

Ejemplo 2 switch (diasemana) {

Elabor: Ing. Fabiola Fuentes Herrera

47

Manual de Fundamentos de Programacin

case 1: case 2: case 3: case 4: case 5: laborable=true; break; case 6: case 7: laborable=false; }

4.3 Estructuras iterativas: repetir mientras, hasta, desde En la prctica, durante la solucin de problemas, es muy comn encontrar, operaciones que se deben de ejecutar un nmero determinado de veces. Si bien las instrucciones son las mismas, los datos varan. El conjunto de instrucciones que se ejecutan repetidamente recibe el nombre de ciclo. Rodo ciclo debe de terminar luego de repetirse un numero finito de veces. Dentro del conjunto de instrucciones siempre debe de existir una condicin de parada o fin de ciclo.

La estructura repetitiva for Es utilizada para repetir un conjunto de instrucciones un nmero definido de veces. Este tipo de estructura se encuentra prcticamente en todos los lenguajes de programacin. Esta estructura es muy parecida a la estructura while. Unidad 4 Control de flujo. Sintaxis for (expresinInicial; condicin; expresinEncadavuelta) { instrucciones; } Ejemplo //factorial de 4 Elabor: Ing. Fabiola Fuentes Herrera

48

Manual de Fundamentos de Programacin

int n=4, factorial=1, temporal=n; for (temporal=n;temporal>0;temporal--) { factorial *=temporal; }

Estructura repetitiva while Permite repetir un conjunto de instrucciones. Sin embargo, el nmero de veces que se repite depender de las proposiciones que contenga el ciclo. Cada vez que corresponde iniciar el ciclo de evaluar una condicin, si esta es verdadera (diferente de cero) se continua con la ejecucin, de otra forma se detiene.

Sintaxis while (condicin) { sentencias que se ejecutan si la condicin es true } Estructura repetitiva do-while Es una estructura que se encuentra prcticamente en cualquier lenguaje de programacin de alto nivel. A diferencia de las estructuras for y while, en las cuales las condiciones se evaluaban al principio del ciclo, en esta se evalan al final. Esto implica que el ciclo se debe ejecutar por lo menos una vez. La estructura e adecuada cuando no sabemos el nmero de veces que se desea repetir el ciclo, pero conocemos que por lo menos se ejecuta una vez. Unidad 4 Control de flujo.

Elabor: Ing. Fabiola Fuentes Herrera

49

Manual de Fundamentos de Programacin

Sintaxis do { instrucciones } while (condicin)

4.4 Diseo e implementacin de funciones


Instruccin import Hay cdigo que se puede utilizar en los programas que realicemos en Java. Se importar clases de objetos que estn contenidas, a su vez, en paquetes estndares. Por ejemplo la clase Date es una de las ms utilizadas, sirve para manipular fechas. Si alguien quisiera utilizar en su cdigo objetos de esta clase, necesita incluir una instruccin que permita utilizar esta clase. La sintaxis de esta instruccin es: import paquete.subpaquete.subsubapquete....clase Esta instruccin se coloca arriba del todo en el cdigo. Para la clase Date sera: import java.util.Date Lo que significa, importar en el cdigo la clase Date que se encuentra dentro del paquete util que, a su vez, est dentro del gran paquete llamado java. Tambin se puede utilizar el asterisco en esta forma: import java.util.* Esto significa que se va a incluir en el cdigo todas las clases que estn dentro del paquete util de java. Unidad 4 Control de flujo.

Variables

Elabor: Ing. Fabiola Fuentes Herrera

50

Manual de Fundamentos de Programacin

Las variables son los contenedores de los datos que utiliza un programa. Cada variable ocupa un espacio en la memoria RAM del ordenador para almacenar un dato determinado. Las variables tienen un nombre (un identificador) que slo puede contener letras, nmeros y el carcter de subrayado (tambin vale el smbolo $). El nombre puede contener cualquier carcter Unicode.

Declaracin de variables Antes de poder utilizar una variable, sta se debe declarar. Lo cual se debe hacer de esta forma: tipo nombrevariable; Donde tipo es el tipo de datos que almacenar la variable (texto, nmeros enteros,...) y nombrevariable es el nombre con el que se conocer la variable. Ejemplos: int dias; boolean decision; Tambin se puede hacer que la variable tome un valor inicial al declarar: int dias=365; Y tambin se puede declarar ms de una variable a la vez: int dias=365, anio=23, semanas; Al declarar una variable se puede incluso utilizar una expresin: int a=13, b=18; int c=a+b; Alcance o mbito Esas dos palabras sinnimas, hacen referencia a la duracin de una variable. En el ejemplo: { Unidad 4 Control de flujo. int x=12; } System.out.println(x); //Error Java dar error, porque la variable se usa fuera del bloque en el que se creo. Eso no es posible, porque una variable tiene como mbito el bloque de cdigo en el que fue creada (salvo que sea una propiedad de un objeto).

Declaracin de mtodos Elabor: Ing. Fabiola Fuentes Herrera

51

Manual de Fundamentos de Programacin

En Java toda la lgica de programacin (Algoritmos) est agrupada en funciones o mtodos. Un mtodo es: Un bloque de cdigo que tiene un nombre, recibe unos parmetros o argumentos (opcionalmente), contiene sentencias o instrucciones para realizar algo (opcionalmente) y devuelve un valor de algn Tipo conocido (opcionalmente).

La sintaxis global es: Tipo_Valor_devuelto nombre_mtodo ( lista_argumentos ) bloque_de_codigo; } {

y la lista de argumentos se expresa declarando el tipo y nombre de los mismos (como en las declaraciones de variables). Si hay ms de uno se separan por comas. Por ejemplo: int sumaEnteros ( int a, int b ) { int c = a + b; return c; } El mtodo se llama sumaEnteros. Recibe dos parmetros tambin enteros. Sus nombres son a y b. Devuelve un entero.

En el ejemplo la clasula return se usa para finalizar el mtodo devolviendo el valor de la variable c. El termino void El hecho de que un mtodo devuelva o no un valor es opcional. En caso de que devuelva un valor se declara el tipo que devuelve. Pero si no necesita ningn valor, se declara como tipo del valor devuelto, la palabra reservada void. Por ejemplo: void haceAlgo() . } Cuando no se devuelve ningn valor, la clasula return no es necesaria. Observese que en el ejemplo el mtodo haceAlgo tampoco recibe ningn parmetro. No obstante los parntesis, son obligatorios. . { .

Uso de mtodos Los mtodos se invocan con su nombre, y pasando la lista de argumentos entre parntesis. El conjunto se usa como si fuera una variable del Tipo devuelto por el mtodo. Por ejemplo: Elabor: Ing. Fabiola Fuentes Herrera

Unidad 4 Control de flujo.

52

Manual de Fundamentos de Programacin

int x; x = sumaEnteros(2,3); Nota: Esta sintaxis no est completa, pero sirve para nuestros propsitos en este momento. La sintaxis completa se ver cuando se hable de objetos. Aunque el mtodo no reciba ningn argumento, los parntesis en la llamada son obligatorios. Por ejemplo para llamar a la funcin haceAlgo, simplemente se pondra: haceAlgo(); Observese que como la funcin tampoco devuelve ningn valor no se asigna a ninguna variable. (No hay nada que asignar).

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 4 Control de flujo.

53

Manual de Fundamentos de Programacin

Unidad 5 Arreglos
Unidad 5 Arreglos

Elabor: Ing. Fabiola Fuentes Herrera

54

Manual de Fundamentos de Programacin

Introduccin
Un arreglo es una coleccin finita, homognea y ordenada de elementos. Finita, porque todo arreglo tiene un lmite, es decir, debe determinar cul es el nmero mximo de elementos del arreglo. Homognea, porque todos los elementos del arreglo deben ser del mismo tipo. Ordenada, porque se puede determinar cul es el primer elemento, cual el segundo, y as sucesivamente.

5.1 Unidimensionales: conceptos bsicos, operaciones y aplicaciones.


Un arreglo unidimensional es una coleccin finita, homognea y ordenada de datos, en la que se hace referencia a cada elemento del arreglo por medio del ndice. Este ltimo indica la casilla en la que se encuentra el elemento. Se distinguen dos partes fundamentales: los componentes y el ndice. Los componentes hacen referencia a los elementos que se almacenan en cada una de las celdas o casillas. El ndice, por su lado, especifica la forma de acceder a cada uno de estos elementos. La declaracin de un array unidimensional se hace con esta sintaxis. tipo nombre[]; Ejemplo: double cuentas[]; //Declara un array que almacenar valores // doubles Declara un array de tipo double. Esta declaracin indica para qu servir el array, pero no reserva espacio en la RAM al no saberse todava el tamao del mismo. Tras la declaracin del array, se tiene que iniciar. Eso lo realiza el operador new, que es el que realmente crea el array indicando un tamao. Cuando se usa new es cuando se reserva el espacio necesario en memoria. Un array no inicializado es un array null. Ejemplo: int notas[]; //sera vlido tambin int[] notas; notas = new int[3]; //indica que el array constar de tres //valores de tipo int //Tambin se puede hacer todo a la vez //int notas[]=new int[3]; Unidad 5 Arreglos En el ejemplo anterior se crea un array de tres enteros (con los tipos bsicos se crea en memoria el array y se inicializan los valores, los nmeros se inician a 0). Los valores del array se asignan utilizando el ndice del mismo entre corchetes: notas[2]=8; Tambin se pueden asignar valores al array en la propia declaracin: Elabor: Ing. Fabiola Fuentes Herrera

55

Manual de Fundamentos de Programacin

int notas[] = {8, 7, 9}; int notas2[]= new int[] {8,7,9};//Equivalente a la anterior Esto declara e inicializa un array de tres elementos. En el ejemplo lo que significa es que notas[0] vale 8, notas[1] vale 7 y notas[2] vale 9. En Java (como en otros lenguajes) el primer elemento de un array es el cero. El primer elemento del array notas, es notas[0]. Se pueden declarar arrays a cualquier tipo de datos (enteros, booleanos, doubles, ... e incluso objetos). La ventaja de usar arrays (volviendo al caso de las notas) es que gracias a un simple bucle for se puede rellenar o leer fcilmente todos los elementos de un array: //Calcular la media de las 18 notas suma=0; for (int i=0;i<=17;i++){ suma+=nota[i]; } media=suma/18; A un array se le puede inicializar las veces que haga falta: int notas[]=new notas[16]; ... notas=new notas[25]; Pero hay que tener en cuenta que el segundo new hace que se pierda el contenido anterior. Realmente un array es una referencia a valores que se almacenan en memoria mediante el operador new, si el operador new se utiliza en la misma referencia, el anterior contenido se queda sin referencia y, por lo tanto se pierde. Un array se puede asignar a otro array (si son del mismo tipo): int notas[]; int ejemplo[]=new int[18]; Unidad 5 Arreglos notas=ejemplo; En el ltimo punto, notas equivale a ejemplo. Esta asignacin provoca que cualquier cambio en notas tambin cambie el array ejemplos. Es decir esta asignacin anterior, no copia los valores del array, sino que notas y ejemplo son referencias al mismo array. Ejemplo: int notas[]={3,3,3}; Elabor: Ing. Fabiola Fuentes Herrera

56

Manual de Fundamentos de Programacin

int ejemplo[]=notas; ejemplo= notas; ejemplo[0]=8; System.out.println(notas[0]);//Escribir el nmero 8

5.2 Multidimensionales: conceptos bsicos, operaciones y aplicaciones.


Un arreglo bidimensional es una coleccin finita, homognea y ordenada de datos, en la que se hace referencia a cada elemento del arreglo por medio de dos ndices. El primero se utiliza para indica la Fila, y el segundo para indicar las columna. Los arrays adems pueden tener varias dimensiones. Entonces se habla de arrays de arrays (arrays que contienen arrays). Ejemplo: int notas[][]; notas es un array que contiene arrays de enteros notas = new int[3][12];//notas est compuesto por 3 arrays //de 12 enteros cada uno notas[0][0]=9;//el primer valor es 0 Puede haber ms dimensiones incluso (notas[3][2][7]). Los arrays multidimensionales se pueden inicializar de forma ms creativa incluso. Ejemplo: int notas[][]=new int[5][];//Hay 5 arrays de enteros notas[0]=new int[100]; //El primer array es de 100 enteros notas[1]=new int[230]; //El segundo de 230 notas[2]=new int[400]; notas[3]=new int[100]; notas[4]=new int[200]; Hay que tener en cuenta que en el ejemplo anterior, notas[0] es un array de 100 enteros. Mientras que notas, es un array de 5 arrays de enteros. Se pueden utilizar ms de dos dimensiones si es necesario. longitud de un array Los arrays poseen un mtodo que permite determinar cunto mide un array. Se trata de length. Ejemplo (continuando del anterior): Elabor: Ing. Fabiola Fuentes Herrera

Unidad 5 Arreglos

57

Manual de Fundamentos de Programacin

System.out.println(notas.length); //Sale 5 System.out.println(notas[2].length); //Sale 400

clase Arrays En el paquete java.utils se encuentra una clase esttica llamada Arrays. Una clase esttica permite ser utilizada como si fuera un objeto (como ocurre con Math). Esta clase posee mtodos muy interesantes para utilizar sobre arrays. Su uso es Arrays.mtodo(argumentos);

Arrays y cadenas

fill Permite rellenar todo un array unidimensional con un determinado valor. Sus argumentos son el array a rellenar y el valor deseado: int valores[]=new int[23]; Arrays.fill(valores,-1);//Todo el array vale -1 Tambin permite decidir desde que ndice hasta qu ndice rellenamos: Arrays.fill(valores,5,8,-1);//Del elemento 5 al 7 valdrn -1

equals Compara dos arrays y devuelve true si son iguales. Se consideran iguales si son del mismo tipo, tamao y contienen los mismos valores.

sort Permite ordenar un array en orden ascendente. Se pueden ordenar slo una serie de elementos desde un determinado punto hasta un determinado punto. int x[]={4,5,2,3,7,8,2,3,9,5}; Arrays.sort(x);//Estar ordenado Arrays.sort(x,2,5);//Ordena del 2 al 4 elemento Elabor: Ing. Fabiola Fuentes Herrera

Unidad 5 Arreglos

58

Manual de Fundamentos de Programacin

binarySearch Permite buscar un elemento de forma ultrarrpida en un array ordenado (en un array desordenado sus resultados son impredecibles). Devuelve el ndice en el que est colocado el elemento. Ejemplo: int x[]={1,2,3,4,5,6,7,8,9,10,11,12}; Arrays.sort(x); System.out.println(Arrays.binarySearch(x,8));//Da 7

mtodo System.arraysCopy La clase System tambin posee un mtodo relacionado con los arrays, dicho mtodo permite copiar un array en otro. Recibe cinco argumentos: el array que se copia, el ndice desde que se empieza a copia en el origen, el array destino de la copia, el ndice desde el que se copia en el destino, y el tamao de la copia (nmero de elementos de la copia). int uno[]={1,1,2}; int dos[]={3,3,3,3,3,3,3,3,3}; System.arraycopy(uno, 0, dos, 0, uno.length); for (int i=0;i<=8;i++){ System.out.print(dos[i]+" "); } //Sale 112333333

clase String Para Java las cadenas de texto son objetos especiales. Los textos deben manejarse creando objetos de tipo String. Ejemplo: String texto1 = Prueba de texto!;

String texto2 =Este es un texto que ocupa +varias lneas, no obstante se puede +perfectamente encadenar;

Tambin se pueden crear objetos String sin utilizar constantes entrecomilladas, usando otros constructores: Elabor: Ing. Fabiola Fuentes Herrera

Unidad 5 Arreglos

Las cadenas pueden ocupar varias lneas utilizando el operador de concatenacin +.

59

Manual de Fundamentos de Programacin

char[] palabra = {P,a,l,b,r,a};//Array de char String cadena = new String(palabra); byte[] datos = {97,98,99}; String codificada = new String (datos, 8859_1); En el ltimo ejemplo la cadena codificada se crea desde un array de tipo byte que contiene nmeros que sern interpretados como cdigos Unicode. Al asignar, el valor 8859_1 indica la tabla de cdigos a utilizar.

Comparacin entre objetos String Los objetos String no pueden compararse directamente con los operadores de comparacin. En su lugar se deben utilizar estas expresiones: cadena1.equals(cadena2). El resultado es true si la cadena1 es igual a la cadena2. Ambas cadenas son variables de tipo String. cadena1.equalsIgnoreCase(cadena2). Como la anterior, pero en este caso no se tienen en cuenta maysculas y minsculas. s1.compareTo(s2). Compara ambas cadenas, considerando el orden alfabtico. Si la primera cadena es mayor en orden alfabtico que la segunda devuelve 1, si son iguales devuelve 0 y si es la segunda la mayor devuelve -1. Hay que tener en cuenta que el orden no es el del alfabeto espaol, sino que usa la tabla ASCII, en esa tabla la letra es mucho mayor que la o. s1.compareToIgnoreCase(s2). Igual que la anterior, slo que adems ignora las maysculas (disponible desde Java 1.2)

String.valueOf Este mtodo pertenece no slo a la clase String, sino a otras y siempre es un mtodo que convierte valores de una clase a otra. En el caso de los objetos String, permite convertir valores que no son de cadena a forma de cadena. Ejemplos: String numero = String.valueOf(1234); String fecha = String.valueOf(new Date()); En el ejemplo se observa que este mtodo pertenece a la clase String directamente, no hay que utilizar el nombre del objeto creado (como se ver ms adelante, es un mtodo esttico).

mtodos de las variables de las cadenas Son mtodos que poseen las propias variables de cadena. Para utilizarlos basta con poner el nombre del mtodo y sus parmetros despus del nombre de la variable String. Es decir: variableString.mtodo(argumentos) Elabor: Ing. Fabiola Fuentes Herrera

Unidad 5 Arreglos

60

Manual de Fundamentos de Programacin

length Permite devolver la longitud de una cadena (el nmero de caracteres de la cadena): String texto1=Prueba; System.out.println(texto1.length());//Escribe 6

Concatenar cadenas Se puede hacer de dos formas, utilizando el mtodo concat o con el operador +. Ejemplo: String s1=Buenos , s2=das, s3, s4; s3 = s1 + s2; s4 = s1.concat(s2);

charAt Devuelve un carcter de la cadena. El carcter a devolver se indica por su posicin (el primer carcter es la posicin 0) Si la posicin es negativa o sobrepasa el tamao de la cadena, ocurre un error de ejecucin, una excepcin tipo IndexOutOfBounds-Exception. Ejemplo: String s1=Prueba; char c1=s1.charAt(2); //c1 valdr u

substring Da como resultado una porcin del texto de la cadena. La porcin se toma desde una posicin inicial hasta una posicin final (sin incluir esa posicin final). Si las posiciones indicadas no son vlidas ocurre una excepcin de tipo IndexOutOfBoundsException. Se empieza a contar desde la posicin 0. Ejemplo: String s1=Buenos das; String s2=s1.substring(7,10); //s2 = da Unidad 5 Arreglos

indexOf Devuelve la primera posicin en la que aparece un determinado texto en la cadena. En el caso de que la cadena buscada no se encuentre, devuelve -1. El texto a buscar puede ser char o String. Ejemplo: Elabor: Ing. Fabiola Fuentes Herrera

61

Manual de Fundamentos de Programacin

String s1=Quera decirte que quiero que te vayas; System.out.println(s1.indexOf(que)); //Da 15 Se puede buscar desde una determinada posicin. En el ejemplo anterior: System.out.println(s1.indexOf(que,16)); //Ahora da 26

lastIndexOf Devuelve la ltima posicin en la que aparece un determinado texto en la cadena. Es casi idntica a la anterior, slo que busca desde el final. Ejemplo: String s1=Quera decirte que quiero que te vayas; System.out.println(s1.lastIndexOf(que); //Da 26 Tambin permite comenzar a buscar desde una determinada posicin.

endsWith Devuelve true si la cadena termina con un determinado texto. Ejemplo: String s1=Quera decirte que quiero que te vayas; System.out.println(s1.endsWith(vayas); //Da true

startsWith Devuelve true si la cadena empieza con un determinado texto.

replace Cambia todas las apariciones de un carcter por otro en el texto que se indique y lo almacena como resultado. El texto original no se cambia, por lo que hay que asignar el resultado de replace a un String para almacenar el texto cambiado: String s1=Mariposa; System.out.println(s1.replace(a,e));//Da Meripose System.out.println(s1);//Sigue valiendo Mariposa Unidad 5 Arreglos

Elabor: Ing. Fabiola Fuentes Herrera

62

Manual de Fundamentos de Programacin

replaceAll Modifica en un texto cada entrada de una cadena por otra y devuelve el resultado. El primer parmetro es el texto que se busca (que puede ser una expresin regular), el segundo parmetro es el texto con el que se reemplaza el buscado. La cadena original no se modifica. String s1=Cazar armadillos; System.out.println(s1.replace(ar,er));//Da Cazer ermedillos System.out.println(s1);//Sigue valiendo Cazar armadilos

toUpperCase Devuelve la versin en maysculas de la cadena.

toLowerCase Devuelve la versin en minsculas de la cadena.

toCharArray Obtiene un array de caracteres a partir de una cadena.

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 5 Arreglos

63

Manual de Fundamentos de Programacin

Fuentes de Informacin
Bibliografa Osvaldo Cairo, Fundamentos de Programacin Piensa en C, 1 Edicin, Ed. Prentice Hall. Fco. Javier Ceballos, Java 2 Curso de Programacin, 4. Edicin, Ed. Alfaomega. Douglas Bell y Mike Parr, Java para estudiantes, 6 edicin, Ed. Prentice Hall.

Referencias Electrnicas http://docs.oracle.com/javase/6/docs/api/ www.jorgesanchez.net http://java.sun.com)

Elabor: Ing. Fabiola Fuentes Herrera

Unidad 5 Arreglos

64

Das könnte Ihnen auch gefallen