Está en la página 1de 6

ESCUELA PROFESIONAL DE INGENIERÍA DE SISTEMAS

FUNDAMENTOS DE PROGRAMACIÓN 1
2022 I
LABORATORIO 23 – ARRAYLIST
MUTACIONES ADN
(NATIONAL UNIVERSITY OF SINGAPORE)
I

OBJETIVOS

• Que los alumnos sean capaces de crear métodos recibiendo ArrayList como parámetros.
• Manejar bucles para el recorrido de ArrayList
• Manejar los métodos de la clase ArrayList

Tiempo Estimado: 2 horas


II

CONSIDERACIONES DE EVALUACIÓN

• No deberá utilizar constructores no vistos en clase


• Deberá utilizar nombre de variables significativos
• Deberá realizar pruebas adicionales
• El alumno deberá indicar en su código con quien colaboró
• El alumno será requerido de realizar modificaciones en su código y responder a preguntas sobre el
mismo
• Todos los ejercicios deberán traerse terminados en caso de ser tarea para la casa
• Si tiene ejercicios sin terminar no importa, se revisará el avance y se discutirá sobre las dificultades
encontradas.

III

POLITICA DE COLABORACION
La política del curso es simple, a menos que se exprese lo contrario en el laboratorio, siéntase libre de
colaborar con sus compañeros en todos los laboratorios, pero debe notificar expresamente con quien ha
colaborado. La colaboración con alumnos, que no están matriculados en el curso está prohibida. Los
laboratorios y asignaciones han sido desarrollados para ayudarlo a comprender el material. Conozca su código
y esté preparado para revisiones individuales de código. Durante las revisiones es probable que se le pida
realizar modificaciones y justificar sus decisiones de programación. Cada uno de sus ejercicios debe iniciar de
la siguiente forma
IV

INDICACIONES GENERALES

a. Todos los ejercicios deberán ser guardados en el mismo Proyecto


b. EL Proyecto deberá tener el nombre del Laboratorio y el nombre del alumno, así por ejemplo:
Laboratorio 19– Juan Perez
c. Cada Clase deberá tener el nombre del ejercicio, así por ejemplo:
Ejercicio1
d. Utilice nombres de variables significativos
e. Su código deberá estar correctamente indentado.
f. Deberá pasar TODOS los casos de prueba

Marco Teórico

La clase ArrayList está definida en el API (Application Program Interface) de Java. Se encuentra dentro del
paquete java.util. Para inicializar una variable-objeto utilice la sintaxis

ArrayList<tipo-elemento> variable = new ArrayList< tipo-elemento >();

Así por ejemplo

ArrayList<String> equiposCopaAmerica = new ArrayList<String>();

Es importante recalcar que el tipo-elemento siempre debe hacer referencia a una clase. Los ArrayList solo
guardan referencias (objetos) y no tipos primitivos (int , double, etc)

Agregando Elementos a un ArrayList

import java.util.ArrayList;

. . .

ArrayList<String> equiposCopaAmerica = new ArrayList<String>();

equiposCopaAmerica.add("Peru");
equiposCopaAmerica.add("Chile");
equiposCopaAmerica.add("Bolivia");
equiposCopaAmerica.add("Colombia");
equiposCopaAmerica.add("Uruguay");
Accediendo Elementos de un ArrayList

public E get(int index)

La E se refiere al tipo de retorno del element. Para el ejemplo utilizado, el tipo de retorno es un String.

equiposCopaAmerica.get(0) -> devolverá el elemento “Peru”


equiposCopaAmerica.get(2) -> devolverá el elemento “Bolivia”

Actualizando Elementos de un ArrayList

public E set(int index, E elem)

String remplazoEquipo = “Argentina”;

ArrayList<String> cuartosDeFinal = new ArrayList<String>();

equiposCopaAmerica.add("Brasil");

equiposCopaAmerica.add("Chile");

equiposCopaAmerica.add("Peru");

equiposCopaAmerica.add("Colombia");

equiposCopaAmerica.set(1, remplazoEquipo);

<Chile será remplazado por Argentina>

Otros Métodos

public void add(int index, E elem)

public int indexOf(Object elem)

public boolean isEmpty()

public int lastIndexOf(Object elem)

public E remove(int index)

public int size()


VI

ACTIVIDAD

El Ácido Desoxirribonucleico (ADN) es un ácido nucleico que contiene las instrucciones genéticas utilizadas
en el desarrollo y funcionamiento de todo ser vivo y algunos virus. El rol principal de las moléculas de ADN
es almacenar la información. El ADN es casi siempre comparado con un conjunto de planos, esto porque
contiene las instrucciones necesarias para construir o componer otras células, tales como proteínas y
moléculas RNA. Los segmentos de ADN que llevan la información genética son llamados genes, pero otras
secuencias del ADN tienen propósitos estructurales, o están involucrados en el uso de esta información
genética. (Wikipedia).

Durante la reproducción de células o bajo la exposición a ciertos efectos (como la luz ultravioleta) pueden
ocurrir mutaciones a un segmento del ADN. Mientras más mutaciones ocurran, puede ser desastroso (causar
cáncer), también pueden ocurrir mutaciones ventajosas con un resultado evolutivo beneficioso.

En este ejercicio queremos simular los efectos de mutaciones en una cadena ADN (con al menos 1000
caracteres). Por simplicidad, solo consideraremos un subconjunto seleccionado de mutaciones de
cromosomas. Simularemos las siguientes mutaciones simplificadas.

o Amplificación (amp): este inserta una copia duplicada de la región especificada junto a ella.
o Eliminación (del): elimina una región seleccionada.
o Inversión (inv): invierte la orientación de una región especificada.

Por ejemplo "amp 2 4" en "AGCTAGATT" resulta en "AGCTACTAGATT". Como CTA es la porción de ADN a ser
duplicada la parte duplicada se muestra en azul para su referencia y mayor comprensión.

Lo siguiente es siempre verdadero acerca del ingreso del ADN en cada punto de tiempo (confiar en
el usuario):

• Todos los índices son inclusivos.


• El índice inicial es siempre menor o igual que el índice final.
• Todas las cadenas ADN consisten solamente en 4 posibles caracteres mayúsculas
que son: 'A', 'T', 'C', 'G'.
• La salida consiste en una sola línea contiendo la cadena ADN mutada.

Se crearán 3 métodos, cada uno recibiendo un ArrayList <String> representando la cadena de


ADN. Un valor entero para el índice de inicio y un valor entero para el índice de fin.

public static ArrayList<String> amp (ArrayList<String> adn, int ini, int fin)

public static ArrayList<String> del (ArrayList<String> adn, int ini, int fin)

public static ArrayList<String> inv (ArrayList<String> adn, int ini, int fin)
Ejemplo de Ejecución

Usted deberá ingresar la cadena de ADN en un String y luego convertirlo en un ArrayList<String>.

Ejemplo de ejecución 1

Ingrese cadena adn -> AAAGGCCTTAGCTTAGATTACGATCG


Cantidad de mutaciones -> 1

Ingrese mutacion 1-> amp 2 7

AAAGGCCTAGGCCTTAGCTTAGATTACGATCG

Ejemplo de ejecución 2

Ingrese cadena adn ->AAAGGCCTTAGCTTAGATTACGATCG


Cantidad de mutaciones ->2

Ingrese mutacion 1-> amp 2 7


AAAGGCCTAGGCCTTAGCTTAGATTACGATCG

Ingrese mutacion 2-> del 10 12


AAAGGCCTAGTTAGCTTAGATTACGATCG

Ejemplo de ejecución 3

Ingrese cadena adn -> AAAGGCCTTAGCTTAGATTACGATCG


Cantidad de mutaciones -> 3

Ingrese mutacion 1-> amp 2 7


AAAGGCCTAGGCCTTAGCTTAGATTACGATCG
Ingrese mutacion 2-> del 10 12
AAAGGCCTAGTTAGCTTAGATTACGATCG
Ingrese mutacion 3-> del 0 2
GGCCTAGTTAGCTTAGATTACGATCG

Ejemplo de ejecución 4

Ingrese cadena adn -> GGCCTTAGCTTAGATTACGATCG


Cantidad de mutaciones -> 1

Ingrese mutacion 1-> inv 1 5

GTTCCGAGCTTAGATTACGATCG
1) Realizar el ejercicio ingresando la cantidad de mutaciones que se desean aplicar, pidiendo los datos para
cada mutación e ir mostrando el resultado de aplicar cada mutación indicada (no es necesario ingresar la
mutación como cadena, puede ser como 3 datos separados por espacio).

2) Mismo problema pero con ArrayList de caracteres

I. TAREA PARA LA CASA: Complete todos los ejercicios.

Crear un documento docx/pdf con la solución de los ejercicios.

Subir el documento a la tarea Laboratorio23 del Aula Virtual respetando las


fechas indicadas.

También podría gustarte