IIC1103 Introducción a la Programación. Capítulo 5: Strings

Tamaño: px
Comenzar la demostración a partir de la página:

Download "IIC1103 Introducción a la Programación. Capítulo 5: Strings"

Transcripción

1 Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1103 Introducción a la Programación Capítulo 5: Strings Resumen teórico Los Strings son una secuencia de caracteres, incluyendo letras (mayúsculas y minúsculas), signos, espacios, caracteres especiales, etc. En palabras simples, los Strings sirven para guardar palabras, oraciones, etc. En java los Strings son objetos, tipo String. Al momento de crearlos, la manera más sencilla es: String hola = "Hello World"; Los Strings, al ser objetos, también pueden ser inicializados como tales, a través del constructor: String s = new String(); // String vacio String s = new String("Hola"); // String "Hola" Métodos de la clase String La clase String tiene una gran variedad de métodos útiles. La lista completa puede encontrarse en la documentación oficial ( A continuación explicamos los métodos que más se utilizan en este curso. int length() Sencillamente, retorna el largo (la cantidad de caracteres) de un String. String texto1 = "Hola"; String texto2 = "(/.,;>.)"; String texto3 = ""; String texto4 = " "; int n = texto1.length(); // 4 int m = texto2.length(); // 8 int p = texto3.length(); // 0 int q = texto4.length(); // 1 char charat(int index) Retorna el caracter que se encuentra en la posición dada por index. Si index es mayor o igual que el largo del String, el programa se caerá al ejecutar, aunque Eclipse no le avisará al respecto (no es capaz de prever dicho comportamiento), y al compilar tampoco habrá errores. Por esta razón, cada vez que utilice este método debe primero revisar el largo del String. String texto = " Hola Juanito!"; char c1 = texto.charat(0); // char c2 = texto.charat(1); // H char c3 = texto.charat(13); //! char c4 = texto.charat(20); // error char c5 = texto.charat( texto.length() - 1 ); //! IIC1103 Capítulo 5: Strings 1

2 Ejemplo de cómo evitar errores: String texto = Usuario.texto("Ingrese un texto:"); char c; if(texto.length() > 20) { c = texto.charat(20); //... else { Usuario.mensaje("String"); boolean startswith(string s) Devuelve true si el String comienza con el String s entregado como parámetro. La coincidencia debe ser exacta (se distingue mayúsculas de minúsculas, por ejemplo, y los caracteres con tilde no son iguales a los que no lo llevan). String texto = " Hola Juanito!"; boolean b1 = texto.startswith(" "); // true boolean b2 = texto.startswith(" Hola ") // true boolean b3 = texto.startswith(" hola Juanito!") // false boolean b4 = texto.startswith(" Hola Juanito! ") // false boolean b5 = texto.startswith(" Hola Juanito!") // true boolean startswith(string s, int k) Como el método anterior, pero comienza a revisar desde el índice (posición) k, sin importar lo que haya antes. Si k == 0, entonces el método es equivalente al anterior. String texto = " Hola Juanito!"; boolean b1 = texto.startswith("hola", 1); // true boolean b2 = texto.startswith(" Juanito!", 5); // true boolean b3 = texto.startswith("a", 7); // false boolean b4 = texto.startswith(" ", 20); // false int indexof(char c) Devuelve un entero que indica la posición donde aparece por primera vez el caracter c. Si el caracter no aparece en todo el String, devuelve -1. String texto = " Hola Juanito!"; int n = texto.indexof( o ); // 2 int m = texto.indexof( ); // 5 int p = texto.indexof( ); // 0 int q = texto.indexof( z ); // -1 int indexof(string s) Similar al anterior, sólo que devuelve la posición donde aparece por primera vez un determinado String. String texto = "En la arboleda un arbolito"; int n = texto.indexof("arbol"); // 6 int m = texto.indexof("árbol"); // -1 int p = texto.indexof("boli"); // 20 int q = texto.indexof("bol"); // 8 IIC1103 Capítulo 5: Strings 2

3 int indexof(char c, int fromindex) y int indexof(string s, int fromindex) Como el método indexof(string s), pero comienza a buscar desde la posición fromindex. int lastindexof(char c), int lastindexof(string s), int lastindexof(char c, int fromindex), int lastindexof(string s, int fromindex) Como indexof(char c), pero en vez de buscar la primera aparición del char c, busca la última. Retorna -1 si no lo encuentra. Se definen de manera análoga a los anteriores: boolean equals(string s) Retorna true cuando ambos String son exactamente iguales. Esto quiere decir que el largo de ambos es el mismo, y que en cada posición encontramos el mismo caracter. String texto1 = "casa"; String texto2 = "caza"; String texto3 = "casi"; String texto4 = "casa"; String texto5 = "CaSa"; boolean b1 = texto1.equals(texto3); // false boolean b2 = texto4.equals(texto1); // true boolean b3 = texto3.equals(texto1); // false boolean b4 = texto1.equals(texto5); // false boolean equalsignorecase(string s) Retorna true cuando ambos String son iguales, sin importar mayúsculas y minúsculas. String texto1 = "casa"; String texto2 = "caza"; String texto3 = "casi"; String texto4 = "casa"; String texto5 = "CaSa"; boolean b1 = texto1.equalsignorecase(texto3); // false boolean b2 = texto4.equalsignorecase(texto1); // true boolean b3 = texto3.equalsignorecase(texto1); // false boolean b4 = texto1.equalsignorecase(texto5); // true int compareto(string s) Este método compara lexicográficamente dos String. Parte en el primer par de caracteres hasta encontrar un par de char distintos. Si encuentra dos caracteres distintos, retorna la diferencia entre ellos (recuerde que char funciona como un número entero). Si uno de los String comienza con el otro, retorna el número de caracteres adicionales que tiene. Si ambos String son iguales, retorna 0. String texto = "radiografía"; int n = texto.compareto("radio"); // 6 int m = texto.compareto("radiología"); // -5 int p = texto.compareto("rabia"); // 2 int q = texto.compareto("ralentizar"); // -8 int r = texto.compareto("radiografia"); // 132 int s = texto.compareto("radiografía"); // 0 IIC1103 Capítulo 5: Strings 3

4 String substring(int inicio, int fin) Retorna una parte del String: desde la posición inicio hasta la posición fin. String texto = "desenfreno"; String subtexto = texto.substring(5, 10); // "freno" String replaceall(string areemplazar, String reemplazo) Reemplaza todas las ocurrencias de areemplazar por reemplazo. String t1 = "El auto volaba rápido"; String t2 = t1.replaceall("auto", "avión")); // "El avión volaba rápido" IIC1103 Capítulo 5: Strings 4

5 Los Strings soportan todos los caracteres de la tabla ASCII: Fuente de referencia: Para utilizarlos se puede castear un número entero (la representación decimal del caracter según la tabla ASCII) a un char. char c = (char) 36; // signo pesos Además se pueden utilizar ciertos caracteres especiales, anteponiendo \: Descripción Representación Barra invertida \\ Tabulación horizontal \t Salto de Línea \n Comillas simples \ Comillas dobles \" IIC1103 Capítulo 5: Strings 5

6 Ejemplos Problema 1: Varios Enunciado Escriba métodos en Java que: Rote una palabra, por ejemplo auto queda otua. Ocupe una palabra para crear un palíndrome, por ejemplo auto queda autotua. Busque una palabra dentro de un texto y la marque con un, por ejemplo auto en Habian muchos autos queda Habian muchos autos. Cuente la cantidad de ocurrencias de una palabra en un texto, por ejemplo hola en El gato decia hola muchas veces al dia, hola, retorna 2. Criterios de solución Para rotar la palabra basta con crear un nuevo String (nueva variable) e ir concatenándole las letras de nuestro String original, pero recorriendo el original desde atrás hacia adelante (for por su largo/length). Muy similar al anterior, se puede hacer de dos maneras. Se le puede concatenar el string obtenido con el método anterior o se puede hacer de manera manual. Para encontrar donde aparece la palabra es claro que hay que ocupar indexof. Para agregar el la mejor manera es guardar la posición donde está la palabra buscada y ocuparla para separar la oración en dos substrings, uno con todos los caracteres a la izquierda de la posición y otro a la derecha. Luego concatenamos el subtring de la izquierda con un y el substring de la derecha. Para contar la cantidad de veces que aparece la palabra ocupamos indexof para ver si está, si la posición es distinta de -1 sumamos uno a la cantidad de veces que encontramos la palabra. Es importante cambiar la posición desde la que buscamos en nuestro String ya que, o si no, podemos contar infinitas veces la misma palabra. IIC1103 Capítulo 5: Strings 6

7 Posible solución import iic1103package.*; public class Principal { public static String palindromizar( String palindrome) { // obtengo el largo de la palabra enviada int largo = palindrome. length (); // iteramos hasta el largo menos 2 for ( int i = largo - 2; i >= 0; i --) { // le agregamos la ultima letra palindrome = palindrome + palindrome. charat (i); return palindrome; // retorno el palindrome public static String darvuelta( String palabra ) { // aqui guardamos el resultado String palabrarotada = ""; // parto desde el final y termino en el principio for ( int i = palabra. length () - 1; i >= 0; i --) { // le voy agregando los caracteres palabrarotada = palabrarotada + palabra. charat (i); // retorno la palabra rotada return palabrarotada; public static int buscarcantidad( String palabra, String textoausar) { // Contamos cuantas veces esta la palabra int veces = 0; int pos = 0; while (pos!= -1) { // Buscamos string y contamos, buscamos desde pos+1 para no volver a // leer la misma palabra pos = textoausar. indexof ( palabra, pos + 1); // si pos es distinta de -1 contamos una vez mas if (pos!= -1) { veces ++; return veces ; public static boolean buscarpalabra( String palabra, String textoausar) { // Busca la palabra int pos = textoausar. indexof ( palabra ); if ( pos!= -1) { // Agregamos "_" String textoamostrar = textoausar. substring(0, pos) + "_" + textoausar. substring( pos ); Usuario. mensajeconsola( textoamostrar); return true ; else { Usuario. mensajeconsola(" No fue encontrado el string " + palabra + " en el texto " ); return false ; public static void main( String[] args) { String nombre = " auto"; Usuario. mensajeconsola( palindromizar( nombre )); Usuario. mensajeconsola( darvuelta( nombre )); buscarpalabra(" hola", " El gato decia hola muchas veces al dia, hola " ); IIC1103 Capítulo 5: Strings 7

8 Problema 2: Clase String Enunciado Un desarrollador está construyendo la clase String de Java, pero a medio camino deja el tema botado y se va del país. Sin poder contactarlo, le piden a usted completar la clase, sabiendo que la representación interna, constructores y operadores ya existen, y se encuentran ya disponibles los siguientes métodos: char charat(int index) Retorna el caracter en la posición index. int compareto(string another) Compara dos strings lexicográficamente. int length() Retorna el largo del string. Para poder arreglar este dilema, le piden a usted desarrollar los siguientes métodos (utilizando sólo lo ya construido): String substring(int begin, int end) Retorna el substring que va desde la posición begin a la posición end, inclusive. Devuelve null si existe algún problema con los índices recibidos. String touppercase() Retorna un string equivalente al actual, pero con todas las letras convertidas a mayúsculas. Ignore caracteres que no pertenezcan al alfabeto inglés. static valueof(int i) Retorna el string que representa al entero i. int indexof(string str, int from) Retorna el índice en que se encuentra el string str en el string actual, o -1 si es que no se encuentra (o cualquier otro problema). Sólo encuentra str a a partir del índice from. Criterios de solución Método substring: Lo primero que debemos hacer es revisar que los parámetros recibidos correspondan aíndices válidos según el largo del String. Si el inicio es menor que cero y el fin mayor que el largo del String -1 entonces retornamos false. Si no, para obtener un substring, debemos implementar un ciclo (for por ejemplo) que recorra el String completo, desde el inicio hasta el fin recibidos como parámetros, y vaya obteniendo cada char con el método charat y lo vaya concatenando, formando así el substring a retornar. Método touppercase: Para cambiar las letras a mayúscula debemos implementar un ciclo que recorra todo el String obteniendo cada uno de sus caracteres con el método charat. Luego revisamos cada caracter si es que está en minúscula, para esto basta con comparar si se encuentra en el rango de a a z (recordando que los caracteres están ordenados en la tabla ASCII). Si está en minúscula lo que tenemos que hacer es al inicio de las mayúsculas A sumarle la distancia del caracter en minúscula al inicio de las minúsculas a. Así, tendremos el mismo caracter pero ahora en mayúscula. Método valueof: Para pasar el valor entero a String tenemos que revisar primero si el número es negativo o positivo. Si el número es negativo tenemos que agregar un guión - al String resultante. Luego recorremos el número y vamos obteniendo cada uno de sus dígitos (dividiendo el número por 10 y obteniendo el resto) y para cada dígito obtenemos el char que corresponde y lo concatenamos al String que representa el resultado de pasar el número a String. Método indexof: En este método lo que tenemos que hacer es recorrer todo el String, partiendo desde el inicio ingresado por el usuario. Dentro del ciclo debemos revisar el String ingresado como parámetro (el buscado) para revisar cada uno de sus caracteres y compararlos con el String original. Así si todos los caracteres coinciden devolvemos la posición donde encontramos el primer caracter que fue igual. IIC1103 Capítulo 5: Strings 8

9 Posible solución /** * Retorna el substring que va desde la posicion begin a la posicion end, * inclusive. Devuelve null si existe algun problema con los indices * recibido. */ public String substring( int begin, int end) { if ( begin < 0 end > length () - 1) return null ; String res = ""; for ( int i = begin ; i <= end; i++) res += charat (i); return res; /** * Retorna un string equivalente al actual, pero con todas las letras * convertidas a mayuscula. Ignora caracteres que no pertenezcan al alfabeto * ingles */ public String touppercase() { String res = ""; for ( int i = 0; i < length (); i++) { char aux = charat (i); if ( a <= aux && aux <= z ) res += ( char) ( aux + A - a ); else res += aux; return res; /** * Retorna el string que representa al entero i. */ public static String valueof ( int i) { if (i == 0) return "0"; boolean negative = false; if (i < 0) { negative = true; i = -i; String res = ""; while (i > 0) { res = " " + (char) (i % ) + res; i /= 10; if ( negative ) res = "-" + res; return res; /** * Retorna el indice en que se encuentra el string str en el string actual, * o -1 si es que no se encuentra (o cualquier otro problema ). Solo * encuentra str a a partir del indice from. */ public int indexof ( String str, int from) { for ( int i = from; i < length (); i ++) { for ( int j = 0; (i + j < length ()) && charat (i + j) == str. charat (j); j++) { if (j == str. length () - 1) return i; return -1; IIC1103 Capítulo 5: Strings 9

10 Problema 3: Iniciando un Juego Enunciado Debemos crear un algoritmo que permita inicializar un juego. Para ello debe pedir un texto al usuario en que se indiquen los datos necesarios. La primera palabra de este texto representará el modo en el cual se va a jugar, pudiendo ser MULTI, PC o DEMO. Luego viene un signo punto y coma (;) seguido por los nombres de los jugadores que intervendrán en el juego separados entre ellos por un guión (-). En caso de ser en modo PC solamente viene el nombre de un jugador, en cambio si es modo MULTI pueden venir entre 2 y 4 nombres. Los siguientes son un ejemplo del texto que se ingresa: MULTI;Marcos-Karen-Marcelo-Rosa PC;Marcos Para el primer texto su programa debiera iniciarse en modo Multi usuario para cuatro jugadores, con los nombres ahí descritos. En caso de ingresarse el segundo texto, su programa debiera inicializarse en modo versus PC, con un único usuario llamado Marcos. Criterios de solución Se nos pide reconocer un texto ingresado por el usuario. Como datos nos dan que los separadores son ; y -, para ello nuestro programa tiene que ser capaz de buscar el carácter ; (charat()), en una primera instancia para poder realizar la separación. Luego se nos pide verificar que la primera parte corresponda a MULTI, PC o DEMO (validación con equals). Con la segunda parte de esta división hacemos lo mismo que al principio y separamos por -, verificando que la cantidad de jugadores ingresados corresponda a la señalada según el enunciado. Posible solución import iic1103package.*; public class Principal { public static void main( String[] args) { while ( true) { String x = Usuario. texto (" Ingrese el mensaje a validar " ); if ( Validador(x)) break; // Metodo que valida el texto que es ingresado static boolean Validador( String validar ) { int donde = validar. indexof (";"); // buscamos el separador ";" if ( donde == -1 &&! validar. equalsignorecase(" DEMO ")) { Usuario. mensaje (" No es un formato valido " ); return false ; else if ( validar. equalsignorecase(" DEMO")) { // Notamos el tipo DEMO Usuario. mensaje (" Tipo de juego : DEMO"); return true ; String parte1 = validar. substring(0, donde ); String parte2 = validar. substring( donde + 1); String mensaje = ""; // Buscamos la contidad de jugadores int jugadores = cantidad_jugadores( parte2 ); if ( jugadores > 4) { // No pueden existir mas de 4 jugadores: Usuario. mensaje (" No es un formato valido : Ingreso mas de 4 jugadores"); return false ; IIC1103 Capítulo 5: Strings 10

11 if ( parte1. equalsignorecase("pc")) { if ( jugadores == 0) { // El tipo PC requiere minimo 1 jugador Usuario. mensaje (" No es un formato valido : No especifico jugadores para Pc"); return false ; mensaje = " Tipo de juego : PC" + \n + jugadores( parte2 ); else if ( parte1. equalsignorecase(" MULTI " )) { if ( jugadores < 2) { // El tipo MULTI requiere minimo 2 jugadores Usuario. mensaje (" No es un formato valido : no ingreso suficientes jugadores para el tipo Multi " ); return false ; mensaje = " Tipo de juego : MULTI " + \n + jugadores( parte2 ); else { Usuario. mensaje (" No es un formato valido " ); return false ; Usuario. mensaje ( mensaje ); return true ; // Metodo que Determina la cantidad de jugadores existentes static int cantidad_jugadores( String jugadores) { if ( jugadores. length () == 0) { return 0; int cantidad = 1; for ( int i = 0; i < jugadores. length (); i++) { if ( jugadores. charat (i) == - ) { cantidad ++; return cantidad ; // Metodo que retorna El mensaje correspondiente de los jugadores static String jugadores( String parte2 ) { String mensaje = " Jugador 1: "; int y = 1; for ( int k = 0; k < parte2. length (); k ++) { if ( parte2. charat (k) == - ) { // Encontro un -... asi que se salta al siguiente jugador y ++; mensaje += "\ njugador " + y + ": "; else { mensaje += parte2. charat (k); return mensaje ; IIC1103 Capítulo 5: Strings 11

12 Problema 4: Double Enunciado Haga un código que permita determinar si un texto ingresado es un double, independiente que el número este separado con:. o,. De ésta forma podemos usar seguros el método Double.ParseDouble(String str);. Criterios de solución Observamos que ésta es una validación simple, sólo debemos verificar que los caracteres sean números, signo negativo, o separadores válidos, además de que sólo exista un separador. Adicionalmente podemos hacer el método que transforme las comas en puntos, para que Java pueda manejar el número. Posible solución import iic1103package.*; public class Principal { public static void main( String[] args) { while ( true) { String x = Usuario. texto (" Ingrese el decimal a validar " ); if ( esdouble (x)) { x = remplazar(x); double numero = Double. parsedouble(x); Usuario. mensaje (" El numero ingresado es: " + numero ); break; // Metodo que valida si un numero es decimal static boolean esdouble ( String acomprobar) { if ( acomprobar. length () == 0) { // Si es vacio no sera un double return false ; int comas = 0; if (!(48 <= ( int) acomprobar. charat (0) && ( int) acomprobar. charat (0) <= 57) &&!(( int) acomprobar. charat (0) == 44 ( int) acomprobar. charat (0) == 46) && ( int) acomprobar. charat (0)!= 45) { return false ; // Si no es un numero, ni un separador ni un signo // -... no es un double for ( int i = 1; i < acomprobar. length (); i++) { boolean esnumero = 48 <= ( int) acomprobar. charat (i) && ( int) acomprobar. charat (i) <= 57; boolean escoma = ( int) acomprobar. charat (i) == 44 ( int) acomprobar. charat (i) == 46; if (! esnumero &&! escoma ) { return false ; else if ( acomprobar. charat (i) == 44 acomprobar. charat (i) == 46) { comas ++; if ( comas > 1) return false ; Usuario. mensaje ("Es un double " ); return true ; // Metodo que reemplaza la primera, por. static String remplazar( String s) { int donde = s. indexof (","); if( donde!= -1) { return (s. substring(0, donde ) +. + s. substring( donde + 1)); else{ return s; IIC1103 Capítulo 5: Strings 12

13 Problema 5: Operaciones Enunciado Realice un método que reciba un String con una operación básica (+,,,/) y devuelve el resultado de esa operación. Por ejemplo si recibe 4, debe devolver 39,5. Para esto puede ocupar sólo los siguientes métodos de la clase String: charat, length Criterios de solución Lo primero que debemos hacer es identificar cuál es la operación que se encuentra en el String. Para esto utilizamos un ciclo (un for por ejemplo), para recorrer todo el String e ir obteniendo cada uno de los caracteres con el método charat. Cada caracter lo comparamos con una de las posibles operaciones. Al encontrar la operación guardamos el caracter y también la posición donde la encontramos para luego obtener los números que vienen en el String. Para recuperar los números del String, como sólo podemos utilizar el método charat, lo que hacemos son dos ciclos, uno que recorra la primera parte del string obteniendo cada uno de los caracteres y concatenándolos en un nuevo String que represente el primer número, y el segundo ciclo que haga lo mismo pero con la segunda parte del String. Luego transformamos los Strings que representan a los números en variables de tipo double y revisando la operación encontrada retornamos el resultado de la operación. Posible solución public double Operacion( String op) { // Debemos identificar cual es la operacion que se encuentra en el String char opdada = 0; int posop = 0; for ( int i = 0; i < op. length (); i ++) { if ( op. charat (i) == + op. charat (i) == - op. charat (i) == * op. charat (i) == / ) { opdada = op. charat (i ); posop = i; break; // Ahora debemos identificar los valores involucrados double valor1 = 0, valor2 = 0; String aux = ""; for ( int i = 0; i < posop ; i++) { aux += op. charat (i); valor1 = Double. parsedouble( aux ); aux = ""; for ( int i = posop + 1; i < op. length (); i++) { aux += op. charat (i); valor2 = Double. parsedouble( aux ); if ( opdada == + ) { return valor1 + valor2 ; else if ( opdada == - ) { return valor1 - valor2 ; else if ( opdada == * ) { return valor1 * valor2 ; else { return valor1 / valor2 ; IIC1103 Capítulo 5: Strings 13

14 Problema 6: Palabra Abecedaria Enunciado Una palabra se dice abecedaria si las letras que la forman se encuentran en orden alfabético si son leídas de izquierda a derecha. Por ejemplo, las siguientes palabras cumplen con ser abecedarias: Amor, filo, chintz, luz, dinos. Escriba un método que permita determinar si una palabra es abecedaria. El método debe recibir un string como parámetro y retornar verdadero en caso que la palabra sea abecedaria, y falso en caso contrario. Para esto puede ocupar sólo los siguientes métodos de la clase String: charat, length, equals, compareto Criterios de solución Para revisar si la palabra es abecedaria tenemos que ir revisando cada uno de los caracteres y ver que ninguno sea mayor (lexicográficamente) que el siguiente. Para eso lo mejor es utilizar un ciclo, un for por ejemplo, para recorrer la palabra entera, caracter por caracter. Utilizando el método charat obtenemos el caracter actual y el siguiente y comparamos si el actual es mayor que el siguiente. Si esto ocurre retornamos false, de lo contrario seguimos revisando el resto de la palabra. Además de esto tenemos que considerar que pueden haber caracteres en mayúscula, los cuales para que lo anterior funcione debemos pasarlos a minúscula. Para esto simplemente le restamos el inicio de las letras mayúsculas ( A ) y le sumamos el inicio de las letras minúsculas ( a ). Posible solución public class Palabra { public boolean abecedaria( String palabra ) { for ( int i = 0; i < palabra. length () - 1; i++) { char primeraletra = palabra. charat (i); char segundaletra = palabra. charat (i + 1); if ( primeraletra >= A && primeraletra <= Z ) primeraletra = ( char) (( int) primeraletra - ( int) A + ( int) a ); if ( segundaletra >= A && segundaletra <= Z ) segundaletra = ( char) (( int) segundaletra - ( int) A + ( int) a ); if ( primeraletra > segundaletra) return false ; return true ; IIC1103 Capítulo 5: Strings 14

15 Problema 7: Combinación Enunciado Implemente una clase llamada Combinacion, la cual recibe dos String en el constructor. Su clase debe tener un método que reciba un char y retorne la cantidad de apariciones de ese char en ambos textos. Un método que retorne un String formado por la intercalación de las letras que forman ambos textos. Otro método que retorne el resultado de la comparación entre dos substrings de los textos, recibiendo como parámetros los índices iniciales y finales para cada uno de ellos. Finalmente un método que permita reemplazar un cierto char por otro en ambos textos. Para esto puede ocupar sólo los siguientes métodos de la clase String: charat, length, equals, compareto Criterios de solución Lo primero que debemos hacer es declarar la clase Combinacion con dos atributos de tipo String. Luego debemos crear el constructor, el cual reciba dos Strings como parámetros y los asigne a los atributos correspondientes. Para el método encargado de contar las apariciones de un char entregado como parámetro, lo que tenemos que hacer es un ciclo (for por ejemplo) que recorra ambos Strings y vaya comparando cada uno de sus caracteres, utilizando el método charat e ir contando en una variable cuantas veces el caracter es igual al recibido como parámetro. Para el método que intercale ambos Strings lo que tenemos que hacer es nuevamente implementar un ciclo que vaya recorriendo cada String y obteniendo uno a uno sus caracteres con el método charat. Así se concatena un caracter del primer String seguido de un caracter del segundo. En este método tenemos que revisar siempre que el String aún no se acabe ya que puede ocurrir que uno sea más largo que el otro, en tal caso simplemente intercalamos hasta que se termine el menor y luego concatenamos el resto del mayor. Para el método que compara dos substrings de los textos debemos primero obtener los substrings según los datos de inicio y fin recibidos como parámetros. Para esto implementamos ciclos que recorran los strings desde el inicio hasta el fin recibidos como parámetros y vayan formando los dos substrings, concatenando los caracteres que se obtienen utilizando el método charat. Luego utilizando el método equals o comparet o, revisamos si son iguales, y retornamos true o false según corresponda. Para el método que reemplace un char por otro lo que podemos hacer es implementar un ciclo que recorra ambos textos y que vaya obteniendo, con el método charat, cada uno de los caracteres. Revisamos el caracter comparando si es igual al que se quiere reemplazar. Si es así, concatenamos el nuevo char, si no lo es, concatenamos el char original, formando así el texto con los caracteres reemplazados. IIC1103 Capítulo 5: Strings 15

16 Posible solución public class Combinacion { private String texto1 ; private String texto2 ; public Combinacion( String t1, String t2) { texto1 = t1; texto2 = t2; public int Apariciones( char c) { String t = texto1 + texto2 ; int apariciones = 0; for ( int i = 0; i < t. length (); i++) { if (t. charat (i) == c) { apariciones++; return apariciones; public String Intercalacion() { String res = ""; for ( int i = 0; i < texto1. length () i < texto2. length (); i++) { if (i < texto1. length ()) { res += texto1. charat ( i); if (i < texto2. length ()) { res += texto2. charat ( i); return res; public boolean Comparar ( int i1, int f1, int i2, int f2) { // Obtenemos ambos substrings String t1 = ""; String t2 = ""; for ( int i = i1; i <= f1; i++) { t1 += texto1. charat (i); for ( int i = i2; i <= f2; i++) { t2 += texto2. charat (i); return t1. equals (t2 ); public void Reemplazar( char charoriginal, char charreemplazo) { String aux = ""; for ( int i = 0; i < texto1. length (); i ++) { if ( texto1. charat (i) == charoriginal) { aux += charreemplazo; else { aux += texto1. charat ( i); texto1 = aux; aux = ""; for ( int i = 0; i < texto2. length (); i ++) { if ( texto2. charat (i) == charoriginal) { aux += charreemplazo; else { aux += texto2. charat ( i); texto2 = aux; IIC1103 Capítulo 5: Strings 16

17 Problema 8: Código Simple Enunciado Haga un programa que dado un mensaje y un número codifique el mensaje, moviendo las letras un número de posiciones igual al número ingresado, en la tabla ASCII. Por simplicidad puede transformar el mensaje a minúsculas. Además escriba en el main una prueba del funcionamiento del programa. Criterios de solución Según el enunciado, primero debemos pedir al usuario el mensaje a codificar y un número (lo llamaremos base del código). Dados estos números debemos obtener el valor de cada letra (sólo las letras) en la tabla ASCII, y sumarle la base. Luego imprimiremos el mensaje, para mostrar el mensaje codificado. Para decodificar el mensaje el procedimiento es inverso, debemos restar la base, pero considerando que cambiaron los extremos en que los caracteres corresponden a letras (se suma la base a cada extremo). Además debemos decodificar el mensaje con una base distinta, para mostrar que se requiere de ésta para poder realizar la operación. Posible solución import iic1103package.*; public class Principal { public static void main( String[] args) { String mensaje = Usuario. texto (" Ingrese el mensaje que desea codificar."); int base = Usuario. entero (" Ingrese la base del codigo " ); String codificado = codificar( mensaje, base); Usuario. mensaje (" Codificado:\ n" + codificado); Usuario. mensaje (" Decodificado Base 10:\ n" + decodificar( codificado, 10)); Usuario. mensaje (" Decodificado Base " + base + " :\ n" + decodificar( codificado, base)); public static String codificar( String mensaje, int base ) { String resultado = ""; mensaje = mensaje. tolowercase(); for ( int i = 0; i < mensaje. length (); i ++) { if ( mensaje. charat (i) >= 97 && mensaje. charat (i) <= 122) { resultado += ( char) ( mensaje. charat (i) + base); else { resultado += ( char) mensaje. charat (i); return resultado; public static String decodificar( String mensaje, int base ) { String resultado = ""; mensaje = mensaje. tolowercase(); for ( int i = 0; i < mensaje. length (); i ++) { if ( mensaje. charat (i) >= 97 + base && mensaje. charat (i) <= base) { resultado += ( char) ( mensaje. charat (i) - base); else { resultado += ( char) mensaje. charat (i); return resultado; IIC1103 Capítulo 5: Strings 17

18 Problema 9: Ahorcado Enunciado Realice un programa en Java para jugar Al ahorcado. Recuerde que este juego consiste en tratar de adivinar una palabra, letra por letra, en una cantidad preestablecida de intentos. Para este problema suponga que la palabra (oración 1 ) a adivinar es hola mundo, aceptando a lo más 3 intentos fallidos por parte del usuario. Solicite a través de una ventana al usuario que ingrese las letras, y muestre en consola la palabra con las letras que lleva descubiertas. Ejemplo: si el mensaje es hola mundo, y el usuario a ingreso o, a, z, debe mostrar en consola _o_a o. Por simplicidad puede suponer que tanto el mensaje secreto, como las letras ingresadas por el usuario, son en minúscula. Criterios de solución El enunciado nos da pocas restricciones, salvo el mensaje y la cantidad de intentos. Pero sabemos que debemos validar que el usuario ingrese sólo una letra, comparar si corresponde a alguna(s) de la palabra secreta, y de ser así cambiarla. Repetir esto mientras no haya ganado (descifrado la palabra completa) o perdido (alcanzado el máximo de errores permitidos). Posible solución import iic1103package.*; public class PrincipalAhorcado { /** * Programa para jugar el juego del Ahorcado */ public static void main( String[] args) { String palabraclave = " hola mundo "; // palabra clave establecida int intentos = 3; // cantidad de intentos establecidos // creamos un objetos de la clase Ahorcado Ahorcado a1 = new Ahorcado ( palabraclave, intentos ); // mostramos el mensaje inicial Usuario. mensaje (" Bienvenido! " + "\ nintente adivinar la palabra secreta. Tiene " + intentos + " intentos " ); // ciclo del juego ( mientras pueda seguir jugando ) while (a1. seguirjugando()) { // mostrar lo que lleva Usuario. mensaje (" Hasta ahora lleva : " + a1. getpalabraactual()); // guardaremos la letra que ingrese el usuario String palabra = ""; // verificamos que sea solo una letra while ( palabra. length ()!= 1) { palabra = Usuario. texto (" Ingrese la letra que quiere descubrir: "); // tomamos el primer caracter del string char c = palabra. charat (0); // preguntar si esta en la palabra secreta a1. preguntarletra(c); // fuera del while ( se acabo el juego ) // vemos si gano if ( a1.gano ()) { // mostramos el mensaje de felicitacion Usuario. mensaje (" Felicitaciones! Ha descubierto la palabra secreta " ); else { // perdio, mostramos el mensaje avisando Usuario. mensaje (" Ha perdido." + "\n La palabra era: " + a1. getpalabraclave()); 1 si ingresa una oración, los espacios no se deben ocultar, es decir, colocando el IIC1103 Capítulo 5: Strings 18

19 public class Ahorcado { // [ ATRIBUTOS] String palabraclave; // palabra clave del juego String palabraactual; // palabra que lleva el usuario int intentosfallidos; // cantidad de intentos fallidos int intentosmaximo; // cantidad de intentos maximos por fallar // [ METODOS ] // Constructor de la clase public Ahorcado ( String palabraclave, int intentosmaximo) { this. palabraclave = palabraclave; this. intentosfallidos = 0; this. intentosmaximo = intentosmaximo; this. palabraactual = // getters public int getintentosactual() { return intentosfallidos; public String getpalabraactual() { return palabraactual; public String getpalabraclave() { return palabraclave; ocultarpalabra( palabraclave); // Otros... // metodo que determina si la letra esta en la palabra clave public void preguntarletra( char c) { if ( this. palabraclave. contains (c + "")) { descubrirletra(c); else { this. intentosfallidos++; // metodo que cambia cada "_" por la letra que corresponde public void descubrirletra( char c) { String aux = ""; for ( int i = 0; i < this. palabraclave. length (); i++) { if ( this. palabraclave. charat (i) == c) { aux += this. palabraclave. charat (i); else { aux += this. palabraactual. charat (i); this. palabraactual = aux; // esconde la palabra clave, cambiando cada caracter por "_" public String ocultarpalabra( String m) { String s = ""; for ( int i = 0; i < m. length (); i++) { if (m. charat (i) == ) { s += " "; else { s += "_"; return s; // determina si se puede seguir jugando ( no ha ganado ni perdido ) public boolean seguirjugando() { if ( this. intentosfallidos < this. intentosmaximo &&! gano ()) { return true ; else { return false ; // determina si gano public boolean gano () { return this. palabraclave. equals ( this. palabraactual); IIC1103 Capítulo 5: Strings 19

20 Problema 10: Jerigonza Enunciado La jerigonza, jerigonzo o jerigoncio es una variante lúdica del habla 2. En jerigonza escondido se dice epescopondipidopo. Además del entretenimiento, también puede usarse como un modo de codificar el mensaje de forma que otras personas cercanas a los hablantes no acostumbrados a esta forma de hablar no consigan entender lo que los hablantes dicen. Se le pide realizar un programa que codifique, y decodifique, mensajes escritos en este dialecto. Para ello, se sabe que después de cada vocal se agrega el sonido p y se repite la vocal 3. Carlos genera Caparlopos. Por simplicidad, puede asumir que el usuario ingresará texto sin tildes Ejemplo: (conversación) Hopolapa, copomopo epestapas? (Hola, como estas?) Yopo epestopoypi bipiepen, ypi tupu? (Yo estoy bien, y tu?) Tapambiepen, grapacipiapas. (Tambien, gracias.) Epestapamopos hapablapandopo epen jeperipigoponzapa (Estamos hablando en jerigonza) Epesopo yapa lopo sapabipiapa (Eso ya lo sabia) Criterios de solución Es realmente fácil. Debemos revisar cada letra: si es una vocal se repite como dice el enunciado, y cualquier otro caracter se deja igual, salvo la y que se considerará como vocal, siempre y cuando lo que siga no sea una vocal (en este caso, hay que cuidar que no pasemos el largo del string) la letra y también será considerada como vocal cuando corresponda, esto es, cuando no anteceda a alguna vocal IIC1103 Capítulo 5: Strings 20

21 Posible solución import iic1103package.*; public class Jerigonza { /** * Programa que escribe el texto ingresado por el usuario como Jerigonza. * ( se asume que no ingresa ningun tipo de tilde ) */ public static void main( String[] args) { String texto = Usuario. texto (" Ingrese el texto a Jerigonzar"); String cambiado = cambiar ( texto ); Usuario. mensaje ( cambiado ); private static String cambiar ( String texto ) { String aux = ""; for ( int i = 0; i < texto. length (); i ++) { if ( texto. charat (i) == a ) { aux += " apa"; else if ( texto. charat (i) == A ) { aux += " Apa"; else if ( texto. charat (i) == e ) { aux += " epe"; else if ( texto. charat (i) == E ) { aux += " Epe"; else if ( texto. charat (i) == i ) { aux += " ipi"; else if ( texto. charat (i) == I ) { aux += " Ipi"; else if ( texto. charat (i) == o ) { aux += " opo"; else if ( texto. charat (i) == O ) { aux += " Opo"; else if ( texto. charat (i) == u ) { aux += " upu"; else if ( texto. charat (i) == U ) { aux += " Upu"; else if ( texto. charat (i) == y && (( i < texto. length () - 1) && texto. charat (i + 1)!= a && texto. charat (i + 1)!= A && texto. charat (i + 1)!= e && texto. charat (i + 1)!= E && texto. charat (i + 1)!= i && texto. charat (i + 1)!= I && texto. charat (i + 1)!= o && texto. charat (i + 1)!= O && texto. charat (i + 1)!= u && texto. charat (i + 1)!= U )) { aux += " ypi"; else if ( texto. charat (i) == Y && (( i < texto. length () - 1) && texto. charat (i + 1)!= a && texto. charat (i + 1)!= A && texto. charat (i + 1)!= e && texto. charat (i + 1)!= E && texto. charat (i + 1)!= i && texto. charat (i + 1)!= I && texto. charat (i + 1)!= o && texto. charat (i + 1)!= O && texto. charat (i + 1)!= u && texto. charat (i + 1)!= U )) { aux += " Ypi"; else { aux += texto. charat (i ); return aux; IIC1103 Capítulo 5: Strings 21

22 Problema 11: Cifrado ROT13 Enunciado Implemente una clase para encriptar/desencriptar mensajes utilizando el mecanismo de cifrado ROT13. La clase debe contener por lo menos dos métodos: public static String cifrar(string msg); Encripta un mensaje en ROT13. public static String descifrar(string msg); Desencripta un mensaje en ROT13. Descripción de ROT13 ( ROT13 ( rotar 13 posiciones ) es un sencillo cifrado César utilizado para ocultar un texto sustituyendo cada letra por la letra que está trece posiciones por delante en el alfabeto. A se convierte en N, B se convierte en O y así hasta la M, que se convierte en Z. Luego la secuencia se invierte: N se convierte en A, O se convierte en B y así hasta la Z, que se convierte en M. Este algoritmo se utiliza en foros de Internet como medio para ocultar de miradas casuales el final de un chiste, la solución a un acertijo, un spoiler de una película o una historia, o algún texto ofensivo. ROT13 se ha descrito como el equivalente en Usenet de una revista que imprime bocabajo la respuesta a un pasatiempo. El nombre ROT13 se originó en Usenet a principios de los 80, y el método se ha convertido en un estándar de facto. El ROT13 no proporciona seguridad criptográfica real y no se usa para tales fines; de hecho, a menudo se usa como ejemplo canónico de cifrado débil. Otra característica de este cifrado es que es simétrico; esto es, para deshacer el ROT13, se aplica el mismo algoritmo, de manera que para cifrar y descifrar se puede utilizar el mismo código. Criterios de solución Primero debemos tener en cuenta que este mecanismo sólo toma en consideración las 26 letras del abecedario, sin considerar la ñ. Luego, debemos sumar 13 posiciones a cada carácter; si se pasa de la z, volvemos a la a. Como sabemos que lo char se pueden operar como si fueran enteros, basta con sumar 13 a cada char del String. Un punto muy importante es darse cuenta de que el mecanismo para descifrar es exactamente el mismo que para cifrar, por lo tanto no hace falta replicar el código sino que simplemente el método descifrar(..) hará un llamado al método cifrar(..). IIC1103 Capítulo 5: Strings 22

23 Posible solución public class Cifrado { // Declaro un metodo con nombre " cifrar "; retorna una variable de tipo // String y recibe como argumento otro String. public static String cifrar ( String msg) { // Creo una variable de tipo String y la inicializo con un String vacio. String msgrot13 = ""; for ( int i = 0; i < msg. length (); ++i) { // Creo una variable de tipo char y almaceno el caracter que se // encuentra en la posicion i del String msg. char x = msg. charat (i); // A continuacion utilizare un " truco " para comparar caracteres // utilizando su valor en la tabla ASCII. // Noten que para escribir un caracter uso comillas simples en vez // de comillas dobles, ya que las comillas dobles sirve para // declarar variables de tipo String. // Si el caracter es mayor o igual que A ( en la tabla ASCII ) y // menor o igual que Z // ( esto quiere decir : " si el caracter es una letra mayuscula") if (x >= A && x <= Z ) { // Si me paso de Z, entonces le resto 13 al caracter. if (x + 13 > Z ) { x -= 13; else { // Sino le sumo 13. x += 13; // Si el caracter es una letra minuscula, entonces... else if (x >= a && x <= z ) { // Si me paso de Z, entonces le resto 13 al caracter. if (x + 13 > z ) { x -= 13; else { // Sino le sumo 13. x += 13; // Agrego x al resultado. msgrot13 += x; // Retorno el String cifrado. return msgrot13 ; // En ROT13 el cifrado y descifrado se realiza con la misma funcion, por lo // tanto en el // metodo descifrar simplemten llamo al metodo cifrar y retorno su valor. public static String descifrar( String msg) { return cifrar ( msg); IIC1103 Capítulo 5: Strings 23

24 Problema 12: Codificación Enunciado El algoritmo de codificación del capitán Crunch codifica un mensaje de texto tomando cada una de sus letras y sumándole 13. Por ejemplo, se convierte la letra a en n y la letra b en o. Las letras que se obtienen forman una anillo al final, por lo que al codificar la letra z ésta se convierte en m. El procedimiento general para codificar entonces, corresponde a sumar 13 a cada una de las letras, y para decodificar restar 13 a cada letra. El método del capitán Crunch se puede generalizar, de manera que, en lugar de agregar 13 a las letras, se agregue un número cualquiera. Usted deberá implementar la clase Codificador la cual permite codificar y decodificar mensajes usando el algoritmo antes descrito. Puede suponer que el mensaje sólo contiene letras minúsculas del alfabeto inglés (i.e. sin ch, ll, ni ñ ). En detalle, su código deberá cumplir con lo siguiente: Su clase debe proveer de un método constructor que reciba como parámetro la cantidad que se debe sumar o restar a cada una de letras para codificar o decodificar un mensaje. El constructor debe verificar que el valor recibido sea un entero mayor o igual que 0, y menor o igual que 26. El constructor además debe ser capaz de establecer si fue creado en forma exitosa para que cuando el objeto sea utilizado para codificar o decodificar, se pueda determinar si la operación se puede ejecutar o no. Escriba un método que permita codificar y decodificar un mensaje. El método recibe como parámetro el mensaje y un boolean que indica si se desea codificar (true) o decodificar (false). El método retorna un String con el mensaje codificado o decodificado según sea el caso. En caso que el objeto codificador no haya sido inicializado en forma exitosa retorna el mensaje #ERROR#. Para esto puede ocupar sólo los siguientes métodos de la clase String: charat, length, equals, compareto Criterios de solución Lo primero que debemos hacer, como nos indica el enunciado, es implementar el constructor de la clase. Éste debe recibir el número que se sumará y restará para encriptar y desencriptar y guardarlo como atributo. Además, como debemos mostrar si el objeto pudo ser creado con éxito, y el constructor no puede retornar nada, agregamos otro atributo a la clase que indique si el objeto se creó bien o no. Para el método encriptar lo que primero tenemos que hacer es revisar si el objeto se creó con éxito. Si no fue así retornamos el mensaje de error. Luego tenemos que determinar si el usuario desea encriptar o desencriptar, para saber si sumar o restar a cada caracter. A continuación, debemos sumar (o restar) tantas posiciones como valor determinado por el usuario en el constructor, a cada carácter; si se pasa de la z, volvemos a la a. Como sabemos que los char se pueden operar como si fueran enteros, basta con sumar (o restar) la cantidad adecuada a cada char del String. IIC1103 Capítulo 5: Strings 24

25 Posible solución public class Codificador { private int millave ; private boolean habilitado; public Codificador( int llave ) { if (( llave >= 0) && ( llave <= 26)) { millave = llave ; habilitado = true; else { habilitado = false; public String encriptar( String mensaje, boolean encriptar) { String encriptado = ""; int cero = a - 1; int llaveactual = millave ; if (! encriptar) llaveactual *= -1; for ( int i = 0; i < mensaje. length (); i ++) { char letra = mensaje. charat (i); int valor = letra ; if ( letra!= ) { valor = letra + llaveactual - cero; if ( encriptar) { if ( valor > 26) valor %= 26; else { if ( valor < 0) valor = 26 + valor ; valor += cero; encriptado += ( char) ( valor ); if ( habilitado) return encriptado; return "# ERROR #"; IIC1103 Capítulo 5: Strings 25

26 Problema 13: Encriptar Enunciado Se desea enviar mensajes encriptados. Para ello, Ud. deberá crear un algoritmo que encripte un mensaje cualquiera, siguiendo esta estrategia: Ordene el mensaje ingresado, de manera que forme un cuadrado perfecto (el número de filas es igual al número de columnas). No debe considerar los espacios en blanco. En caso de que el número de letras no den un cuadrado perfecto, añada el caracter de Finalmente, lea el mensaje de arriba abajo y de izquierda a derecha. A continuación se presenta un ejemplo: // Mensaje original " Mensaje a ser encriptado" // Este seria nuestro cuadrado, se eliminan los espacios y se Mensa jease rencr iptad o@@@@ // Mensaje resultante " Mjrioeeep@nant@ssca@aerd@" Aquí se encuentra la clase principal Encriptador que hace uso de la clase Cypher. Ud. deberá implementar todos los métodos de la clase Cypher que son invocados por el Encriptador: import iic1103package.*; public class Encriptador { public static void main( String[] args) { Cypher c = new Cypher(); String msg = Usuario. texto (" Ingrese el mensaje a encriptar"); // Quitar espacios del mensaje ingresado msg = c. QuitarEspacios( msg ); // Determinar el tamanio del Cuadrado ( nro. filas = nro. columnas ) int nro_filas = c. CuadradoPerfecto( msg); // Algoritmo de encriptacion String msg2 = c. Encriptar(msg, nro_filas); Usuario. mensaje ( msg2 ); Criterios de solución Método QuitarEspacios: En este método tenemos que recorrer el String e ir obteniendo cada caracter con el método charat y revisar si es igual al caracter que representa el espacio. Si no es igual lo concatenamos al String final. Así el String que retornamos no contiene ningún espacio. Método CuadradoPerfecto: En este método tenemos que determinar el número de filas (igual al número de columnas). Para esto utilizamos el método Math.sqrt con el largo del String, considerando que si la raiz no es exacta tenemos que sumar uno al resultado para poder considerar todas las letras del mensaje. Método Encriptar: Lo primero que tenemos que hacer es revisar si el mensaje ocupa todas las posiciones del cuadrado. De no ser así debemos rellenar los caracteres que faltan Después para encriptar lo importante es recorrer bien el String. Así, partimos desde el comienzo y con un ciclo vamos recorriendo todo el String. Dentro de este ciclo implementamos otro, el cual vaya obteniendo los caracteres para concatenar en la respuesta final. Para obtener los caracteres tenemos que avanzar tantas posiciones como el número de columnas tenga el cuadrado, así estaremos recorriendo el cuadrado leyendo por columna. IIC1103 Capítulo 5: Strings 26

27 Posible solución public class Cypher { public String Encriptar( String s, int total ) { String respuesta = ""; // aniadir caracteres extra while (s. length () < ( total * total )) s = s + "@"; // llenar el cuadrado for ( int i = 0; i < total ; i++) { for ( int j = i; j < s. length (); j = j + total ) respuesta = respuesta + s. charat (j); return respuesta; public int CuadradoPerfecto( String s) { int total = ( int) Math. sqrt (s. length ()); if ( total * total!= s. length ()) total ++; return total ; public String QuitarEspacios( String s) { String otro = ""; for ( int i = 0; i < s. length (); i++) { if (s. charat (i)!= ) otro += s. charat (i); return otro ; IIC1103 Capítulo 5: Strings 27

28 Problema 14: Nombre de Usuario Enunciado Cada alumno de la Universidad tiene un nombre de usuario, que es el nombre al cual se le envía en el dominio de la Universidad. Este nombre de usuario se determina a partir del nombre real del alumno y está compuesto por 8 caracteres que pueden ser letras o números. Escriba la clase NombredeUsuario, que tiene como atributos al menos el nombre real del alumno, el nombre de usuario inicial, y el nombre de usuario final. Además, esta clase debe tener al menos los siguientes tres métodos: Un constructor, que recibe como parámetros cuatro strings, correspondientes al primer nombre, segundo nombre, primer apellido y segundo apellido del alumno. Si el alumno tiene sólo un nombre, el parámetro correspondiente al segundo nombre es un String vacío. En el atributo, el nombre real del alumno debe quedar escrito en la forma familiar <primer nombre> <segundo nombre> <primer apellido> <segundo apellido>, o bien <primer nombre> <primer apellido> <segundo apellido> (notar que hay espacios en blanco). Un método nombreusuarioinicial, que determina el nombre de usuario inicial del alumno, a partir de su nombre real, y lo guarda en el atributo correspondiente. El nombre de usuario inicial está formado por la inicial del primer nombre, seguido por la inicial del segundo nombre, y seguido por las seis primeras letras del primer apellido (para totalizar los 8 caracteres) Si el alumno no tiene segundo nombre, entonces la inicial del segundo nombre es reemplazada por la segunda letra del primer nombre. Si el primer apellido tiene menos de seis letras, entonces las letras faltantes son reemplazadas por las primeras letras del segundo apellido. Un método nombreusuariofinal, que recibe como parámetro un string con todos los nombres de usuario válidos en la Universidad (cada uno separado por un punto), y que determina el nombre de usuario final del alumno y lo guarda en el atributo correspondiente. Para determinar el nombre de usuario final hay que revisar el string de nombres de usuario válidos. Si el nombre de usuario inicial no aparece en el string, entonces el nombre de usuario final es igual al inicial. En cambio, si el nombre de usuario inicial aparece en el string, entonces el nombre de usuario final se determina de la siguiente manera: se elige aleatoriamente un número entre 1 y 7, y se cambia la letra que está en esa posición en el nombre de usuario inicial por uno de los dígitos 1 al 9, también elegido aleatoriamente. Suponga que siempre la cantidad de letras del apellido paterno más la cantidad de letras del apellido materno es al menos 6. Criterios de solución Atributos: Lo primero que tenemos que hacer es declarar los atributos de la clase como nos indican el enunciado. Para esto utilizamos 3 Strings para guardar el nombre de usuario inicial, el nombre real y el nombre de usuario final. Además podemos guardar los nombres y apellidos del usuario en otros Strings. Constructor: Recibimos los parámetros que nos indica el enunciado y revisamos si el segundo nombre viene nulo. Según esto formamos el nombre real. Método nombreusuarioinicial : Lo primero que tenemos que hacer es revisar si el usuario tiene segundo nombre. Si es así tomamos el primer caracter (con el método charat()) del primer nombre y el primer caracter del segundo nombre. Si no, tomamos los dos primeros caracteres del primer nombre. Concatenamos los caracteres obtenidos en el atributo que representa el nombre de usuario inicial. Luego, revisamos, con el método length(), si el apellido del usuario tienen más de 6 letras. Si es así, con el método substring obtenemos las 6 primeras letras y las concatenamos al nombre de usuario IIC1103 Capítulo 5: Strings 28

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación Competencias IIC1103 Introducción a la Programación (I/2010) Interrogación 1 13 de Abril de 2010

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

Ejemplos de conversión de reales a enteros

Ejemplos de conversión de reales a enteros Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

Los números racionales

Los números racionales Los números racionales Los números racionales Los números fraccionarios o fracciones permiten representar aquellas situaciones en las que se obtiene o se debe una parte de un objeto. Todas las fracciones

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES CASO PRÁCTICO DISTRIBUCIÓN DE COSTES Nuestra empresa tiene centros de distribución en tres ciudades europeas: Zaragoza, Milán y Burdeos. Hemos solicitado a los responsables de cada uno de los centros que

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

Los elementos que usualmente componen la identidad digital son:

Los elementos que usualmente componen la identidad digital son: Enero 2016 Programa Civismo Digital - Escolar Material Educativo Lección: TU IDENTIDAD EN INTERNET v. 1.0 Topico: Alfabetización Digital, Huella Digital Objetivo: Fomentar en los alumnos la importancia

Más detalles

Lección 4: Suma y resta de números racionales

Lección 4: Suma y resta de números racionales GUÍA DE MATEMÁTICAS II Lección : Suma y resta de números racionales En esta lección recordaremos cómo sumar y restar números racionales. Como los racionales pueden estar representados como fracción o decimal,

Más detalles

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones Fracciones. Las fracciones y los números Racionales Las fracciones se utilizan cotidianamente en contextos relacionados con la medida, el reparto o como forma de relacionar dos cantidades. Tenemos entonces

Más detalles

UNIDAD 1. LOS NÚMEROS ENTEROS.

UNIDAD 1. LOS NÚMEROS ENTEROS. UNIDAD 1. LOS NÚMEROS ENTEROS. Al final deberás haber aprendido... Interpretar y expresar números enteros. Representar números enteros en la recta numérica. Comparar y ordenar números enteros. Realizar

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

Matrices Invertibles y Elementos de Álgebra Matricial

Matrices Invertibles y Elementos de Álgebra Matricial Matrices Invertibles y Elementos de Álgebra Matricial Departamento de Matemáticas, CCIR/ITESM 12 de enero de 2011 Índice 91 Introducción 1 92 Transpuesta 1 93 Propiedades de la transpuesta 2 94 Matrices

Más detalles

10. Algunas clases estándar de Java (I)

10. Algunas clases estándar de Java (I) Programación orientada a objetos con Java 113 10. Algunas clases estándar de Java (I) Objetivos: a) Presentar algunas de las clases predefinidas en Java b) Interpretar el código fuente de una aplicación

Más detalles

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro USAR MYSQL EN PHP PHP tiene una librería de funciones nativas para conectarse a las base de datos MySQL. Por un lado reconoce la librería mysql y por otro mysqli. Se recomienda el uso de mysqli dado que

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

Tema 2: La clase string

Tema 2: La clase string : string Programación 2 Curso 2013-2014 Índice 1 Cadenas de caracteres en C 2 Entrada / salida 3 entre vectores de caracteres y string 4 5 Cadenas de caracteres en C En C, las cadenas de caracteres tienen

Más detalles

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; TEMA 5. CONTROL DE FLUJO DEL PROGRAMA 5.1 Sentencias Una sentencia es una expresión seguida de un punto y coma. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; El ; es obligatorio

Más detalles

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009

Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios. Dra. Noemí L. Ruiz Limardo 2009 Lección 1-Introducción a los Polinomios y Suma y Resta de Polinomios Dra. Noemí L. Ruiz Limardo 2009 Objetivos de la Lección Al finalizar esta lección los estudiantes: Identificarán, de una lista de expresiones

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

Hoja1!C4. Hoja1!$C$4. Fila

Hoja1!C4. Hoja1!$C$4. Fila CAPÍTULO 6......... Cálculo y funciones con Excel 2000 6.1.- Referencias De Celdas Como vimos con anterioridad en Excel 2000 se referencian las celdas por la fila y la columna en la que están. Además como

Más detalles

Curso Internet Básico - Aularagon

Curso Internet Básico - Aularagon Antes de empezar es necesario que tengas claro algunas cosas: para configurar esta cuenta de correo, debes saber que el POP y el SMTP en este caso son mail.aragon.es; esta cuenta de correo hay que solicitarla

Más detalles

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse. TABLA DE DECISION La tabla de decisión es una herramienta que sintetiza procesos en los cuales se dan un conjunto de condiciones y un conjunto de acciones a tomar según el valor que toman las condiciones.

Más detalles

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico

UTILIZACIÓN DE UNA CUENTA DE CORREO ELECTRÓNICO (NUEVO) Acceso al correo electrónico Acceso al correo electrónico Pasamos ahora a lo que sería usar la cuenta de correo que nos hicimos en la clase anterior. Lo primero que hacemos es entrar en la página web de Yahoo y localizar el icono

Más detalles

MATERIAL 2 EXCEL 2007

MATERIAL 2 EXCEL 2007 INTRODUCCIÓN A EXCEL 2007 MATERIAL 2 EXCEL 2007 Excel 2007 es una planilla de cálculo, un programa que permite manejar datos de diferente tipo, realizar cálculos, hacer gráficos y tablas; una herramienta

Más detalles

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA ARREGLOS EN JAVA I I N T R O D U C C I Ó N En las sesiones anteriores, los datos manejados en los programas han sido datos simples (carácter, entero, reales) En un gran número de problemas es necesario

Más detalles

Unidad: Representación gráfica del movimiento

Unidad: Representación gráfica del movimiento Unidad: Representación gráfica del movimiento Aplicando y repasando el concepto de rapidez Esta primera actividad repasa el concepto de rapidez definido anteriormente. Posición Esta actividad introduce

Más detalles

UNIDAD 6. POLINOMIOS CON COEFICIENTES ENTEROS

UNIDAD 6. POLINOMIOS CON COEFICIENTES ENTEROS UNIDAD 6. POLINOMIOS CON COEFICIENTES ENTEROS Unidad 6: Polinomios con coeficientes enteros. Al final deberás haber aprendido... Expresar algebraicamente enunciados sencillos. Extraer enunciados razonables

Más detalles

Práctica 2: Simón dice

Práctica 2: Simón dice Práctica 2: Simón dice Fecha de entrega: 31 de enero de 2016 0.- Descripción del juego (Wikipedia.org) Simon dice es un juego electrónico, creado por Ralph Baer, que consiste en reproducir una secuencia

Más detalles

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A)

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A) aprenderaprogramar.com Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A) Sección: Cursos Categoría: Curso Bases de la programación

Más detalles

Creación de Funciones de Conducción

Creación de Funciones de Conducción Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado

Más detalles

11. Algunas clases estándar de Java (II)

11. Algunas clases estándar de Java (II) 122 A. García-Beltrán y J.M. Arranz 11. Algunas clases estándar de Java (II) Objetivos: a) Presentar la clase predefinida en Java para trabajar con arrays b) Interpretar el código fuente de una aplicación

Más detalles

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015 Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015 1. Introducción Este documento

Más detalles

Programación Orientada a Objetos en JAVA

Programación Orientada a Objetos en JAVA Programación Orientada a Objetos en JAVA Jorge Pérez Introducción a la Computación Jorge Pérez Programación Orientada a Objetos en JAVA 1 / 36 Orientación a Objetos OO es un paradigma de modelación y programación

Más detalles

SISTEMAS DE NUMERACIÓN. Sistema decimal

SISTEMAS DE NUMERACIÓN. Sistema decimal SISTEMAS DE NUMERACIÓN Sistema decimal Desde antiguo el Hombre ha ideado sistemas para numerar objetos, algunos sistemas primitivos han llegado hasta nuestros días, tal es el caso de los "números romanos",

Más detalles

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS. 1 Direcciones o Ubicaciones, Carpetas y Archivos Botones de navegación. El botón Atrás permite volver a carpetas que hemos examinado anteriormente. El botón Arriba

Más detalles

Índice ÍNDICE...1 1. EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.)...1 2. EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4

Índice ÍNDICE...1 1. EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.)...1 2. EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4 Pág.1 Índice ÍNDICE...1 1. EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.)...1 2. EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4 1. Ejercicio 1: Cálculo Financiero (5 ptos.) Desde un banco se le ha encargado

Más detalles

Operación de Microsoft Word

Operación de Microsoft Word Trabajar con tablas Las tablas permiten organizar la información y crear atractivos diseños de página con columnas paralelas de texto y gráficos. Las tablas pueden utilizarse para alinear números en columnas

Más detalles

Construcción de Escenarios

Construcción de Escenarios Construcción de Escenarios Consiste en observar los diferentes resultados de un modelo, cuando se introducen diferentes valores en las variables de entrada. Por ejemplo: Ventas, crecimiento de ventas,

Más detalles

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION CHIQUINQUIRA (BOYACA) 2015 1 CONTENIDO Pág. QUE ES UN SISTEMA BINARIO. 3 CORTA HISTORIA DE LOS

Más detalles

Funciones mas importantes para el manejo de Caracteres

Funciones mas importantes para el manejo de Caracteres Caracteres Un carácter es un símbolo que la computadora puede representar. Cuando se asigna una constante de carácter a una variable tipo char, esta debe estar entre apostrofes. char letra= a ; Funciones

Más detalles

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar funciones en Microsoft Excel 2010. 1) LA FUNCIÓN SI EN EXCEL La función SI en Excel es parte del grupo

Más detalles

Eduardo Kido 26-Mayo-2004 ANÁLISIS DE DATOS

Eduardo Kido 26-Mayo-2004 ANÁLISIS DE DATOS ANÁLISIS DE DATOS Hoy día vamos a hablar de algunas medidas de resumen de datos: cómo resumir cuando tenemos una serie de datos numéricos, generalmente en variables intervalares. Cuando nosotros tenemos

Más detalles

Operaciones con polinomios

Operaciones con polinomios Operaciones con polinomios Los polinomios son una generalización de nuestro sistema de numeración. Cuando escribimos un número, por ejemplo, 2 354, queremos decir: 2 354 = 2 000 + 300 + 50 + 4 = 2)1 000)

Más detalles

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Circulo (1.0 pto.)... 3 1.3 Ejercicio

Más detalles

8. Sentencia return y métodos

8. Sentencia return y métodos 92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente

Más detalles

Sesión 3 - Movimiento Diferencial

Sesión 3 - Movimiento Diferencial Sesión 3 - Movimiento Diferencial Qué aprenderemos en esta sesión? Para entender como nuestro robot se va a desplazar por cualquier superficie, debemos aprender la manera en que lo hace, por eso, en esta

Más detalles

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 = 3 3 3 3

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 = 3 3 3 3 1. NÚMEROS NATURALES POTENCIAS DE UN NÚMERO NATURAL Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 = 3 3 3 3 El factor que se repite es la base, y el número de veces que se repite

Más detalles

Profr. Efraín Soto Apolinar. Factorización

Profr. Efraín Soto Apolinar. Factorización Factorización La factorización es la otra parte de la historia de los productos notables. Esto es, ambas cosas se refieren a las mismas fórmulas, pero en los productos notables se nos daba una operación

Más detalles

INVENTARIO INTRODUCCIÓN RESUMEN DE PASOS

INVENTARIO INTRODUCCIÓN RESUMEN DE PASOS INVENTARIO INTRODUCCIÓN Es habitual que en las empresas realicen a final de año un Inventario. Con este proceso se pretende controlar el nivel de stock existente, para iniciar el nuevo ejercicio, conociendo

Más detalles

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas. Formularios TEMA: FORMULARIOS. 1. INTRODUCCIÓN. 2. CREACIÓN DE FORMULARIOS. 3. INTRODUCIR DATOS EN UN FORMULARIO. 4. MODIFICAR UN FORMULARIO 5. MANERAS DE GUARDAR UN FORMULARIO. 6. IMPRIMIR FORMULARIOS.

Más detalles

promedio = nint((notas(1) + notas(2) + notas(3) + & notas(4) + notas(5) + notas(6)) / 6.0) print *, 'Su promedio es', promedio

promedio = nint((notas(1) + notas(2) + notas(3) + & notas(4) + notas(5) + notas(6)) / 6.0) print *, 'Su promedio es', promedio Arreglos Un arreglo es un tipo de datos que contiene varios elementos de un mismo tipo. Cada elemento tiene asociado un índice, y puede ser tratado como si fuera una variable. La cantidad de elementos

Más detalles

MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES

MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES Joma ha creado una herramienta con la cual, usted, como distribuidor, podrá generar presupuestos de las agrupaciones

Más detalles

Teclado sobre una PDA para Personas con Parálisis Cerebral

Teclado sobre una PDA para Personas con Parálisis Cerebral Manual de Usuario - 1 - - 2 - Teclado sobre una PDA para Personas con Parálisis Cerebral Capítulo 1. MANUAL DE USUARIO 12.1 Descripción de la aplicación Este programa le permitirá llevar a cabo las siguientes

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

Instructivo de Microsoft Excel 2003

Instructivo de Microsoft Excel 2003 Instructivo de Microsoft Excel 2003 El presente instructivo corresponde a una guía básica para el manejo del programa y la adquisición de conceptos en relación a este utilitario. Que es Microsoft Excel?

Más detalles

Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1

Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1 Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Convertidor Dec->Hex y Hex->Dec (5.0 ptos.)... 1 1.1.1 Apartado A (4.0 ptos.)... 1 1.1.2 Apartado B (1.0

Más detalles

BUSINESS OBJECTS EDICIÓN DE REPORTES NIVEL II

BUSINESS OBJECTS EDICIÓN DE REPORTES NIVEL II BUSINESS OBJECTS EDICIÓN DE REPORTES NIVEL II [Escriba texto] Contenido CAPÍTULO I: ESTRUCTURANDO UN REPORTE... 4 CAPÍTULO II: FICHA DE INFORMES... 5 CAPÍTULO III: BARRA DE HERRAMIENTAS INFORME... 19 EJERCICIOS...

Más detalles

TEMA 5: HOJAS DE CÁLCULO. Edición de hojas de cálculo con OpenOffice Calc

TEMA 5: HOJAS DE CÁLCULO. Edición de hojas de cálculo con OpenOffice Calc TEMA 5: HOJAS DE CÁLCULO Edición de hojas de cálculo con OpenOffice Calc Qué vamos a ver? Qué es una hoja de cálculo y para qué sirve El entorno de trabajo de OpenOffice Calc Edición básica de hojas de

Más detalles

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS CONTENIDOS 1. Introducción a las cadenas 2. Definición 3. Declaración de cadenas 4. Inicialización de cadenas 5. Escritura y Lectura de datos tipo cadena 6. Funciones de manipulación de cadenas 7. Arrays

Más detalles

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice 1 Polinomios Dedicaremos este apartado al repaso de los polinomios. Se define R[x] ={a 0 + a 1 x + a 2 x 2 +... +

Más detalles

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso 2013-2014. v1.0 (05.03.

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso 2013-2014. v1.0 (05.03. INFORMÁTICA Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial Curso 2013-2014 v1.0 (05.03.14) A continuación figuran una serie de ejercicios propuestos, agrupados

Más detalles

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática Manejo básico de base de datos Unas de las capacidades de Excel es la de trabajar con listas o tablas de información: nombres, direcciones, teléfonos, etc. Excel puede trabajar con tablas de información

Más detalles

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda: Apuntes de ACCESS Campos de Búsqueda: Los campos de búsqueda permiten seleccionar el valor de un campo de una lista desplegable en lugar de tener que escribirlos. El usuario sólo tiene que elegir un valor

Más detalles

MANEJANDO FICHEROS Y CARPETAS

MANEJANDO FICHEROS Y CARPETAS Tutorial 1 MANEJANDO FICHEROS Y CARPETAS 1.1.- Creando carpetas Para organizar la información que almacenamos en nuestros ordenadores, tenemos una elemento denominado carpeta. Vamos a ver cómo, usando

Más detalles

NORMA 19.14 (SEPA) 22/11/2013

NORMA 19.14 (SEPA) 22/11/2013 NORMA 19.14 (SEPA) 22/11/2013 1. Descripción La aplicación de generación de ficheros de adeudos permite generar fácilmente Órdenes para que su banco efectúe el cobro de recibos a clientes creando una Base

Más detalles

Evangelia CURSO PARA EL ULTIMO MOMENTO 3. LECCIÓN

Evangelia CURSO PARA EL ULTIMO MOMENTO 3. LECCIÓN Evangelia CURSO PARA EL ULTIMO MOMENTO 3. LECCIÓN Hacer una oración en este momento gracias al tiempo que pedía la dirección de Dios para todos los planes que tiene para hacer este ministerio para ganar

Más detalles

Lección 24: Lenguaje algebraico y sustituciones

Lección 24: Lenguaje algebraico y sustituciones LECCIÓN Lección : Lenguaje algebraico y sustituciones En lecciones anteriores usted ya trabajó con ecuaciones. Las ecuaciones expresan una igualdad entre ciertas relaciones numéricas en las que se desconoce

Más detalles

Fórmulas y funciones

Fórmulas y funciones 05... Fórmulas y funciones En este tema vamos a profundizar en el manejo de funciones ya definidas por Excel, con el objetivo de agilizar la creación de hojas de cálculo, estudiando la sintaxis de éstas

Más detalles

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016! INFORMÁTICA Práctica4. ProgramaciónbásicaenC. GradoenIngenieríaenElectrónicayAutomáticaIndustrial Curso2015H2016 v2.1(18.09.2015) A continuación figuran una serie de ejercicios propuestos, agrupados por

Más detalles

EXTRACTO Descripción del uso y manejo de SIRAIS 1.2

EXTRACTO Descripción del uso y manejo de SIRAIS 1.2 Manual de usuario EXTRACTO Descripción del uso y manejo de ELABORADO POR Dr. Javier Rodríguez Suárez Director General de Difusión e Investigación Ing. José Joel Lucero Morales Jefe de Enseñanza de la Dirección

Más detalles

Sistemas de numeración y aritmética binaria

Sistemas de numeración y aritmética binaria Sistemas de numeración y aritmética binaria Héctor Antonio Villa Martínez Programa de Ciencias de la Computación Universidad de Sonora Este reporte consta de tres secciones. Primero, la Sección 1 presenta

Más detalles

El palacio de la Alhambra: La primera expansión. El favor de los visires

El palacio de la Alhambra: La primera expansión. El favor de los visires El palacio de la Alhambra: La primera expansión El favor de los visires Traducido al español por javche Esta expansión contiene cuatro módulos diferentes, que pueden combinarse individualmente o todos

Más detalles

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones Leandro Marín Dpto. de Matemática Aplicada Universidad de Murcia 2012 1 Números 2 Polinomios 3 Funciones y su Representación

Más detalles

MÉTODO DEL CAMBIO DE BASE PARA CÁLCULO MANUAL DE SUBREDES CON IP V4.0

MÉTODO DEL CAMBIO DE BASE PARA CÁLCULO MANUAL DE SUBREDES CON IP V4.0 MÉTODO DEL CAMBIO DE BASE PARA CÁLCULO MANUAL DE SUBREDES CON IP V4.0 José Antonio Guijarro Guijarro Profesor de Secundaria Especialidad de Informática Profesor Técnico de F.P. Especialidad de Sistemas

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Carné: Nombre: Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante INDICE 1. INTRODUCCIÓN... 1 Pag.1 1.1 EJERCICIO1: CÁLCULO DEL IMC (3.0 PTS.)... 1 1.2 EJERCICIO2: OPERADOR VIRTUAL DE

Más detalles

Tema 2. El lenguaje de programación Java. Arrays y cadenas

Tema 2. El lenguaje de programación Java. Arrays y cadenas Programación en Java Tema 2. El lenguaje de programación Java. Arrays y cadenas Luis Rodríguez Baena Facultad de Informática Arrays y colecciones Hay dos formas de guardar varias referencias a objetos:

Más detalles

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13 Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13 Rompiendo el Código Enigma Introducción y objetivos Como un pequeño homenaje a Alan Turing en su año conmemorativo, las prácticas de este curso

Más detalles

Estimado usuario. Tabla de Contenidos

Estimado usuario. Tabla de Contenidos Estimado usuario. El motivo del presente correo electrónico es mantenerle informado de las mejoras y cambios realizados en el software Orathor (Athor/Olimpo) en su versión 5.7.041 la cual ha sido recientemente

Más detalles

ZCARTAS: Iniciación a la suma y resta de números enteros... 4. Introducción... 4. Actividad 1: Escenario con cartas numeradas desde -2 hasta 2...

ZCARTAS: Iniciación a la suma y resta de números enteros... 4. Introducción... 4. Actividad 1: Escenario con cartas numeradas desde -2 hasta 2... CONTENIDO ZCARTAS: Iniciación a la suma y resta de números enteros... 4 Introducción... 4 Actividad 1: Escenario con cartas numeradas desde -2 hasta 2... 4 Contenidos trabajados... 4 Instrucciones de Scratch...

Más detalles

Comercial Cartas de Fidelización

Comercial Cartas de Fidelización Comercial Cartas de Fidelización El objetivo es poder enviar, de una forma sencilla a través de e-mail, textos en su idioma a todos los clientes que cumplen determinadas características. En principio,

Más detalles

Qué es y para qué sirve Excel2007?

Qué es y para qué sirve Excel2007? Excel es un programa del tipo Hoja de Cálculo que permite realizar operaciones con números organizados en una cuadrícula. Es útil para realizar desde simples sumas hasta cálculos de préstamos hipotecarios.

Más detalles

SistemA Regional de Información y Evaluación del SIDA (ARIES)

SistemA Regional de Información y Evaluación del SIDA (ARIES) SistemA Regional de Información y Evaluación del SIDA (ARIES) Que es ARIES? El Sistema Regional de Información y Evaluación del SIDA (ARIES) es un sistema informático del VIH/SIDA basado en el internet

Más detalles

1. Solicitando una cuenta de correo a nuestro proveedor de Internet. 2. Adquiriendo una cuenta de correo a través de la web (webmail).

1. Solicitando una cuenta de correo a nuestro proveedor de Internet. 2. Adquiriendo una cuenta de correo a través de la web (webmail). CORREO ELECTRÓNICO NIVEL BÁSICO DE CORREO ELECTRÓNICO INICIACIÓN A CORREO ELECTRÓNICO OBTENER UNA CUENTA DE CORREO ELECTRÓNICO GRATUITA Al correo electrónico también se lo conoce como e-mail, abreviatura

Más detalles

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Ejercicio 1 (2 puntos. Tiempo: 25 minutos) Fecha de publicación de notas: jueves 18 de Julio. Fecha de revisión: viernes 19 de Julio a las 10:00h. Despacho C-209. Ejercicio 1 (2 puntos. Tiempo: 25 minutos) Se desea desarrollar un programa en C

Más detalles

COLEGIO APUNTES ACCESS

COLEGIO APUNTES ACCESS COLEGIO APUNTES ACCESS Índice Introducción al Access... 3 Conocimientos básicos... 6 Tablas... 7 Formularios... 10 Consultas... 12 Consultas de eliminación... 15 Consulta de actualización... 15 Informes...

Más detalles

Problema - Votación. Entrada. Salida. Primera Olimpiada de Informática 1

Problema - Votación. Entrada. Salida. Primera Olimpiada de Informática 1 Primera Olimpiada de Informática 1 Problema - Votación La familia Perez ha organizado una parrillada un sábado por la mañana. Para cada uno de los invitados hay exactamente una chuleta. Pero como siempre,

Más detalles

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía. Examen Curso 2001-2002. Convocatoria de Febrero Página 1 Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía. Este ejercicio se divide en dos partes con el fin de que el alumno no intente

Más detalles

Manual de usuario Sucursal Virtual

Manual de usuario Sucursal Virtual INDICE 1. Introducción 2. Requerimientos 3. Página Inicial 4. Registro 4.1 Registro con tarjeta de débito 4.2 Registro con clave de acceso 5. Acceso a 6. Pestaña Consultas 6.1 Saldo de cuentas 6.1.1 Saldo

Más detalles

ANEXO (NÓMINA DE CANDIDATOS EN SOPORTE INFORMÁTICO

ANEXO (NÓMINA DE CANDIDATOS EN SOPORTE INFORMÁTICO ELECCIONES MUNICIPALES ANEXO (NÓMINA DE CANDIDATOS EN SOPORTE INFORMÁTICO Las autoridades nacionales de los Partidos Políticos y las Agrupaciones Políticas deberán confeccionar las nóminas de los candidatos

Más detalles

Estructuras de Datos y Algoritmos. Árboles de Expresión

Estructuras de Datos y Algoritmos. Árboles de Expresión Estructuras de Datos y Algoritmos Árboles de Expresión Año 2014 Introducción Los avances tecnológicos producen día a día una gran cantidad de información que debe ser almacenada y procesada en forma eficiente.

Más detalles

Divisibilidad y números primos

Divisibilidad y números primos Divisibilidad y números primos Divisibilidad En muchos problemas es necesario saber si el reparto de varios elementos en diferentes grupos se puede hacer equitativamente, es decir, si el número de elementos

Más detalles

INDEX GUÍA INSTRUCTIVA PARA PASOS INICIALES DEL SITE BUILDER

INDEX GUÍA INSTRUCTIVA PARA PASOS INICIALES DEL SITE BUILDER GUÍA INSTRUCTIVA PARA PASOS INICIALES DEL SITE BUILDER INDEX Introducción...2 Paso 1. Diseños. La plantilla de diseños...2 1.a Diseños:...2 1.b Colores:...3 1.c Estilos:...5 Paso 2. Información...6 Paso

Más detalles

Programación I: Funciones y módulos

Programación I: Funciones y módulos Programación I: Funciones y módulos Esteban De La Fuente Rubio 2 de abril de 23 Índice. Funciones.. Definición y llamado de funciones............................................. 2.2. Parámetros por omisión..................................................

Más detalles

Combinar comentarios y cambios de varios documentos en un documento

Combinar comentarios y cambios de varios documentos en un documento Combinar comentarios y cambios de varios documentos en un documento Si envía un documento a varios revisores para que lo revisen y cada uno de ellos devuelve el documento, puede combinar los documentos

Más detalles