Documento de David Arlekin (3)

Iniciación a la Programación Orientada a las Telecomunicaciones · Sistemas de Telecomunicaciones e Informáticos · Estudios España. Documento de David…

Iniciación a la Programación Orientada a las Telecomunicaciones · Estudios España · Sistemas de Telecomunicaciones e Informáticos

14 páginas

Texto del documento

Iniciación a la Programación Orientada a las Telecomunicaciones Ejercicios UT3 Estructuras de control en C: condicionales y bucles Iniciación a la Programación Orientada a las Telecomunicaciones IES Pacífico Curso 2025/26 1.

Estructuras de selección Ejercicio 1 Considera el siguiente programa en C: Código C: Ejercicio 1 1 #include <stdio.h> 2 #include <math.h> 3 4 int main(void) { 5 double p = -59.95; 6 if (fabs(p + 60.0) < 0.1) { 7 printf("Casi -60 dBm\n"); 8 } else if (p > -30.0) { 9 printf("Muy fuerte\n"); 10 } else if (p >= -60.0) { 11 printf("Fuerte\n"); 12 } else { 13 printf("Debil\n"); 14 } 15 return 0; 16 } Indica exactamente qué línea se imprime por pantalla y justifica brevemente por qué las otras ramas no se ejecutan.

Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 1 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones Ejercicio 2 Dado el programa: Código C: Ejercicio 2 1 #include <stdio.h> 2 int main(void) { 3 int rssi = -67; 4 if (rssi > -30) printf("Excelente\n"); 5 else if (rssi > -60) printf("Buena\n"); 6 else if (rssi > -80) printf("Aceptable\n"); 7 else printf("Debil\n"); 8 return 0; 9 } ¿Qué imprime? Cambia rssi a -60 y a -80. ¿Qué líneas se imprimen en cada caso?

Ejercicio 3 Observa el siguiente programa: Código C: Ejercicio 3 1 #include <stdio.h> 2 int main(void) { 3 char op = 'm'; 4 switch (op) { 5 case 'M': 6 case 'm': 7 printf("Modo manual\n"); 8 break; 9 case 'A': 10 case 'a': 11 printf("Modo automatico\n"); 12 break; 13 default: 14 printf("Desconocido\n"); 15 } 16 return 0; 17 } a) ¿Qué imprime con op='m'? b) ¿Qué imprime con op='A'? c) ¿Qué pasaría si se elimina el break tras "Modo manual"?

Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 2 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones Ejercicio 4 Determina la salida del siguiente programa: Código C: Ejercicio 4 1 #include <stdio.h> 2 int main(void) { 3 int a = 5, b = 10; 4 if (a > 3) 5 if (b < 10) 6 printf("Caso 1\n"); 7 else 8 printf("Caso 2\n"); 9 else 10 printf("Caso 3\n"); 11 return 0; 12 } 13 ¿Qué se imprime? Explica el motivo relacionándolo con la estructura del if-else anidado. Ejercicio 5 Escribe un programa que lea un número entero y determine si es par o impar utilizando un if-else. Muestra "Par" o "Impar".

Ejercicio 6 Crea un programa que lea una letra y determine si es mayúscula o minúscula empleando if y comparaciones entre caracteres. Ejercicio 7 Implementa un menú con un único switch que lea una opción (1,2,3) y muestre un mensaje distinto por cada caso. Para cualquier otra entrada, indica "Opcion no valida". Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 3 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones Ejercicio 8 Diseña un programa que clasifique una señal en dBm en las categorías: Excelente (>-30), Buena (-30 a -60), Aceptable (-60 a -80), Debil (<-80). Incluye validación de entrada.

Ejercicio 9 Programa que lea una temperatura (°C) y determine si está "Normal" (15–25), "Alta" (>25) o "Baja" (<15). Utiliza condicionales if-else. Ejercicio 10 Escribe un programa que lea el nivel de batería (0–100 %) y muestre: "Critico" (<10), "Bajo" (10–30), "Medio" (30–70), "Alto" (>70). Valida la entrada. 2. Estructuras de repetición Ejercicio 11 ¿Qué imprime exactamente? Código C: Ejercicio 11 1 #include <stdio.h> 2 int main(void) { 3 int i = -2; 4 while (i <= 2) { 5 printf(" %d ", i); 6 i += 2; 7 } 8 return 0; 9 } Ejercicio 12 ¿Cuántas veces se imprime "Medida valida"?

Código C: Ejercicio 12 1 #include <stdio.h> Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 4 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones 2 int main(void) { 3 int n = 0; 4 do { 5 if (n < 2) 6 printf("Medida valida\n"); 7 n++; 8 } while (n < 3); 9 return 0; 10 } Ejercicio 13 Determina la salida: Código C: Ejercicio 13 1 #include <stdio.h> 2 int main(void) { 3 int i; 4 for (i = 1; i <= 5; i++) { 5 if (i == 3) continue; 6 printf(" %d", i); 7 } 8 return 0; 9 } Ejercicio 14 Observa el siguiente código: Código C: Ejercicio 14 1 #include <stdio.h> 2 int main(void) { 3 int i = 0; 4 while (i < 3) 5 printf(" %d ", ++i); 6 return 0; 7 } 8 ¿Qué imprime?

Explica brevemente el efecto del preincremento. Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 5 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones Ejercicio 15 Escribe un programa que muestre exactamente cinco líneas con el texto Çhequeo OK" usando un bucle for. Sin pedir datos al usuario. Ejercicio 16 Crea un programa que muestre los números del 10 al 0 en orden descendente utilizando un bucle while. Ejercicio 17 Escribe un programa que lea un número entero y muestre su tabla de multiplicar del 1 al 10. Ejercicio 18 Pide medidas de potencia (dBm) sucesivamente hasta que el usuario introduzca el centinela 999.

Cuenta cuántas medidas están en el rango [-80, -40] dBm. Valida cada lectura (limpia el buffer si falla). Ejercicio 19 Implementa un programa que lea tensiones (V) y calcule el promedio de todas las lecturas válidas hasta que el usuario introduzca 0. Usa do-while y validación defensiva. Ejercicio 20 Crea un programa que lea valores de temperatura y detecte si se man- tienen tres medidas consecutivas por encima de 50°C, mostrando "Alerta sobrecalentamiento2 terminando el bucle. Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 6 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones 3. Sentencias de salto Ejercicio 21 ¿Qué se imprime?

Código C: Ejercicio 21 1 #include <stdio.h> 2 int main(void) { 3 int i=0, j=0; 4 for (i=0; i<3; i++) { 5 for (j=0; j<3; j++) { 6 if (i==1 && j==1) 7 break; 8 printf("( %d, %d) ", i, j); 9 } 10 printf("" "); 11 } 12 return 0; 13 } Ejercicio 22 ¿Salida? Código C: Ejercicio 22 1 #include <stdio.h> 2 int main(void) { 3 int k=0; 4 while (k<5) { 5 k++; 6 if (k %2==0) 7 continue; 8 printf(" %d", k); 9 } 10 return 0; 11 } Ejercicio 23 ¿Qué ocurre al ejecutar?

Código C: Ejercicio 23 1 #include <stdio.h> 2 int main(void) { Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 7 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones 3 int opcion = 2; 4 if (opcion == 2) { 5 printf("Config ...\n"); 6 return 0; 7 } 8 printf("Nunca se imprime\n"); 9 return 0; 10 } Indica si la segunda línea se alcanza o no, y por qué. Ejercicio 24 ¿Qué imprime este código?

Código C: Ejercicio 24 1 #include <stdio.h> 2 int main(void){ 3 int i; 4 for(i=0;i<5;i++){ 5 if(i==3) 6 break; 7 printf(" %d ",i); 8 } 9 puts("Fin"); 10 return 0; 11 } 12 Ejercicio 25 Crea un menú simple (do-while + switch) con opciones: 1) Estado 2) Config 3) Salir Valida la opción; para entradas inválidas, limpia buffer y usa continue para rein- tentar; usa break en cada case. Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 8 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones Ejercicio 26 Escribe un programa que lea un número entero positivo y use break si el número es mayor que 100, mostrando "Fin del proceso".

Ejercicio 27 Diseña un programa que lea números y los ignore si son negativos usando continue. Finaliza al introducir 0. Ejercicio 28 Lee tensiones (V) de una fuente. Si la lectura falla, limpia buffer y continue. Si la tensión sale del rango [4.75, 5.25], imprime ALERTA y break. Finaliza con OK si el usuario introduce 999. Ejercicio 29 Programa que mida potencia (dBm) de una antena. Usa continue si la lectura falla y break si se supera 10 dBm. Muestra cada lectura válida. Ejercicio 30 Simula la lectura de temperatura en un sistema. Si se introduce un valor negativo, usa continue para ignorarlo. Si se alcanzan tres lecturas consecutivas superiores a 80°C, muestra "ALARMA" y sale con break. 4.

Programación defensiva Ejercicio 31 ¿Qué imprime el programa si el usuario teclea abc al pedir un entero? Código C: Ejercicio 31 1 #include <stdio.h> 2 int main(void) { Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 9 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones 3 int n; 4 printf("Numero: "); 5 if (scanf(" %d", &n) != 1) { 6 int c; 7 while ((c=getchar ())!='\n' && c!=EOF) {} 8 printf("Entrada invalida\n"); 9 return 0; 10 } 11 printf("Leido: %d\n", n); 12 return 0; 13 } Ejercicio 32 Para las entradas 7000 y 100, ¿qué imprime cada vez?

Código C: Ejercicio 32 1 #include <stdio.h> 2 int main(void) { 3 double f; 4 printf("Frecuencia (MHz): "); 5 if (scanf(" %lf", &f) != 1) { 6 puts("Entrada invalida"); 7 return 0; 8 } 9 if (f < 1.0 "" f > 6000.0) { 10 puts("Fuera de rango"); 11 return 0; 12 } 13 puts("Frecuencia OK"); 14 return 0; 15 } Ejercicio 33 ¿Qué sucede tras introducir un texto no numérico en el menú?

Código C: Ejercicio 33 1 #include <stdio.h> 2 int main(void){ 3 int op; 4 do { 5 printf("1) Estado\n"); 6 printf("2) Config\n"); Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 10 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones 7 printf("3) Salir\n"); 8 printf("Opción escogida: "); 9 if (scanf(" %d", &op) != 1) { 10 int c; 11 while ((c=getchar ())!='\n' && c!=EOF){} 12 puts("Entrada invalida"); 13 continue; 14 } 15 if (op <1 "" op >3) { 16 puts("Rango invalido"); 17 continue; 18 } 19 if (op ==1) puts("OK"); 20 if (op ==2) puts("CFG"); 21 } while (op !=3); 22 } Ejercicio 34 Identifica el problema de este bucle ante una entrada inválida y describe el efecto observable.

Código C: Ejercicio 34 1 #include <stdio.h> 2 int main(void){ 3 int x; 4 while (1) { 5 printf("Entero: "); 6 if (scanf(" %d", &x) != 1) { 7 puts("Entrada invalida"); 8 // falta limpieza de buffer 9 } else { 10 printf("OK %d\n", x); 11 } 12 } 13 } Ejercicio 35 Lee una opción entera y valida que esté en el rango [1,3]. Si la entrada falla o está fuera de rango, imprime el mensaje correspondiente y termina; en caso válido imprime OK. Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 11 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones Ejercicio 36 Solicita una tensión (V) con formato real. Si scanf falla, imprime Entrada invalida.

En caso contrario, muestra el valor con dos decimales usando %.2f. Ejercicio 37 Pide una respuesta S/N (sí/no), ignorando mayúsculas/minúsculas. Si la entrada no es un carácter, o no es S/s ni N/n, imprime Entrada invalida. En caso válido imprime SI o NO. Ejercicio 38 Implementa una división segura: pide a y b (enteros), valida ambas entradas y que b!=0. Si es válido, imprime a/b (entero). Repite en un do-while preguntando 1=otra, 0=salir. Limpia el buffer cuando scanf falle. Ejercicio 39 Lee niveles de señal en dBm hasta el centinela 999. Mantén el máximo valor válido visto.

Rechaza entradas no numéricas (limpia buffer) e imprime al final el máximo observado o Sin datos si no hubo lecturas válidas. Ejercicio 40 Crea un menú robusto de configuración: 1) Establecer umbral (0–100), 2) Medir valor (0–100) y reportar ALTO/BAJO/OK según comparación con el umbral (toleran- cia de ±1), 3) Salir. Todas las entradas deben validarse; ante fallo, limpiar buffer y reintentar. Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 12 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones 5.

Ejercicios globales Ejercicio 41 Determina exactamente la salida del siguiente programa para la secuencia de entradas -40, abc, -20 (en ese orden): Código C: Ejercicio 41 1 #include <stdio.h> 2 #include <math.h> 3 int main(void){ 4 int validas = 0; 5 while (1) { 6 double x; int r; 7 printf("Nivel (dBm): "); 8 r = scanf(" %lf", &x); 9 if (r != 1) { 10 int c; 11 while ((c=getchar ())!='\n' && c!=EOF){} 12 puts("ERR"); 13 continue; // defensiva + salto 14 } 15 if (x == 999) { 16 puts("FIN"); 17 break; 18 } 19 if (x > -30.0) 20 puts("Excelente"); 21 else if (x >= -60.0) 22 puts("Buena"); 23 else 24 puts("Debil"); // selección 25 validas ++; // repetición + estado 26 if (validas == 2) { 27 puts("STOP"); 28 break; 29 } // salto condicional 30 } 31 return 0; 32 } ¿Qué líneas (en orden) imprime el programa?

Ejercicio 42 ¿Qué salida exacta produce este programa? Código C: Ejercicio 42 Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 13 de 14 Iniciación a la Programación Orientada a las Telecomunicaciones 1 #include <stdio.h> 2 int main(void){ 3 int i, j; 4 for (i=0; i<3; i++) { 5 for (j=0; j<3; j++) { 6 if (i + j == 2) 7 continue; // salta ciertas parejas 8 if (i==2 && j==0) 9 break; // corta solo el bucle interno 10 printf("[ %d, %d] ", i, j); 11 } 12 puts("""); 13 } 14 return 0; 15 } Escribe exactamente lo que se muestra por pantalla (incluye barras verticales y espacios). Ejercicio 43 Diseña un lazo de control de potencia.

Pide un setpoint ( dBm) y luego lecturas de potencia p ( dBm) hasta introducir 999. Por cada lectura válida imprime: SUBIR si p < setpoint 1,0, BAJAR si p > setpoint + 1,0 y OK en el resto. Si la lectura no es numérica, limpia el buffer, imprime ERR y continue. Usa sólo estructuras de selección, repetición, saltos y defensiva (sin arrays ni funciones propias). Ejercicio 44 Detección de ráfaga de SNR baja. En un bucle, lee snr (dB). Si la lectura falla, limpia el buffer e imprime ERR y continue. Si el usuario introduce 999, finaliza. Considera ALARMA cuando se detecten tres lecturas consecutivas con snr < 3,0 dB. Ignora valores negativos (continue).

Al detectar la condición, muestra ALARMA y termina con break. Curso 2025/26 UT3 - Estructuras de control en C: condicionales y bucles Página 14 de 14

Más apuntes de Iniciación a la Programación Orientada a las Telecomunicaciones

Exámenes, temas y apuntes de Iniciación a la Programación Orientada a las Telecomunicaciones