jueves, 16 de abril de 2026

02e.- Programación II - Lanzamisiles Actividad a trabajar en clases el 16 de abril de 2026 (Semestre 2026 - II) - Solución del Profesor

Usted debe elaborar un programa que permita destruir la bomba enemiga considerando que las siguientes condiciones que reporta el radar pueden variar:

Datos de entrada al programa proveniente del radar de la base antiaérea.
  • Velocidad del avión (En el momento que suelta la bomba)
  • Altura de vuelo del avión (En el momento que se suelta la bomba -superior a los 2000 mts)
  • Distancia horizontal del avión al cañón antiaéreo (En el momento que se suelta la bomba).
Para todo cálculo que lo requiera utilice 9.8 mts/segcomo valor de la gravedad

El programa deberá reportar:

(1) Velocidad de disparo del cañón antiaéreo (mts/seg) 
(2) Angulo de disparo del Cañón (En Radianes y Grados)

La seguridad de la instalación depende de ustedes!!!



Solución



                                         Programa en C++


// Programa para el calculo del disparo del cañón antibombas
// Catedra Programación II - Profesor Carlos Ferrer
// Nov- 2024

#include <iostream>
#include <math.h>
#include <locale.h>
using namespace std;
main(){

setlocale(LC_ALL, "spanish"); //Se coloca el lenguaje en español

float  vom=0,Q=0; 
// las dos variables que queremos calcular vom = Velocidad inicial del misil Q= Angulo de disparo
 
double da=0,v=0,h=0; 

/* 
Datos que suministra el sistema de radar da = distancia en X del lanzamisiles al avion cuando suelta la bomba
   v = Velocidad del avión
   h = Altura del avión cuando suelta la carga 
*/
 
 double d=0,tvb=0,tvm=0,h_impacto=1600;       
 /*
d = desplazamiento en x de la bomba hasta que su altura es de 1600 metros, 
tvb = tiempo de vuelo de la bomba hasta 1600 mts
tvm = tiempo de vuelo del misil
h_impacto = altura a la cual impactara el misil con la bomba
*/
                    
inicio:
 system("cls");//para limpiar la consola
 
 cout<<"El punto de referencia del cañón es cero(0), si se indica valores negativos"<<endl;
 cout<<"es porque el avión soltó la bomba esta detrás del cañón, valores positivos indican que el"<<endl;
 cout<<"avión soltó la carga delante del cañón, cero (0) indicaría que soltó la carga exactamente encima del cañón"<<endl<<endl;
 
 cout<<"El radar reporto que la distancia en X del lanza misiles al avión (mts) es = ";cin>>da;
 cout<<"El radar reporto que la velocidad del avión (mts/s) es = ";cin>>v;
 cout<<"El radar reporto que la Altura de vuelo del avion (mts) es = ";cin>>h;
 



 tvb=sqrt((h-h_impacto)/4.9); //Calculamos tiempo de vuelo bomba hasta 1600 mts
d=v*tvb; //Calculamos desplazamiento en X de la bomba hasta alcanzar la altura de 1600 mts
        
 // Calculamos Tiempo de vuelo del misil hasta una altura de 1600 mts 
 tvm=tvb-5; 
        
  //Calculamos Velocidad inicial del misil
vom=sqrt(pow((h_impacto/tvm+4.9*tvm),2)+(pow((da+d),2)/pow(tvm,2))); 
        
 
Q=acos((da+d)/(tvm*vom)); // Calculamos ángulo de elevación del lanzamisiles en radianes
Q=Q*180/3.141592; //Convertimos el ángulo de rad a Deg.
 
// Presentamos los resultados
if  (vom>=100000)
{
    cout <<endl<<"La bomba lleva una trayectoria que esta fuera del alcance del cañón."<<endl;
    cout <<"La explotara en una zona lejana al campamento"<<endl;
    }
else
    {
    cout <<endl<<"La velocidad a la cual debe dispararse el misil es (mts/s) = "<<vom<<endl;
    cout<<"El ángulo con respecto al piso del lanzamisiles es (deg) = "<<Q<<"°"<<endl;
    }
system("pause");
goto inicio;
}

Programa en Python

# Programa para el calculo del disparo del cañón antibombas
# Catedra Programación II - Profesor Carlos Ferrer
#Nov- 2024

import math
import os
# las dos variables que queremos calcular vom = Velocidad inicial del misil Q= Angulo de disparo
vom = 0
Q = 0

# Datos que suministra el sistema de radar
# da = distancia en X del lanzamisiles al avion cuando suelta la bomba
# v = Velocidad del avión
# h = Altura del avión cuando suelta la carga

da = 0
v = 0
h = 0

# d = desplazamiento en x de la bomba hasta que su altura es de 1600 metros,
# tvb = tiempo de vuelo de la bomba hasta 1600 mts
# tvm = tiempo de vuelo del misil
# h_impacto = altura a la cual impactara el misil con la bomba

d = 0
tvb = 0
tvm = 0
h_impacto = 1600

while True:
    os.system("cls")

    print("El punto de referencia del cañón es cero(0), si se indica valores negativos")
    print("es porque el avión soltó la bomba esta detrás del cañón, valores positivos indican que el")
    print("avión soltó la carga delante del cañón, cero (0) indicaría que soltó la carga exactamente encima del cañón")
    print()

    da = float(input("El radar reporto que la distancia en X del lanza misiles al avión (mts) es = "))
    v = float(input("El radar reporto que la velocidad del avión (mts/s) es = "))
    h = float(input("El radar reporto que la Altura de vuelo del avion (mts) es = "))


# Calculamos tiempo de vuelo bomba hasta 1600 mts
 
    tvb = math.sqrt((h - h_impacto) / 4.9)
# Calculamos desplazamiento en X de la bomba hasta alcanzar la altura de 1600 mts    
    d = v * tvb
# Calculamos Tiempo de vuelo del misil hasta una altura de 1600 mts
    tvm = tvb - 5
# Calculamos Velocidad inicial del misil
    vom = math.sqrt(pow((h_impacto / tvm + 4.9 * tvm), 2) + (pow((da + d), 2) / pow(tvm, 2)))
   
# Calculamos ángulo de elevación del lanzamisiles en radianes y convertimos a grados
    Q = math.acos((da + d) / (tvm * vom))
    Q = Q * 180 / 3.141592

# Presentamos Resultados

    if vom >= 100000:
        print()
        print("La bomba lleva una trayectoria que esta fuera del alcance del cañón.")
        print("La explotara en una zona lejana al campamento")
    else:
        print()
        print("La velocidad a la cual debe dispararse el misil es (mts/s) = ", vom)
        print("El ángulo con respecto al piso del lanzamisiles es (deg) = ", Q, "°")

    os.system("pause") 

02c.- Programación II - Lanzamisiles Actividad a trabajar en clases el 16 de abril de 2026 (Semestre 2026 - II)

 

Usted debe elaborar un programa que permita destruir la bomba enemiga considerando que las siguientes condiciones que reporta el radar pueden variar:

Datos de entrada al programa proveniente del radar de la base antiaérea.
  • Velocidad del avión (En el momento que suelta la bomba)
  • Altura de vuelo del avión (En el momento que se suelta la bomba -superior a los 2000 mts)
  • Distancia horizontal del avión al cañón antiaéreo (En el momento que se suelta la bomba).
Para todo cálculo que lo requiera utilice 9.8 mts/segcomo valor de la gravedad

El programa deberá reportar:

(1) Velocidad de disparo del cañón antiaéreo (mts/seg) 
(2) Angulo de disparo del Cañón (En Radianes y Grados)

La seguridad de la instalación depende de ustedes!!!

02b.- Programación II - Actividad a desarrollar clase 15 de abril 2026 - Solución del Profesor

La Gobernación de Miranda desea instalar semáforos dentro de los túneles del edo. Miranda de forma de alertar accidentes o trabajos dentro de los mismo, los semáforos tienen una masa 12.2 kg aproximadamente. Estos semáforos se fijaran al techo de la entrada de los túneles con un sistema de soporte como se muestra en la figura:



Para fijar la estructura al techo se empleara dos segmentos independiente de guaya sobrante de otros proyectos. Cada segmento de guaya solo soporta 10 kg de masa. Elabore un programa que determine cual rango puedo reducir o aumentar el segmento X sin que las guayas terminen rompiéndose. Adicionalmente informe los valores de los ángulos Alfa y Beta para esas longitudes límites. 

Nota la cadena soporta masas de hasta 50 kg.

Solución

Analizamos los diagramas de cuerpo libre, se puede establecer lo siguiente considerando que el sistema esta en equilibrio:


El sistema es representado por dos (2) ecuaciones de cuatro (4) incógnitas (T1, T2, α y β). 

Del triangulo que conforma las dos (2) cuerdas y el techo conocemos dos (2) segmentos: el techo = 2 mts y la cuerda que absorbe la tensión T2 = 1.5 mts. Se puede desarrollar un programa en el cual se ingrese la dimensión de la cuerda que soporta la tensión T1 (segmento X) y así obtener los ángulos α y β usando la ley del coseno, por lo tanto podemos establecer:

X2 = (1.5)2 + (2)2 – 2(1.5)(2) cos β => 

β=arccos[(X2 - (1.5)2 - (2)2)/( – 2(1.5)(2))]

(1.5)2 = X2+ (2)2 – 2(X)(2) cos α => 

α =arccos[((1.5)2 - X2 - (2)2)/( – 2(X)(2))]

Al conocer α y β podemos determinar las tensiones T1 y T2 resolviendo el sistema de ecuaciones de dos incógnitas:

T2 cos β = T1 cos α => T2 = T1 (cos α / cos β) en consecuencia podemos sustituir T2 en la otra ecuación:

T1 seno α + T2 seno β = 122 newton => 

T1 seno α + T1 (seno β x cos α / cos β) = 122 newtons =>

T1 = [122 newton/( seno α + (seno β x cos α / cos β)]

Al obtener T1 determinamos también T2 y evaluamos si alguna de las dos NO soporta 10 kg x 10 mt/seg2 o lo que es lo mismo 100 newtons.

A partir de allí podemos iterar hasta obtener las medidas limites del segmento X. 


Programa (C++)

/* Programa para determinar los rangos limites del segmento

X en cual la estructura soportará el peso del semáforo según

la figura.

Elaborado por Carlos Ferrer

Rev. Oct 2024

*/

#include<iostream>

#include<math.h>

using namespace std;

main()

{

double beta=0,alfa=0; //Ángulos

double x,t1=0,t2=0; //Segmento X y tensiones t1 y t2

double x_menor,x_mayor; //limites mayor y menor del segmento X

double beta_mayor,beta_menor; //limites mayor y menor del ángulo beta

double alfa_mayor,alfa_menor; //limites mayor y menor del ángulo alfa


/*iteramos y calculamos los ángulos y las tensiones al 

ampliar el segmento x*/

x=1.5; //longitud inicial

while (t2<100)

{

x=x+0.001;

beta=acos((pow(2,2)+pow(1.5,2)-pow(x,2))/(2*1.5*2));

alfa=acos((pow(2,2)+pow(x,2)-pow(1.5,2))/(2*x*2));

t1= 122/(sin(alfa)+sin(beta)*cos(alfa)/cos(beta));

t2=t1*cos(alfa)/cos(beta);

}

x_mayor=x;

beta_mayor=beta*180/M_PI;

alfa_mayor=alfa*180/M_PI;


/*iteramos y calculamos los ángulos y las tensiones al 

reducir el segmento x*/

x=1.5;

while(t1<100)

{

x=x-0.001;

beta=acos((pow(2,2)+pow(1.5,2)-pow(x,2))/(2*1.5*2));

alfa=acos((pow(2,2)+pow(x,2)-pow(1.5,2))/(2*x*2));

t1= 122/(sin(alfa)+sin(beta)*cos(alfa)/cos(beta));

t2=t1*cos(alfa)/cos(beta);

}

x_menor=x;

beta_menor=beta*180/M_PI;

alfa_menor=alfa*180/M_PI;

//presentamos los resultados

cout <<"La longitud minima que puede disminuir la guaya X corresponde a = "<<x_menor<<" mts"<<endl; 

cout <<"lo cual ocurre cuando alfa = "<<alfa_menor<<" deg y beta = "<<beta_menor<<endl<<endl; 

cout <<"La longitud maxima que puede aumentar la guaya X corresponde a = "<<x_mayor<<" mts"<<endl; 

cout <<"lo cual ocurre cuando alfa = "<<alfa_mayor<<" deg y beta = "<<beta_mayor<<endl<<endl; 

system ("pause");

}


Programa (Python)


# Programa para determinar los rangos limites del segmento # X en cual la estructura soportará el peso del semáforo según # la figura. # Elaborado por Carlos Ferrer # Rev. Oct 2024

import math
import os
os.system("cls")
beta = 0  # Ángulo
alfa = 0  # Ángulo
x = 1.5  # longitud inicial
t1 = 0
t2 = 0  # tensiones t1 y t2

# Iteramos y calculamos los ángulos y las tensiones al ampliar el segmento x
while t2 < 100:
    x += 0.001
    beta = math.acos((2**2 + 1.5**2 - x**2) / (2 * 1.5 * 2))
    alfa = math.acos((2**2 + x**2 - 1.5**2) / (2 * x * 2))
    t1 = 122 / (math.sin(alfa) + math.sin(beta) * math.cos(alfa) / math.cos(beta))
    t2 = t1 * math.cos(alfa) / math.cos(beta)

x_mayor = x
beta_mayor = beta * 180 / math.pi
alfa_mayor = alfa * 180 / math.pi

# Iteramos y calculamos los ángulos y las tensiones al reducir el segmento x
x = 1.5
while t1 < 100:
    x -= 0.001
    beta = math.acos((2**2 + 1.5**2 - x**2) / (2 * 1.5 * 2))
    alfa = math.acos((2**2 + x**2 - 1.5**2) / (2 * x * 2))
    t1 = 122 / (math.sin(alfa) + math.sin(beta) * math.cos(alfa) / math.cos(beta))
    t2 = t1 * math.cos(alfa) / math.cos(beta)

x_menor = x
beta_menor = beta * 180 / math.pi
alfa_menor = alfa * 180 / math.pi

# Presentamos los resultados
print(f"La longitud minima que puede disminuir la guaya X corresponde a = {x_menor} mts")
print(f"lo cual ocurre cuando alfa = {alfa_menor} deg y beta = {beta_menor} deg\n")
print(f"La longitud maxima que puede aumentar la guaya X corresponde a = {x_mayor} mts")
print(f"lo cual ocurre cuando alfa = {alfa_mayor} deg y beta = {beta_mayor} deg\n")




miércoles, 15 de abril de 2026

02a.- Programación II - Actividad a desarrollar clase 15 de abril 2026

La Gobernación de Miranda desea instalar semáforos dentro de los túneles del edo. Miranda de forma de alertar accidentes o trabajos dentro de los mismo, los semáforos tienen una masa 12.2 kg aproximadamente. Estos semáforos se fijaran al techo de la entrada de los túneles con un sistema de soporte como se muestra en la figura:



Para fijar la estructura al techo se empleara dos segmentos independiente de guaya sobrante de otros proyectos. Cada segmento de guaya solo soporta 10 kg de masa. Elabore un programa que determine cual rango puedo reducir o aumentar el segmento X sin que las guayas terminen rompiéndose. Adicionalmente informe los valores de los ángulos Alfa y Beta para esas longitudes límites. 

Nota la cadena soporta masas de hasta 50 kg.

01w.- Programación II - CALIFICACIONES Parcial Nro.1 (2026 - II) - CALIFICACIONES DEFINITIVAS 1ER CORTE

 



01v.- Programación II - Prueba Corta 2026 - II - CALIFICACIONES

 

sábado, 11 de abril de 2026

01u.- Programación II - Parcial Nro. 1 - Semestre 2026-II - Solución del Profesor

 


Solución

El primer paso es definir la fórmula de volumen de la piscina que corresponde a lo que queremos maximizar:

para eso descomponemos las figuras en dos: un paralelepípedo y una cuña,




En consecuencia, el volumen de la piscina corresponde a:

Vol = XY mt + XY/2 mt=> Vol = 3XY/2 mt3


La ecuación de Volumen quedó en función de dos variables, necesitamos que quede en función de una sola.

 

Como conocemos la cantidad de material que tendremos para construir el fondo y las paredes de la piscina podemos establecer lo siguiente:

 

M = Material para construir



M = Área del fondo + Área de las 4 paredes =>

M = (XY + 2Y + [X+X/2] + [X+X/2] + Y) mt=>

M = (XY + 3Y + 3X/2 + 3X/2) mt2 =>

M = (XY + 3Y + 3X) mt2

 

Conociendo esto podemos expresar una variable en función de la otra:

X = (M - 3Y) / (Y+3) mt

En consecuencia, el volumen correspondería a:

Vol = 3 [(M-3Y)  / (Y+3)] Y/2 mt3   

La ecuación también la podemos expresar como

Vol =(3/2) (MY – 3Y2) / (Y+3) mt3

 

Para hallar el valor de Y en donde el Volumen se hace máximo derivamos el volumen con respecto a Y y lo igualamos a cero dvol/dy=0, luego despejamos Y. 

 

dvol/dy=0 =>

[(M – 6Y) (Y+3) – (MY –3Y2)] / (Y+3)= 0

 

El denominador del lado izquierdo pasa al otro lado multiplicando y se cancela, en consecuencia, la ecuación quedaría:

 

MY + 3M – 6Y2 – 24Y – MY + 4Y2 = 0 =>

-4Y– 24Y + 3M = 0 => 4Y2+24Y-3M = 0 =>

al resolver la ecuación de 2do grado y dado que los valores de M están entre 2000 y 2500 mt2 se puede apreciar que una de las raíces nos quedará positiva y la otra negativa por lo que descartamos la repuesta negativa dado que no hay distancias negativas.

 

Al tener Y, sustituimos este valor en

 

X = (M - 4Y) / (Y+3) mt

Y obtenemos X,

 

Ahora procedemos a elaborar el programa.


PROGRAMA NRO. 1

MÉTODO DE LA DERIVADA


/* Este programa calcula las dimensiones de ancho y largo de la piscina de forma de obtener el máximo volumen posible con el material suministrado (parcial 1 semestre 2026-II)


************ Método de la derivación ********************


Elaborado por Carlos Ferrer

fecha: 11 de Abril de 2026

Rev. : 1

*/


#include<iostream>

#include<math.h>

#include<iomanip> //Biblioteca para imprimir sin notación científica

#include<locale.h>

using namespace std;


main()

{

double X,Y=0; //Largo y Ancho a calcular

double M; //Cantidad de material donado

float litros; //Capacidad en litros de la piscina

setlocale(LC_ALL, "spanish");

do

{

cout <<"Favor ingrese la cantidad de material donado en mts2 (2000-2500) = ";

cin >>M;

if (M<2000 or M>2500)

{

cout <<"dato incorrecto = "<<M<<endl;

system("pause");

system("cls");

}

}

while(M<2000 or M>2500);


//Calculamos Y y X

Y=(-18+sqrt(pow(18,2)-4*3*(-3*M)))/(2*3);

X=(M-3*Y)/(Y+3);

litros=(3*X*Y*1000)/2;


//Presentamos los resultados


cout <<endl<<"El largo de la piscina es de "<<Y<<" mts y"<<endl;

cout <<"el ancho de la piscina es de "<<X<<" mts."<<endl<<endl;

cout <<"El volumen es de "<<3*X*Y/2<<" mts3 (";

cout <<setprecision(2) << fixed <<litros<<" Litros)"<<endl<<endl;

cout <<"Para que la piscina tenga máximo volumen el fondo debe ser cuadrado!!!"<<endl<<endl;

system("pause");

}


Resultados



PROGRAMA NRO. 2
Método del tanteo (Iteración)


/* Este programa calcula las dimensiones de ancho y largo de
la piscina de forma de obtener el máximo volumen posible con el
material suministrado (parcial 1 semestre 2026-II)

*************** Método del tanteo ***************

Elaborado por Carlos Ferrer

fecha: 11 de Abril de 2026

Rev : 1

*/



#include<iostream>
#include<math.h>
#include<iomanip> //Biblioteca para imprimir sin notación científica
#include<locale.h>
using namespace std;


main()

{

double X,Y=0; //Largo y Ancho a calcular
double M; //Cantidad de material donado
double vol,aux,litros; //Capacidad en litros de la piscina
setlocale(LC_ALL, "spanish");

do

{
cout <<"Favor ingrese la cantidad de material donado en mts2 (2000-2500) = ";
cin >>M;
if (M<2000 or M>2500)
{
cout <<"dato incorrecto = "<<M<<endl;
system("pause");
system("cls");
}
}

while(M<2000 or M>2500);

//Calculamos Y y X

Y=0.0001;
X=(M-3*Y)/(Y+3);
vol=3*X*Y/2;
aux=0;

while (vol>aux)
{
aux=vol;
Y=Y+0.0001;
X=(M-3*Y)/(Y+3);
vol=3*X*Y/2;
}

Y-0.0001;
X=(M-3*Y)/(Y+3);
vol=3*X*Y/2;
litros=(3*X*Y*1000)/2;


//Presentamos los resultados

cout <<endl<<"El largo de la piscina es de "<<Y<<" mts y"<<endl;
cout <<"el ancho de la piscina es de "<<X<<" mts."<<endl<<endl;
cout <<"El volumen es de "<<3*X*Y/2<<" mts3 (";
cout <<setprecision(2) << fixed <<litros<<" Litros)"<<endl<<endl;
cout <<"Para que la piscina tenga máximo volumen el fondo debe ser cuadrado!!!"<<endl<<endl;
system("pause");
}