###### tags: `UAX` `Estudiantes` <font color = 'gray'> <p style="text-align:right;">Prof.: Laura J. Marcos-Zambrano </font> # Seminario I: Lenguajes de programación ### Actividad práctica: Contando nucleótidos en una secuencia de ADN > Actividad para hacer en parejas o grupos de tres. **Objetivo:** Aprender a implementar la misma tarea en distintos lenguajes de programación y reflexionar sobre las diferencias entre ellos. **Tarea:** Dada la secuencia de ADN `ATGCTTCAGAAAGGTCTTACG` , escribe un programa que: - Cuente cuántas veces aparece cada nucleótido (A, T, C, G). - Imprima el resultado en pantalla. - Trabajarás con R (base), Python y Java usando un compilador online como [Programiz](https://www.programiz.com/r/online-compiler/). :::info Puedes usar modelos de Inteligencia artificial para ayudarte. Pero recuerda que el que tiene que pensar eres tú, no el modelo :wink: ::: ## Parte 1: Completa el código **1. Python** :snake: ```python=1 sequence = "ATGCTTCAGAAAGGTCTTACG" # Completar: usar un bucle para contar A, T, C y G counts = {} for n in "ATCG": counts[n] = ________(n) # Completar con la función adecuada print(counts) ``` **2. R (solo base)** :abcd: ```r=1 sequence <- "ATGCTTCAGAAAGGTCTTACG" letters <- c("A","T","C","G") # Completar: usar sapply o un bucle para contar counts <- sapply(letters, function(n) { sum(________(sequence, "")[[1]] == n) # Completar }) print(counts) ``` **3. Java** :coffee: ```java=1 public class Main { public static void main(String[] args) { String sequence = "ATGCTTCAGAAAGGTCTTACG"; int A = 0, T = 0, C = 0, G = 0; // Completar el bucle for (char c : sequence.toCharArray()) { if (c == 'A') ______; else if (c == 'T') ______; else if (c == 'C') ______; else if (c == 'G') ______; } System.out.println("A:" + A + " T:" + T + " C:" + C + " G:" + G); } } ``` ## Parte 2: Preguntas de reflexión **Antes de ejecutar el código:** 1. ¿Qué diferencias notas en la estructura general de cada lenguaje? 2. ¿Cuál de los tres te parece más fácil de leer? ¿Por qué? **Después de ejecutar el código:** 3. ¿Qué lenguaje necesitó más líneas de código para hacer lo mismo? 4. ¿Cuál crees que es más adecuado para análisis rápidos en bioinformática? ¿Y cuál para programas muy grandes y rápidos? 5. Si cambias la secuencia por "AAAAAA", ¿qué resultado esperas obtener? ¿Qué ocurre al probarlo? ## Parte 3: Mini-experimentos (obligatorios) * Modifica el código en dos lenguajes distintos para que también muestre la longitud total de la secuencia. * Agrega la letra "N" a la secuencia, por ejemplo "ATGCNATGC". Modifica el código para que también cuente "N". * En R y Python, intenta ordenar los resultados de mayor a menor frecuencia. ## 📝 Entrega - Semana próxima Sube un documento al campus con: * Los tres programas corregidos. * Captura de pantalla de al menos dos ejecuciones exitosas (puede ser en lenguajes distintos). * Respuestas a las preguntas de reflexión. * Código modificado de la "Parte 3". * Una breve conclusión personal: * ¿Qué lenguaje fue más sencillo para ti? * ¿Cuál usarías si tuvieras que analizar genomas completos y por qué?