Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare una empresa de Scribd logo
ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO
Nombre: Adriana Marcela Caiza Quera
Carrera: Telemática PAO1
Fecha: 2024/06/19
Código: 88
Plantear 5 escenarios en donde se evidencie la necesidad de utilizar
obligatoriamente las estructuras de programación (If, Switch).
1. Diseño y Planificación de Redes para Mejorar la Conectividad de
Dispositivos
 Escenario: Configuración Automática de Dispositivos en una Red
 Descripción: Al diseñar una red, es esencial configurar automáticamente
los dispositivos para que se conecten de manera eficiente y segura.
 Necesidad de if y switch: Se necesita un script que determine las
configuraciones óptimas basadas en el tipo de dispositivo. Por ejemplo, un
switch puede utilizarse para seleccionar diferentes configuraciones de
seguridad y calidad de servicio (QoS) dependiendo de si el dispositivo es
un servidor, un dispositivo móvil o un dispositivo IoT.
 Ejercicio: Desarrolla un programa en C++ que configure automáticamente
la red de un dispositivo dependiendo de su tipo. Los tipos de dispositivos
son: "SERVER", "MOBILE", "IOT", y "DEFAULT". Cada tipo de
dispositivo requiere diferentes configuraciones de seguridad y calidad de
servicio.
 Instrucciones:
1) Define una función configureDevice que reciba el tipo de dispositivo como
parámetro.
2) Utiliza una estructura switch para aplicar configuraciones específicas
basadas en el tipo de dispositivo.
3) Imprime las configuraciones aplicadas para verificar que la función
funciona correctamente.
 Código
#include <iostream>
#include <string>
void configurarAjustesServidor() {
std::cout << "Configurando ajustes de seguridad para SERVIDOR...n";
std::cout << "Configurando QoS para SERVIDOR...n";
}
void configurarAjustesMovil() {
std::cout << "Configurando ajustes de seguridad para MÓVIL...n";
std::cout << "Configurando QoS para MÓVIL...n";
}
void configurarAjustesIoT() {
std::cout << "Configurando ajustes de seguridad para IOT...n";
std::cout << "Configurando QoS para IOT...n";
}
void configurarDispositivo(const std::string& tipoDispositivo) {
if (tipoDispositivo == "SERVIDOR") {
configurarAjustesServidor();
} else if (tipoDispositivo == "MÓVIL") {
configurarAjustesMovil();
} else if (tipoDispositivo == "IOT") {
configurarAjustesIoT();
} else {
std::cout << "Aplicando ajustes por defecto...n";
}
}
int main() {
configurarDispositivo("SERVIDOR");
configurarDispositivo("MÓVIL");
configurarDispositivo("IOT");
configurarDispositivo("OTRO");
return 0;
}
2. Protección de Información de los Ciberataques
 Escenario: Sistema de Detección de Intrusiones (IDS)
 Descripción: Implementar un IDS que monitorice el tráfico de red y
detecte patrones de comportamiento sospechosos.
 Necesidad de if y switch: Utilizar estructuras if para analizar paquetes de
datos y tomar decisiones en tiempo real sobre si bloquear, permitir o
registrar una conexión sospechosa.
 Ejercicio: Implementa un sistema de detección de intrusiones (IDS)
simplificado que analice paquetes de red y tome decisiones en tiempo real
sobre cómo manejarlos.
 Instrucciones:
1) Define una función analyzePacket que reciba un paquete de datos.
2) Utiliza estructuras if para determinar si el paquete es sospechoso, si proviene
de una IP bloqueada, o si es una amenaza conocida.
3) Realiza las acciones correspondientes: bloquear, registrar o permitir el paquete.
 Código
#include <iostream>
#include <string>
// Función para verificar si el paquete es sospechoso
bool esSospechoso(const std::string& paquete) {
return paquete.find("sospechoso") != std::string::npos;
}
// Función para verificar si el paquete es una amenaza conocida
bool esAmenazaConocida(const std::string& paquete) {
return paquete.find("amenaza") != std::string::npos;
}
// Función para bloquear el paquete
void bloquearPaquete(const std::string& paquete) {
std::cout << "Bloqueando paquete: " << paquete << std::endl;
}
// Función para registrar la amenaza
void registrarAmenaza(const std::string& paquete) {
std::cout << "Registrando amenaza: " << paquete << std::endl;
}
// Función para notificar al administrador
void notificarAdmin(const std::string& paquete) {
std::cout << "Notificando al administrador sobre: " << paquete << std::endl;
}
// Función para permitir el paquete
void permitirPaquete(const std::string& paquete) {
std::cout << "Permitiendo paquete: " << paquete << std::endl;
}
// Función para analizar el paquete
void analizarPaquete(const std::string& paquete) {
if (esSospechoso(paquete)) {
if (paquete.find("ip_bloqueada") != std::string::npos) {
bloquearPaquete(paquete);
} else if (esAmenazaConocida(paquete)) {
registrarAmenaza(paquete);
notificarAdmin(paquete);
} else {
permitirPaquete(paquete);
}
} else {
permitirPaquete(paquete);
}
}
int main() {
// Lista de paquetes a analizar
std::string paquetes[] = {"paquete_normal", "paquete_sospechoso",
"paquete_ip_bloqueada", "paquete_amenaza"};
// Analizar cada paquete en la lista
for (const auto& paquete : paquetes) {
analizarPaquete(paquete);
}
return 0;
}
3. Desarrollo de Aplicaciones y Sistemas que Optimicen la Interacción en
Línea
 Escenario: Sistema de Recomendación en Tiempo Real
 Descripción: Desarrollar una aplicación que recomiende contenido a los
usuarios basado en su comportamiento y preferencias.
 Necesidad de if y switch: Usar if para personalizar las recomendaciones
dependiendo de las acciones recientes del usuario y switch para elegir
 entre diferentes algoritmos de recomendación.
 Ejercicio: Crea una aplicación que recomiende contenido a los usuarios
basado en sus preferencias y actividad reciente.
 Instrucciones:
1) Define una función recommendContent que reciba un objeto User.
2) Usa una estructura if-else para determinar si el usuario está logueado y tiene
actividad reciente.
3) Usa un switch para elegir entre diferentes tipos de recomendaciones basadas en
las preferencias del usuario.
 Código
#include <iostream>
#include <string>
// Estructura que representa a un usuario
struct Usuario {
bool estaLogueado; // Indica si el usuario está logueado
bool tieneActividadReciente; // Indica si el usuario tiene actividad reciente
std::string preferencia; // Preferencia de contenido del usuario
};
// Función para recomendar películas
void recomendarPeliculas() {
std::cout << "Recomendando películas...n";
}
// Función para recomendar música
void recomendarMusica() {
std::cout << "Recomendando música...n";
}
// Función para recomendar libros
void recomendarLibros() {
std::cout << "Recomendando libros...n";
}
// Función para recomendar contenido en tendencia
void recomendarContenidoTendencia() {
std::cout << "Recomendando contenido en tendencia...n";
}
// Función para recomendar contenido popular
void recomendarContenidoPopular() {
std::cout << "Recomendando contenido popular...n";
}
// Función para recomendar contenido basado en las propiedades del usuario
void recomendarContenido(const Usuario& usuario) {
if (usuario.estaLogueado) {
if (usuario.tieneActividadReciente) {
if (usuario.preferencia == "PELÍCULAS") {
recomendarPeliculas();
} else if (usuario.preferencia == "MÚSICA") {
recomendarMusica();
} else if (usuario.preferencia == "LIBROS") {
recomendarLibros();
} else {
recomendarContenidoTendencia();
}
} else {
recomendarContenidoPopular();
}
} else {
std::cout << "El usuario no está logueado.n";
}
}
int main() {
// Creación de instancias de usuarios
Usuario usuario1 = {true, true, "PELÍCULAS"};
Usuario usuario2 = {true, false, "MÚSICA"};
Usuario usuario3 = {false, false, "LIBROS"};
// Recomendación de contenido para cada usuario
recomendarContenido(usuario1);
recomendarContenido(usuario2);
recomendarContenido(usuario3);
return 0;
}
4. Mejora de las Tecnologías como la 5G para Optimizar la Velocidad y la
Claridad
 Escenario: Optimización del Ancho de Banda en Redes 5G
 Descripción: Gestionar el ancho de banda en una red 5G para asegurar la
calidad de servicio (QoS) en diferentes tipos de aplicaciones.
 Necesidad de if y switch: Implementar decisiones en tiempo real para ajustar
el ancho de banda disponible basado en el tipo de aplicación que está
utilizando el usuario (e.g., video streaming, llamadas VoIP, navegación web).
 Ejercicio: Implementa una función en C++ que gestione el ancho de banda en
una red 5G dependiendo del nivel de congestión y el tipo de aplicación.
 Instrucciones:
1) Define una función optimizeBandwidth que reciba el nivel de congestión y
el tipo de aplicación.
2) Usa un if para verificar el nivel de congestión.
3) Usa un switch para aplicar la estrategia de asignación de ancho de banda
basada en el tipo de aplicación.
 Código
#include <iostream>
#include <string>
void allocateBandwidth(const std::string& priority) {
std::cout << "Asignando ancho de banda: " << priority << std::endl;
}
void optimizeBandwidth(int congestionLevel, const std::string& applicationType)
{
if (congestionLevel > 80) {
if (applicationType == "VIDEO_STREAMING") {
allocateBandwidth("VIDEO_ALTA_PRIORIDAD");
} else if (applicationType == "VOIP") {
allocateBandwidth("VOIP_ALTA_PRIORIDAD");
} else if (applicationType == "WEB") {
allocateBandwidth("WEB_PRIORIDAD_ESTANDAR");
} else {
allocateBandwidth("PRIORIDAD_POR_DEFECTO");
}
} else {
allocateBandwidth("OPERACION_NORMAL");
}
}
int main() {
optimizeBandwidth(85, "VIDEO_STREAMING"); // Asigna ancho de banda
alta para streaming de video
optimizeBandwidth(75, "VOIP"); // Asigna ancho de banda alta para
VOIP
optimizeBandwidth(90, "WEB"); // Asigna prioridad estándar para
navegación web debido a alta congestión
optimizeBandwidth(50, "GAMING"); // Asigna operación normal para
juegos debido a baja congestión
return 0;
}
5. Gerente de Tecnología de la Información / Gerente de Centro de Datos y
Operaciones de Red
 Escenario: Gestión Automática de Recursos en un Centro de Datos
 Descripción: Automatizar la asignación de recursos en un centro de datos para
asegurar la eficiencia operativa.
 Necesidad de if y switch: Utilizar if para determinar la carga actual de los
servidores y switch para decidir la mejor estrategia de balanceo de carga.
 Ejercicio: Implementa una función que gestione automáticamente los recursos
en un centro de datos basándose en la carga actual y la
 estrategia de balanceo de carga seleccionada.
 Instrucciones:
1) Define una función manageResources que reciba la carga actual y la
estrategia de balanceo de carga.
2) Usa un if para determinar si la carga supera un umbral.
3) Usa un switch para aplicar la estrategia de balanceo de carga adecuada.
 Código:
#include <iostream>
#include <string>
void applyRoundRobinBalancing() {
std::cout << "Applying Round Robin Balancing...n";
}
void applyLeastConnectionsBalancing() {
std::cout << "Applying Least Connections Balancing...n";
}
void applyResourceAwareBalancing() {
std::cout << "Applying Resource Aware Balancing...n";
}
void applyDefaultBalancing() {
std::cout << "Applying Default Balancing...n";
}
void manageResources(int currentLoad, const std::string& strategy) {
if (currentLoad > 70) {
if (strategy == "ROUND_ROBIN") {
applyRoundRobinBalancing();
} else if (strategy == "LEAST_CONNECTIONS") {
applyLeastConnectionsBalancing();
} else if (strategy == "RESOURCE_AWARE") {
applyResourceAwareBalancing();
} else {
applyDefaultBalancing();
}
} else {
std::cout << "Monitoring Load...n";
}
}
int main() {
manageResources(80, "ROUND_ROBIN");
manageResources(75, "LEAST_CONNECTIONS");
manageResources(85, "RESOURCE_AWARE");
manageResources(65, "UNKNOWN");
return 0;
}

Más contenido relacionado

Propuesta de ejercicios Telemática Escenarios

  • 1. ESCUELA SUPERIOR POLITÉCNICA DE CHIMBORAZO Nombre: Adriana Marcela Caiza Quera Carrera: Telemática PAO1 Fecha: 2024/06/19 Código: 88 Plantear 5 escenarios en donde se evidencie la necesidad de utilizar obligatoriamente las estructuras de programación (If, Switch). 1. Diseño y Planificación de Redes para Mejorar la Conectividad de Dispositivos  Escenario: Configuración Automática de Dispositivos en una Red  Descripción: Al diseñar una red, es esencial configurar automáticamente los dispositivos para que se conecten de manera eficiente y segura.  Necesidad de if y switch: Se necesita un script que determine las configuraciones óptimas basadas en el tipo de dispositivo. Por ejemplo, un switch puede utilizarse para seleccionar diferentes configuraciones de seguridad y calidad de servicio (QoS) dependiendo de si el dispositivo es un servidor, un dispositivo móvil o un dispositivo IoT.  Ejercicio: Desarrolla un programa en C++ que configure automáticamente la red de un dispositivo dependiendo de su tipo. Los tipos de dispositivos son: "SERVER", "MOBILE", "IOT", y "DEFAULT". Cada tipo de dispositivo requiere diferentes configuraciones de seguridad y calidad de servicio.  Instrucciones:
  • 2. 1) Define una función configureDevice que reciba el tipo de dispositivo como parámetro. 2) Utiliza una estructura switch para aplicar configuraciones específicas basadas en el tipo de dispositivo. 3) Imprime las configuraciones aplicadas para verificar que la función funciona correctamente.  Código #include <iostream> #include <string> void configurarAjustesServidor() { std::cout << "Configurando ajustes de seguridad para SERVIDOR...n"; std::cout << "Configurando QoS para SERVIDOR...n"; } void configurarAjustesMovil() { std::cout << "Configurando ajustes de seguridad para MÓVIL...n"; std::cout << "Configurando QoS para MÓVIL...n"; } void configurarAjustesIoT() { std::cout << "Configurando ajustes de seguridad para IOT...n"; std::cout << "Configurando QoS para IOT...n"; } void configurarDispositivo(const std::string& tipoDispositivo) { if (tipoDispositivo == "SERVIDOR") { configurarAjustesServidor();
  • 3. } else if (tipoDispositivo == "MÓVIL") { configurarAjustesMovil(); } else if (tipoDispositivo == "IOT") { configurarAjustesIoT(); } else { std::cout << "Aplicando ajustes por defecto...n"; } } int main() { configurarDispositivo("SERVIDOR"); configurarDispositivo("MÓVIL"); configurarDispositivo("IOT"); configurarDispositivo("OTRO"); return 0; } 2. Protección de Información de los Ciberataques  Escenario: Sistema de Detección de Intrusiones (IDS)  Descripción: Implementar un IDS que monitorice el tráfico de red y detecte patrones de comportamiento sospechosos.  Necesidad de if y switch: Utilizar estructuras if para analizar paquetes de datos y tomar decisiones en tiempo real sobre si bloquear, permitir o registrar una conexión sospechosa.  Ejercicio: Implementa un sistema de detección de intrusiones (IDS) simplificado que analice paquetes de red y tome decisiones en tiempo real sobre cómo manejarlos.
  • 4.  Instrucciones: 1) Define una función analyzePacket que reciba un paquete de datos. 2) Utiliza estructuras if para determinar si el paquete es sospechoso, si proviene de una IP bloqueada, o si es una amenaza conocida. 3) Realiza las acciones correspondientes: bloquear, registrar o permitir el paquete.  Código #include <iostream> #include <string> // Función para verificar si el paquete es sospechoso bool esSospechoso(const std::string& paquete) { return paquete.find("sospechoso") != std::string::npos; } // Función para verificar si el paquete es una amenaza conocida bool esAmenazaConocida(const std::string& paquete) { return paquete.find("amenaza") != std::string::npos; } // Función para bloquear el paquete void bloquearPaquete(const std::string& paquete) { std::cout << "Bloqueando paquete: " << paquete << std::endl; } // Función para registrar la amenaza void registrarAmenaza(const std::string& paquete) { std::cout << "Registrando amenaza: " << paquete << std::endl; }
  • 5. // Función para notificar al administrador void notificarAdmin(const std::string& paquete) { std::cout << "Notificando al administrador sobre: " << paquete << std::endl; } // Función para permitir el paquete void permitirPaquete(const std::string& paquete) { std::cout << "Permitiendo paquete: " << paquete << std::endl; } // Función para analizar el paquete void analizarPaquete(const std::string& paquete) { if (esSospechoso(paquete)) { if (paquete.find("ip_bloqueada") != std::string::npos) { bloquearPaquete(paquete); } else if (esAmenazaConocida(paquete)) { registrarAmenaza(paquete); notificarAdmin(paquete); } else { permitirPaquete(paquete); } } else { permitirPaquete(paquete); } } int main() {
  • 6. // Lista de paquetes a analizar std::string paquetes[] = {"paquete_normal", "paquete_sospechoso", "paquete_ip_bloqueada", "paquete_amenaza"}; // Analizar cada paquete en la lista for (const auto& paquete : paquetes) { analizarPaquete(paquete); } return 0; } 3. Desarrollo de Aplicaciones y Sistemas que Optimicen la Interacción en Línea  Escenario: Sistema de Recomendación en Tiempo Real  Descripción: Desarrollar una aplicación que recomiende contenido a los usuarios basado en su comportamiento y preferencias.  Necesidad de if y switch: Usar if para personalizar las recomendaciones dependiendo de las acciones recientes del usuario y switch para elegir  entre diferentes algoritmos de recomendación.  Ejercicio: Crea una aplicación que recomiende contenido a los usuarios basado en sus preferencias y actividad reciente.  Instrucciones: 1) Define una función recommendContent que reciba un objeto User. 2) Usa una estructura if-else para determinar si el usuario está logueado y tiene actividad reciente. 3) Usa un switch para elegir entre diferentes tipos de recomendaciones basadas en las preferencias del usuario.  Código
  • 7. #include <iostream> #include <string> // Estructura que representa a un usuario struct Usuario { bool estaLogueado; // Indica si el usuario está logueado bool tieneActividadReciente; // Indica si el usuario tiene actividad reciente std::string preferencia; // Preferencia de contenido del usuario }; // Función para recomendar películas void recomendarPeliculas() { std::cout << "Recomendando películas...n"; } // Función para recomendar música void recomendarMusica() { std::cout << "Recomendando música...n"; } // Función para recomendar libros void recomendarLibros() { std::cout << "Recomendando libros...n"; } // Función para recomendar contenido en tendencia void recomendarContenidoTendencia() { std::cout << "Recomendando contenido en tendencia...n";
  • 8. } // Función para recomendar contenido popular void recomendarContenidoPopular() { std::cout << "Recomendando contenido popular...n"; } // Función para recomendar contenido basado en las propiedades del usuario void recomendarContenido(const Usuario& usuario) { if (usuario.estaLogueado) { if (usuario.tieneActividadReciente) { if (usuario.preferencia == "PELÍCULAS") { recomendarPeliculas(); } else if (usuario.preferencia == "MÚSICA") { recomendarMusica(); } else if (usuario.preferencia == "LIBROS") { recomendarLibros(); } else { recomendarContenidoTendencia(); } } else { recomendarContenidoPopular(); } } else { std::cout << "El usuario no está logueado.n"; } }
  • 9. int main() { // Creación de instancias de usuarios Usuario usuario1 = {true, true, "PELÍCULAS"}; Usuario usuario2 = {true, false, "MÚSICA"}; Usuario usuario3 = {false, false, "LIBROS"}; // Recomendación de contenido para cada usuario recomendarContenido(usuario1); recomendarContenido(usuario2); recomendarContenido(usuario3); return 0; } 4. Mejora de las Tecnologías como la 5G para Optimizar la Velocidad y la Claridad  Escenario: Optimización del Ancho de Banda en Redes 5G  Descripción: Gestionar el ancho de banda en una red 5G para asegurar la calidad de servicio (QoS) en diferentes tipos de aplicaciones.  Necesidad de if y switch: Implementar decisiones en tiempo real para ajustar el ancho de banda disponible basado en el tipo de aplicación que está utilizando el usuario (e.g., video streaming, llamadas VoIP, navegación web).  Ejercicio: Implementa una función en C++ que gestione el ancho de banda en una red 5G dependiendo del nivel de congestión y el tipo de aplicación.
  • 10.  Instrucciones: 1) Define una función optimizeBandwidth que reciba el nivel de congestión y el tipo de aplicación. 2) Usa un if para verificar el nivel de congestión. 3) Usa un switch para aplicar la estrategia de asignación de ancho de banda basada en el tipo de aplicación.  Código #include <iostream> #include <string> void allocateBandwidth(const std::string& priority) { std::cout << "Asignando ancho de banda: " << priority << std::endl; } void optimizeBandwidth(int congestionLevel, const std::string& applicationType) { if (congestionLevel > 80) { if (applicationType == "VIDEO_STREAMING") { allocateBandwidth("VIDEO_ALTA_PRIORIDAD"); } else if (applicationType == "VOIP") { allocateBandwidth("VOIP_ALTA_PRIORIDAD"); } else if (applicationType == "WEB") { allocateBandwidth("WEB_PRIORIDAD_ESTANDAR"); } else { allocateBandwidth("PRIORIDAD_POR_DEFECTO"); } } else { allocateBandwidth("OPERACION_NORMAL");
  • 11. } } int main() { optimizeBandwidth(85, "VIDEO_STREAMING"); // Asigna ancho de banda alta para streaming de video optimizeBandwidth(75, "VOIP"); // Asigna ancho de banda alta para VOIP optimizeBandwidth(90, "WEB"); // Asigna prioridad estándar para navegación web debido a alta congestión optimizeBandwidth(50, "GAMING"); // Asigna operación normal para juegos debido a baja congestión return 0; } 5. Gerente de Tecnología de la Información / Gerente de Centro de Datos y Operaciones de Red  Escenario: Gestión Automática de Recursos en un Centro de Datos  Descripción: Automatizar la asignación de recursos en un centro de datos para asegurar la eficiencia operativa.  Necesidad de if y switch: Utilizar if para determinar la carga actual de los servidores y switch para decidir la mejor estrategia de balanceo de carga.  Ejercicio: Implementa una función que gestione automáticamente los recursos en un centro de datos basándose en la carga actual y la  estrategia de balanceo de carga seleccionada.  Instrucciones: 1) Define una función manageResources que reciba la carga actual y la
  • 12. estrategia de balanceo de carga. 2) Usa un if para determinar si la carga supera un umbral. 3) Usa un switch para aplicar la estrategia de balanceo de carga adecuada.  Código: #include <iostream> #include <string> void applyRoundRobinBalancing() { std::cout << "Applying Round Robin Balancing...n"; } void applyLeastConnectionsBalancing() { std::cout << "Applying Least Connections Balancing...n"; } void applyResourceAwareBalancing() { std::cout << "Applying Resource Aware Balancing...n"; } void applyDefaultBalancing() { std::cout << "Applying Default Balancing...n"; } void manageResources(int currentLoad, const std::string& strategy) { if (currentLoad > 70) { if (strategy == "ROUND_ROBIN") { applyRoundRobinBalancing(); } else if (strategy == "LEAST_CONNECTIONS") {
  • 13. applyLeastConnectionsBalancing(); } else if (strategy == "RESOURCE_AWARE") { applyResourceAwareBalancing(); } else { applyDefaultBalancing(); } } else { std::cout << "Monitoring Load...n"; } } int main() { manageResources(80, "ROUND_ROBIN"); manageResources(75, "LEAST_CONNECTIONS"); manageResources(85, "RESOURCE_AWARE"); manageResources(65, "UNKNOWN"); return 0; }