Está en la página 1de 21

Taller abril 23

Descripciones de las figuras (A, B, C y D) que a continuación siguen:

Todas tienen círculos no concéntricos y todas tienen radio r y por su centro pasa una recta. Todas demarcadas con
las regiones que se asignan según nombre de la figura

Figura A: centro del círculo (+r/2, +r/2), pendiente que pasa por su centro: ma = -1
Figura B: centro del círculo (-r/2, +r/2), pendiente que pasa por su centro: mb = +1
Figura C: centro del círculo (-r/2, -r/2), pendiente que pasa por su centro: mc = -1
Figura D: centro del círculo (+r/2, -r/2), pendiente que pasa por su centro: md = +1

A B

C D
Instrucciones Taller “PARCIAL1_15” (15% de la nota)

 Se debe entregar un informe “Word” al finalizar la hora asignada por el profesor.


 Deben formar grupos de a dos o tres personas, pero se permiten grupos individuales
 Deben pedir un tema por grupo formado, a través del profesor de la materia.
 Deben enviar un informe en “Word” vía correo electrónico al profesor y en el informe debe
estar incluido el programa “PseInt” elaborado durante el tiempo asignado por el profesor.

Correo electrónico: fsalazard@unal.edu.co


Nombre del informe (archivo “WORD”) adjunto al correo:
Prog_I_2020_PARCIAL1_15@prefijo_correo_quien_envia
Asunto del correo:
PARCIAL1_15@pref_correo_1er_estud@pref_correo_2do_estud@pref_correo_3er_estud
Cuerpo del mensaje: Programa “PseInt” elaborado durante la prueba
Contenido del informe (archivo “WORD”) adjunto al correo:
1) Portada (hoja por separado) de presentación: nombre de la universidad, nombre, el correo y
la identificación de los integrantes del grupo, fecha del informe, tema asignado por el
profesor a cada grupo (obligatorio).
2) Este documento (obligatorio) “Word” (Taller PARCIAL1_15)
3) Programa “PseInt” (especificando al comienzo del programa en los comentarios nombre de
los integrantes y tema asignado el cuál será obligatorio para cada grupo)

NOTAS:
1) En el cuerpo del mensaje electrónico deberá ir solamente el código fuente del algoritmo “PseInt”
elaborado por el grupo de los dos estudiantes. No se tendrá en cuenta cualquier otro archivo
adjunto (.pdf, .psc, etc.) enviado en el correo (Advertencia: sino aparece archivo “Word” la nota
del trabajo será de cero y no se valdrá el programa enviado en el cuerpo del mensaje).
2) Programa que no desarrolle el tema obligatorio o no venga con el documento “Word” Taller
PARCIAL1_15 asignado tendrá como nota cero (0).
3) Tanto el nombre del archivo “Word” adjunto en al correo, como el asunto del mensaje, deben ir
claramente descritos según normas explicadas al comienzo de estas instrucciones.
Actividad: desarrolle un programa en “PseInt”, de acuerdo al tema
previamente asignado por el profesor, tal que ejecute las siguientes
acciones:
 Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo de
0.25.
 Calcular y escribir el área aproximada de la región más grande que hay dentro del círculo
 Leer una coordenada (xp, yp) en el rango de [-1.8*(radio del círculo) .. +1.8*(radio del
círculo)].
 Determinar en qué región está la coordenada leída teniendo presente que cualquier punto
que esté “en la frontera” debe considerarse que pertenece a la región 0 (cero).
 Tener presente la formula general del circulo: (x – g)2+ (y – h)2= r2 con (g, h) como la
coordenada del centro del circulo que según la figura es (±r/2, ±r/2)
Sugerencia: dejar, para lo último, el cálculo y la escritura del área aproximada (o sea, lo último
que haga el programa)
Notas obligatorias:
1) Obligatorio usar variables lógicas (siguiendo la metodología “divide y reinaras”)
2) Obligatorio usar para las operaciones de lectura (Leer), la función Azar
3) Tener presente la región 0 (cero) como la región frontera, según lo explicado en clase
4) Tener presente el tema asignado. (Programa del taller que no cumpla con esta norma,
tendrá como nota cero (0))

Actividad posterior al taller: desarrolle un programa en “PseInt”, de acuerdo al tema previamente


asignado por el profesor, tal que ejecute las mismas acciones del taller enviado, pero calculando y
escribiendo el área exacta de la región más grande que hay dentro del círculo

Solución “área exacta” de la región más grande


Taller abril 23
Analicemos la simetría de la figura. Por construcción las regiones denominadas 5 del
cuarto y segundo cuadrantes son iguales, y la región 5 del tercer cuadrante es igual a
la suma de la región 5 del cuarto y de la región 5 segundo cuadrante.
Identifiquen bien en la gráfica, las coordenadas de los puntos A, B, C y D.
Teniendo conocidos las coordenadas de los puntos A, B, C y D podemos ya resolver el
problema.
El punto A es el centro del círculo (+r/2, +r/2) y es conocido.

Para el punto B, basta hallar la intersección del eje X con el círculo, en el primer
cuadrante. Reemplazando con y=0, en la ecuación del círculo se obtiene una ecuación
de segundo grado, en x, que al resolverla nos devuelve dos raíces reales en X; x1=
-0.366*r y x2=+1.366*r. Tomamos la segunda raíz que es la correspondiente a la
región 5

Para el punto C, basta hallar la intersección de la recta con el círculo, en el cuarto


cuadrante. Reemplazando con y=-x +r, en la ecuación del círculo se obtiene una
ecuación de segundo grado, también en x, que al resolverla nos devuelve dos raíces
reales en X; x1= +1.2071*r y x2=-0.2071*r. Tomamos la primera raíz que es la
correspondiente a la región 5

Para el punto D, basta hallar la intersección de la recta con el eje X, o sea el intercepto
de la recta en X (según lo explicado en clase).

Conocidas las coordenadas de los puntos sabremos las distancias de los segmentos
rectos AB, BC, AC, AD y DB.

Aplicando la ley de los cosenos (según lo explicado en clase) podemos hallar el ángulo
del sector circular y por tanto el área del sector circular.
El área de la región 5 del cuarto cuadrante será igual al área del sector circular menos
el área del triángulo ABD (dicha área se calcula aplicando la fórmula de Herón vista en
clase).
El área 3 del primer cuadrante (que es la mayor de las áreas inscritas en el círculo de la
figura y que corresponde al problema planteado) será el área de medio círculo menos
dos veces el área de la región 5.
Para comprobar que es correcta nuestra suposición, calculamos el área del triángulo
que está en el primer cuadrante y que es la región 4 (y que se calcula como el producto
del intercepto en “Y”, por el intercepto en “X” de la recta, y todo lo anterior dividido
por dos).
Con este último cálculo determinamos los valores de las regiones 1 del segundo y
cuarto cuadrante.

Para comprobar nuestro procedimiento, sumamos cuatro veces la región 5 del cuarto
cuadrante, dos veces el área de una de las regiones 1, y el del triángulo que está en el
primer cuadrante. Todo lo anterior se comprueba aplicando directamente la fórmula
del área de círculo ( AreaC=π r 2).

Actividad:
 Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo de
0.25.
 Calcular y escribir el área exacta de la región más grande que hay dentro del círculo
 Verificar que sea verdadero el resultado pedido

A continuación el problema resuelto en “PseInt”

Funcion ar=heron(a,b,c)
definir ar,s como real
s=(a+b+c)/2
ar=rc(s*(s-a)+(s-b)*(s-c))
FinFuncion
Funcion d=distancia(x1,y1,x2,y2)
definir d Como Real
d=rc((x1-x2)^2 + (y1-y2)^2)
FinFuncion
Algoritmo Solucion_Area_23_Abril_I_2020
///" Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo
de 0.25.
///" Calcular y escribir el área exacta de la región más grande que hay dentro del círculo
Definir r,m,b,c,alfag,alfar como real
Definir AreaT,Area1,Area5,AreaSect,AreaABD,AreaCirc,AreaGrande Como Real
Definir xa,ya,xb,yb,xc,yc,xd,yd como real
definir AB,AC,BC,AD,DB Como Real
r=azar(1451)+ 325 /// se está generando un número entero en el rango [ +325 .. +1775]
mientras r%25!=0 Hacer
r=azar(1451)+ 325
FinMientras
Escribir" ..r:",r," (número real sin decimales, multiplo de 25)"
r=r/100 /// se está generando un número real con dos decimales en el rango [ +3.25 .. +17.75]
Escribir" ..r:",r," (número real con dos decimales o multiplo de 0.25)"
///r=10 /// inicialmente para las pruebas
m=-1 /// Pendiente de la recta
xa=+r/2;ya=+r/2 /// centro del círculo
b=ya-m*xa; /// intercepto en Y
c=b /// intercepto en X
/// Ecuación de la recta Y = -X + r
xb=r*(1.0+rc(3))/2;yb=0 /// coordenada B
Escribir" ..xb:",xb," ..yb:",yb
xc=r*(1.0+rc(2))/2;yc=m*xc+r /// coordenada C
Escribir" ..xc:",xc," ..yc:",yc
xd=c;yd=0; /// coordenada D
Escribir" ..xd:",xd," ..yb:",yd
AB=r;AC=r
AD=distancia(xa,ya,xd,yd);BC=distancia(xb,yb,xc,yc)
DB=distancia(xd,yd,xb,yb)
escribir" ..AB:",AB," ..AC:",AC," ..AD:",AD," ..BC:",BC," ..DB:",DB
alfar=acos((2*AB^2 - BC^2)/(2*AB^2));alfag=180*alfar/PI
escribir" ..alfar:",alfar," radianes"," ..alfag:",alfag," grados"
AreaSect=alfag*PI*r^2/360
AreaABD=heron(AB,AD,DB);escribir" ..Area del triángulo ABD:",AreaABD
AreaT=b*c/2;escribir" ..Area del triángulo (región 4 - 1er c):",AreaT
escribir" ..Area del Sector:",AreaSect
Area5=AreaSect-AreaABD;escribir" ..Area 5 (región 5 - 4to c):",Area5
Area1=((PI*r^2/2) - AreaT - 2*Area5)/2.0
escribir" ..Area 1 (región 5 - 4to o 3er c):",Area1
AreaGrande=(PI*r^2/2)-2*Area5
escribir" ..Area más grande:",AreaGrande
AreaCirc=AreaGrande + AreaT + 4*Area5 + 2*Area1
/// Comprobación
Escribir" ..AreaCirc:",AreaCirc," igual a:",PI*r^2
FinAlgoritmo

Actividad complementaria al taller:


Complete el programa anterior, de tal forma que el programa escriba las coordenadas de los
siguientes puntos de intersección: B, C, E, F, G, H, I, D. (ver gráfica adjunta)

Para terminar de hallar los puntos de intersección, solo nos falta reemplazar en la ecuación del
círculo con x=0, para hallar los interceptos en H y en E. Reemplazando con x=0, en la ecuación del
círculo se obtiene una ecuación de segundo grado, en y, que al resolverla nos devuelve dos raíces
reales en y; y1= -0.366*r y y2=+1.366*r, que corresponden a los interceptos en H y en E.

Los interceptos en F y G, se hallaron cunado se hallaron los interceptos B y C

Estos últimos cálculos no son necesarios ya que por simetría se pueden deducir, con B deduzco H y
con F deduzco E. También por simetría con C deduzco G.

A continuación el problema del cálculo del área exacta con los puntos de intersección pedidos.

Funcion ar=heron(a,b,c)
definir ar,s como real
s=(a+b+c)/2
ar=rc(s*(s-a)+(s-b)*(s-c))
FinFuncion
Funcion d=distancia(x1,y1,x2,y2)
definir d Como Real
d=rc((x1-x2)^2 + (y1-y2)^2)
FinFuncion
Algoritmo Complemento_Area_24_Abril_I_2020
///Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo de
0.25.
///Calcular y escribir el área exacta de la región más grande que hay dentro del círculo
///Calcular y las coordenadas de intercepción de los puntos B, C, E, F, G, H, I , D
Definir r,m,b,c,alfag,alfar como real
Definir AreaT,Area1,Area5,AreaSect,AreaABD,AreaCirc,AreaGrande Como Real
Definir xa,ya,xb,yb,xc,yc,xd,yd,xe,ye,xf,yf,xg,yg,xh,yh,xi,yi como real
definir AB,AC,BC,AD,DB Como Real
r=azar(1451)+ 325 /// se está generando un número entero en el rango [ +325 .. +1775]
mientras r%25!=0 Hacer
r=azar(1451)+ 325
FinMientras
Escribir" ..r:",r," (número real sin decimales, multiplo de 25)"
r=r/100 /// se está generando un número real con dos decimales en el rango [ +3.25 ..
+17.75]
Escribir" ..r:",r," (número real con dos decimales o multiplo de 0.25)"
r=10 /// inicialmente para las pruebas
m=-1 /// Pendiente de la recta
xa=+r/2;ya=+r/2 /// centro del círculo
b=ya-m*xa; /// intercepto en Y
c=b /// intercepto en X
/// Ecuación de la recta Y = -X + r
xb=r*(1.0+rc(3))/2;yb=0 /// coordenada B
Escribir"";Escribir" ..Puntos de intersección B,C,D,E,F,G,H,I"
Escribir" ..xb:",xb," ..yb:",yb
xc=r*(1.0+rc(2))/2;yc=m*xc+r /// coordenada C
Escribir" ..xc:",xc," ..yc:",yc
xd=c;yd=0; /// coordenada D
Escribir" ..xd:",xd," ..yb:",yd
xf=r*(1.0-rc(3))/2;yf=0 /// coordenada F
Escribir" ..xf:",xf," ..yf:",yf
xe=yf;ye=xf /// Por simetría de E con F
Escribir" ..xe:",xe," ..ye:",ye
xg=yc;yg=xc /// Por simetría de G con C
Escribir" ..xg:",xg," ..yg:",yg
xh=yb;yh=xb /// Por simetría de H con B
Escribir" ..xh:",xh," ..yh:",yh
xi=yd;yi=xd /// Por simetría de I con D
Escribir" ..xi:",xi," ..yi:",yi
AB=r;AC=r
AD=distancia(xa,ya,xd,yd);BC=distancia(xb,yb,xc,yc)
DB=distancia(xd,yd,xb,yb)
escribir" ..AB:",AB," ..AC:",AC," ..AD:",AD," ..BC:",BC," ..DB:",DB
alfar=acos((2*AB^2 - BC^2)/(2*AB^2));alfag=180*alfar/PI
escribir" ..alfar:",alfar," radianes"," ..alfag:",alfag," grados"
AreaSect=alfag*PI*r^2/360
AreaABD=heron(AB,AD,DB);escribir" ..Area del triángulo ABD:",AreaABD
AreaT=b*c/2;escribir" ..Area del triángulo (región 4 - 1er c):",AreaT
escribir" ..Area del Sector:",AreaSect
Area5=AreaSect-AreaABD;escribir" ..Area 5 (región 5 - 4to c):",Area5
Area1=((PI*r^2/2) - AreaT - 2*Area5)/2.0
escribir" ..Area 1 (región 5 - 4to o 3er c):",Area1
AreaGrande=(PI*r^2/2)-2*Area5
escribir" ..Area más grande:",AreaGrande
AreaCirc=AreaGrande + AreaT + 4*Area5 + 2*Area1
/// Comprobación
Escribir" ..AreaCirc:",AreaCirc," igual a:",PI*r^2
FinAlgoritmo

Solución, incluyendo verificación exacta del área pedida, del Taller 23 de Abril de I 2020

Funcion ar=heron(a,b,c)
definir ar,s como real
s=(a+b+c)/2
ar=rc(s*(s-a)+(s-b)*(s-c))
FinFuncion
Funcion d=distancia(x1,y1,x2,y2)
definir d Como Real
d=rc((x1-x2)^2 + (y1-y2)^2)
FinFuncion

Algoritmo Solucion_Taller_23_Abril_I_2020
///
/// SOLUCIÓN PARA GRÁFICA “A”
///" Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo
de 0.25.
///" Calcular y escribir el área exacta de la región más grande que hay dentro del círculo
///Leer una coordenada (xp, yp) en el rango de [-1.8*(radio del círculo) .. +1.8*(radio del
círculo)].
///Determinar en qué región está la coordenada leída teniendo presente que cualquier
punto que esté "en la frontera"
///debe considerarse que pertenece a la región 0 (cero).
///Tener presente la formula general del circulo: (x - g) ^2+ (y - h) ^2= r^2
/// con (g, h) como la coordenada del centro del circulo que según la figura es (±r/2, ±r/2)
Definir r,m,b,c,alfag,alfar como real
Definir AreaT,Area1,Area5,AreaSect,AreaABD,AreaCirc,AreaGrande Como Real
Definir xa,ya,xb,yb,xc,yc,xd,yd,xp,yp como real
definir AB,AC,BC,AD,DB Como Real
definir k como entero
definir cu1,cu2,cu3,cu4,dentroC,fueraC,arrR,abaR como logico
definir reg0,reg1,reg2,reg3,reg4,reg5,reg6 Como Logico
r=azar(1451)+ 325 /// se está generando un número entero en el rango [ +325 .. +1775]
mientras r%25!=0 Hacer
r=azar(1451)+ 325
FinMientras
Escribir" ..r:",r," (número real sin decimales, multiplo de 25)"
r=r/100 /// se está generando un número real con dos decimales en el rango [ +3.25 ..
+17.75]
Escribir" ..r:",r," (número real con dos decimales o multiplo de 0.25)"
r=10 /// inicialmente para las pruebas
m=-1 /// Pendiente de la recta
xa=+r/2;ya=+r/2 /// centro del círculo
b=ya-m*xa; /// intercepto en Y
c=b /// intercepto en X
/// Ecuación de la recta Y = -X + r
xb=r*(1.0+rc(3))/2;yb=0 /// coordenada B
Escribir" ..xb:",xb," ..yb:",yb
xc=r*(1.0+rc(2))/2;yc=m*xc+r /// coordenada C
Escribir" ..xc:",xc," ..yc:",yc
xd=c;yd=0;yd=0 /// coordenada D
Escribir" ..xd:",xd," ..yb:",yd
AB=r;AC=r
AD=distancia(xa,ya,xd,yd);BC=distancia(xb,yb,xc,yc)
DB=distancia(xd,yd,xb,yb)
escribir" ..AB:",AB," ..AC:",AC," ..AD:",AD," ..BC:",BC," ..DB:",DB
alfar=acos((2*AB^2 - BC^2)/(2*AB^2));alfag=180*alfar/PI
escribir" ..alfar:",alfar," radianes"," ..alfag:",alfag," grados"
AreaSect=alfag*PI*r^2/360
AreaABD=heron(AB,AD,DB);escribir" ..Area del triángulo ABD:",AreaABD
AreaT=b*c/2;escribir" ..Area del triángulo (región 4 - 1er c):",AreaT
escribir" ..Area del Sector:",AreaSect
Area5=AreaSect-AreaABD;escribir" ..Area 5 (región 5 - 4to c):",Area5
Area1=((PI*r^2/2) - AreaT - 2*Area5)/2.0
escribir" ..Area 1 (región 5 - 4to o 3er c):",Area1
AreaGrande=(PI*r^2/2)-2*Area5
escribir" ..Area más grande:",AreaGrande
AreaCirc=AreaGrande + AreaT + 4*Area5 + 2*Area1
/// Comprobación
Escribir" ..AreaCirc:",AreaCirc," igual a:",PI*r^2
xp=((azar(37)-16)/10)*r;yp=((azar(37)-16)/10)*r;
Escribir" punto leído ..xp:",xp," ..yp:",yp
cu1=xp>0&yp>0;cu2=xp<0&yp>0;cu3=xp<0&yp<0;cu4=xp>0&yp<0;
dentroC=((xp-r/2)^2+(yp-r/2)^2)<r^2;fueraC=((xp-r/2)^2+(yp-r/2)^2)>r^2;
arrR=yp>m*xp+b;abaR=yp<m*xp+b;
reg1=(cu2&dentroC&abaR) | (cu4&dentroC&abaR)
reg2=(cu2&fueraC&arrR) | (cu4&fueraC&abaR)
reg3=(cu2&fueraC&abaR) | (cu1&dentroC&arrR)
reg4=(cu1&fueraC) | (cu1&abaR)
reg5=(cu3&dentroC) | (cu2&dentroC&arrR) | (cu4&dentroC&arrR)
reg6=(cu3&fueraC) | (cu4&fueraC&arrR)
k=0 /// asumimos que está en la región 0 (frontera)
/// verificamos en el resto de las regiones
si reg1 Entonces
k=1
FinSi
si reg2 Entonces
k=2
FinSi
si reg3 Entonces
k=3
FinSi
si reg4 Entonces
k=4
FinSi
si reg5 Entonces
k=5
FinSi
si reg6 Entonces
k=6
FinSi
escribir" ..está en la región :",k
FinAlgoritmo

Solución, usando arreglos lineales (vectores en programación) e incluyendo verificación exacta del
área pedida, del Taller 23 de Abril de I 2020

Funcion ar=heron(a,b,c)
definir ar,s como real
s=(a+b+c)/2
ar=rc(s*(s-a)+(s-b)*(s-c))
FinFuncion
Funcion d=distancia(x1,y1,x2,y2)
definir d Como Real
d=rc((x1-x2)^2 + (y1-y2)^2)
FinFuncion

Algoritmo Solucion_Taller_23_Abril_Arreglos
/// Se cambia rango de generación de (xp, yp) [-1.0*(radio del círculo) .. +1.8*(radio del
círculo)]
///
/// SOLUCIÓN GRÁFICA A
///" Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo
de 0.25.
///" Calcular y escribir el área exacta de la región más grande que hay dentro del círculo
///Leer una coordenada (xp, yp) en el rango de [-1.0*(radio del círculo) .. +1.8*(radio del
círculo)].
///Determinar en qué región está la coordenada leída teniendo presente que cualquier
punto que esté "en la frontera"
///debe considerarse que pertenece a la región 0 (cero).
///Tener presente la formula general del circulo: (x - g)2+ (y - h)2= r2
/// con (g, h) como la coordenada del centro del circulo que según la figura es (±r/2, ±r/2)
Definir r,m,b,c,alfag,alfar como real
Definir AreaT,Area1,Area5,AreaSect,AreaABD,AreaCirc,AreaGrande Como Real
Definir xa,ya,xb,yb,xc,yc,xd,yd,xp,yp como real
definir AB,AC,BC,AD,DB Como Real
definir i,k como entero
definir cuad,dentroC,fueraC,arrR,abaR,Reg como logico
dimension Cuad[5],Reg[7] /// apartando espacio para los vectores Cuad y Reg
//definir reg0,reg1,reg2,reg3,reg4,reg5,reg6 Como Logico
r=azar(1451)+ 325 /// se está generando un número entero en el rango [ +325 .. +1775]
mientras r%25!=0 Hacer
r=azar(1451)+ 325
FinMientras
Escribir" ..r:",r," (número real sin decimales, multiplo de 25)"
r=r/100 /// se está generando un número real con dos decimales en el rango [ +3.25 ..
+17.75]
Escribir" ..r:",r," (número real con dos decimales o multiplo de 0.25)"
///r=10 /// inicialmente para las pruebas
m=-1 /// Pendiente de la recta
xa=+r/2;ya=+r/2 /// centro del círculo
b=ya-m*xa; /// intercepto en Y
c=b /// intercepto en X
/// Ecuación de la recta Y = -X + r
xb=r*(1.0+rc(3))/2;yb=0 /// coordenada B
Escribir" ..xb:",xb," ..yb:",yb
xc=r*(1.0+rc(2))/2;yc=m*xc+r /// coordenada C
Escribir" ..xc:",xc," ..yc:",yc
xd=c;yd=0;yd=0 /// coordenada D
Escribir" ..xd:",xd," ..yb:",yd
AB=r;AC=r
AD=distancia(xa,ya,xd,yd);BC=distancia(xb,yb,xc,yc)
DB=distancia(xd,yd,xb,yb)
escribir" ..AB:",AB," ..AC:",AC," ..AD:",AD," ..BC:",BC," ..DB:",DB
alfar=acos((2*AB^2 - BC^2)/(2*AB^2));alfag=180*alfar/PI
escribir" ..alfar:",alfar," radianes"," ..alfag:",alfag," grados"
AreaSect=alfag*PI*r^2/360
AreaABD=heron(AB,AD,DB);escribir" ..Area del triángulo ABD:",AreaABD
AreaT=b*c/2;escribir" ..Area del triángulo (región 4 - 1er c):",AreaT
escribir" ..Area del Sector:",AreaSect
Area5=AreaSect-AreaABD;escribir" ..Area 5 (región 5 - 4to c):",Area5
Area1=((PI*r^2/2) - AreaT - 2*Area5)/2.0
escribir" ..Area 1 (región 5 - 4to o 3er c):",Area1
AreaGrande=(PI*r^2/2)-2*Area5
escribir" ..Area más grande:",AreaGrande
AreaCirc=AreaGrande + AreaT + 4*Area5 + 2*Area1
/// Comprobación
Escribir" ..AreaCirc:",AreaCirc," igual a:",PI*r^2
///
/// Segunda parte
xp=((azar(29)-10)/10)*r;yp=((azar(29)-10)/10)*r;///[ -1.0*r .. +1.8*r]
Escribir" punto leído ..xp:",xp," ..yp:",yp
Cuad[1]=xp>0&yp>0;Cuad[2]=xp<0&yp>0;Cuad[3]=xp<0&yp<0;Cuad[4]=xp>0&yp<0;
dentroC=((xp-r/2)^2+(yp-r/2)^2)<r^2;fueraC=((xp-r/2)^2+(yp-r/2)^2)>r^2;
arrR=yp>m*xp+b;abaR=yp<m*xp+b;
Reg[1]=(Cuad[2]&dentroC&abaR) | (Cuad[4]&dentroC&abaR)
Reg[2]=(Cuad[2]&fueraC&arrR) | (Cuad[4]&fueraC&abaR)
Reg[3]=(Cuad[2]&fueraC&abaR) | (Cuad[1]&dentroC&arrR)
Reg[4]=(Cuad[1]&fueraC) | (Cuad[1]&abaR)
Reg[5]=(Cuad[3]&dentroC) | (Cuad[2]&dentroC&arrR) | (Cuad[4]&dentroC&arrR)
Reg[6]=(Cuad[3]&fueraC) | (Cuad[4]&fueraC&arrR)
k=0 /// asumimos que está en la región 0 (frontera)
/// verificamos si cae en alguna del resto de las regiones
para i=1 hasta 6 hacer
si Reg[i] Entonces
k=i
FinSi
FinPara
escribir" ..está en la región :",k
FinAlgoritmo

Observación: recuerden, según la configuración establecida al “PseInt” al comienzo del Curso, que
estamos usando la posición o (cero) para almacenar datos y noten que el vector Cuad tiene
reservadas 5 posiciones: Cuad[0], Cuad[1], Cuad[2], Cuad[3]y Cuad[4], pero en el programa no
utilizamos la posición Cuad[0]

Talleres ejemplo, usando la figura A del taller del 23 de abril

Actividad1: para la figura “A” elabore un programa en “PseInt” que realice las siguientes acciones:

///Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo de 0.25.
///Leer el valor de la variable N en el rango [ +7 .. +99] tal que N sea par y múltiplo de 7
///Leer N coordenadas de la forma (xp, yp) y almacenarlas en un par de vectores
///Usando los vectores leídos y almacenados, determinar y escribir cuántas coordenadas caen en
cada una de las regiones,
/// según la Figura "A"; y utilizando una función definida por el usuario
/// Las coordenadas deben estar en el rango de [-2.5*(radio del círculo) .. +2.5*(radio del
círculo)],
/// teniendo presente que cualquier punto que esté "en la frontera", pertenece a la región 0
(cero).
///Tener presente la formula general del circulo: (x - g)^2+ (y - h)^2= r^2
/// con (g, h) como la coordenada del centro del circulo que según la figura es (±r/2, ±r/2)
///Notas obligatorias:
/// 1) Obligatorio usar variables lógicas (siguiendo la metodología "divide y reinaras")
/// 2) Obligatorio usar para las operaciones de lectura (Leer), la función Azar
/// 3) Obligatorio usar arreglos lineales

Solución Actividad1 complementaria usando la figura “A”

Funcion EscribaCont(Cont,M)
Definir i,Tot Como Entero
Tot=0;/// Totalizador
Para i=0 hasta M-1 hacer /// escribiendo resultados pedidos
Tot=Tot+Cont[i];Escribir sin saltar" ..Cont[",i,"]=",Cont[i]
FinPara
Escribir"";Escribir" ..Tot=",Tot /// verificando calculos
FinFuncion
Algoritmo Actividad_Taller_23_Abril_Arreglos
///Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo de
0.25.
///Leer el valor de la variable N en el rango [ +7 .. +99] tal que N sea par y múltiplo de 7
///Leer N coordenadas de la forma (x, y) y almacenarlas en un par de vectores
///Usando los vectores leídos y almacenados, determinar y escribir cuántas coordenadas
caen en cada una de las regiones,
/// según la Figura "A"; y utilizando una función definida por el usuario
/// Las coordenadas deben estar en el rango de [-2.5*(radio del círculo) .. +2.5*(radio del
círculo)],
/// teniendo presente que cualquier punto que esté "en la frontera", pertenece a la región 0
(cero).
///Tener presente la formula general del circulo: (x - g)^2+ (y - h)^2= r^2
/// con (g, h) como la coordenada del centro del circulo que según la figura es (+r/2, +r/2)
///Notas obligatorias:
/// 1) Obligatorio usar variables lógicas (siguiendo la metodología "divide y reinaras")
/// 2) Obligatorio usar para las operaciones de lectura (Leer), la función Azar
/// 3) Obligatorio usar arreglos lineales
Definir r,m,b,x,y,xp,yp como real
definir i,j,k,N,Tot,Cont como entero
definir cuad,dentroC,fueraC,arrR,abaR,Reg como logico
dimension Cuad[5],Reg[7],Cont[7],x[99],y[99] /// apartando espacio para los vectores Cuad,
Reg, Cont, x, y
r=azar(1451)+ 325 /// se está generando un número entero en el rango [ +325 .. +1775]
mientras r%25!=0 Hacer
r=azar(1451)+ 325
FinMientras
r=r/100 /// se está generando un número real con dos decimales en el rango [ +3.25 ..
+17.75]
Escribir" ..r=",r," (número real con dos decimales o multiplo de 0.25)"
///r=10 /// inicialmente para las pruebas
N=azar(100)+1
mientras (N%2!=0)|(N%7!=0) Hacer
N=azar(99)+1
FinMientras
///N=99 /// inicialmente para las pruebas
Escribir" ..N=",N
m=-1 /// Pendiente de la recta
b=(r/2)-m*(r/2); /// intercepto en Y
/// Ecuación de la recta Y = -X + r
/// Inicializando contadores
para i=0 hasta 6 Hacer
Cont[i]=0
FinPara
para i=0 hasta N-1 hacer /// "leyendo" y almacenando los vectores "x" y "y"
x[i]=((azar(51)-25)/10)*r;y[i]=((azar(51)-25)/10)*r;
FinPara
para i=0 hasta N-1 hacer /// recorriendo los vectores y calculando contadores por región
xp=x[i];yp=y[i] /// por aquí pasa N veces
Cuad[1]=xp>0&yp>0;Cuad[2]=xp<0&yp>0;Cuad[3]=xp<0&yp<0;Cuad[4]=xp>0&yp<0;
dentroC=((xp-r/2)^2+(yp-r/2)^2)<r^2;fueraC=((xp-r/2)^2+(yp-r/2)^2)>r^2;
arrR=yp>m*xp+b;abaR=yp<m*xp+b;
Reg[1]=(Cuad[2]&dentroC&abaR) | (Cuad[4]&dentroC&abaR)
Reg[2]=(Cuad[2]&fueraC&arrR) | (Cuad[4]&fueraC&abaR)
Reg[3]=(Cuad[2]&fueraC&abaR) | (Cuad[1]&dentroC&arrR)
Reg[4]=(Cuad[1]&fueraC) | (Cuad[1]&abaR)
Reg[5]=(Cuad[3]&dentroC) | (Cuad[2]&dentroC&arrR) | (Cuad[4]&dentroC&arrR)
Reg[6]=(Cuad[3]&fueraC) | (Cuad[4]&fueraC&arrR)
/// Determinar el número de la región
k=0 /// asumimos que está en la región 0 (frontera)
/// verificamos si cae en alguna del resto de las regiones
para j=1 hasta 6 hacer
si Reg[j] Entonces
k=j /// número de la región si no está en la región 0
FinSi
FinPara
Cont[k]=Cont[k]+1 /// acumulando en el contador de la región
FinPara
EscribaCont(Cont,7) /// Observe el uso de la función “EscribaCont”
FinAlgoritmo

Actividad2: para la figura “A” elabore un programa en “PseInt” que realice las siguientes acciones:

///Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo de 0.25.
///Calcular y escribir las coordenadas de intercepción de los puntos B, C, E, F, G, H, I, D
///Calcular y escribir 3 puntos que estén dentro de la región 5 (las tres más pequeñas dentro del
círculo)
///Las once coordenadas almacenarlas en un par de vectores de la forma (x, y) usando un
comando dimensión, con espacio para 11 elementos en cada vector
/// Escribir los vectores hallados usando una función definida por el usuario
/// Ver gráfica "A" del examen taller del 23 de abril
Solución Actividad2 complementaria usando la figura “A”

Funcion EscribaPtos(x,y,M)
Definir i Como Entero
Escribir"";Escribir" ..los ",M," puntos"
para i=0 hasta M-1 Hacer
Escribir" i:",i,"..(x,y)= [",x[i],",",y[i],"]"
FinPara
FinFuncion
Algoritmo PuntosRegion5Taller23deAbril
///Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo de
0.25.
///Calcular y escribir las coordenadas de intercepción de los puntos B, C, E, F, G, H, I , D
///Calcular y escribir 3 puntos que estén dentro de la región 5 (las tres más pequeñas dentro
del círculo)
///Las once coordenadas almacenarlas en un par de vectores de la forma (x, y), usando un
comando dimensión
/// con espacio para 11 elementos en cada vector
/// Escribir los vectores hallados usando una función definida por el usuario
/// Ver gráfica "A" del exámen taller del 23 de abril
definir i como entero
Definir x,y,r,m,b,c como real
Definir xa,ya,xb,yb,xc,yc,xd,yd,xe,ye,xf,yf,xg,yg,xh,yh,xi,yi como real
dimension x[11],y[11]
r=azar(1451)+ 325 /// se está generando un número entero en el rango [ +325 .. +1775]
mientras r%25!=0 Hacer
r=azar(1451)+ 325
FinMientras
//Escribir" ..r:",r
r=r/100 /// se está generando un número real con dos decimales en el rango [ +3.25 ..
+17.75]
Escribir" ..r:",r
//r=10 /// inicialmente para las pruebas
m=-1 /// Pendiente de la recta
xa=+r/2;ya=+r/2 /// centro del círculo
b=ya-m*xa; c=b /// intercepto en Y y en X; Ecuación de la recta Y = -X + r
///
Escribir"";Escribir" ..Puntos de intersección B,C,D,E,F,G,H,I"
i=0;xb=r*(1.0+rc(3))/2;yb=0;x[0]=r*(1.0+rc(3))/2;y[0]=yb /// coordenada B
Escribir" i:",i," ..xb:",xb," ..yb:",yb
i=1;xc=r*(1.0+rc(2))/2;yc=m*xc+r;x[1]=r*(1.0+rc(2))/2;y[1]=m*xc+r /// coordenada C
Escribir" i:",i," ..xc:",xc," ..yc:",yc
i=2;xd=c;yd=0;x[2]=c;y[2]=0 /// coordenada D
Escribir" i:",i," ..xd:",xd," ..yb:",yd
i=3;xf=r*(1.0-rc(3))/2;yf=0;x[3]=r*(1.0-rc(3))/2;y[3]=0 /// coordenada F
Escribir" i:",i," ..xf:",xf," ..yf:",yf
i=4;xe=yf;ye=xf;x[4]=y[3];y[4]=x[3] /// Por simetría de E con F
Escribir" i:",i," ..xe:",xe," ..ye:",ye
i=5;xg=yc;yg=xc;x[5]=xg;y[5]=yg /// Por simetría de G con C
Escribir" i:",i," ..xg:",xg," ..yg:",yg
i=6;xh=yb;yh=xb;x[6]=y[0];y[6]=x[0] /// Por simetría de H con B
Escribir" i:",i," ..xh:",xh," ..yh:",yh
i=7;xi=yd;yi=xd;x[7]=y[2];y[7]=x[2] /// Por simetría de I con D
Escribir" i:",i," ..xi:",xi," ..yi:",yi
Escribir"";Escribir" ..3 puntos que están dentro de la región 5"
x[8]=(xb+xd)/2;y[8]=yc/2; /// Punto en la región 5
x[9]=xf/2;y[9]=ye/2; /// Punto en la región 5
x[10]=xg/2;y[10]=(yh+yi)/2; /// Punto en la región 5
para i=8 hasta 10 Hacer
Escribir"..(x,y)= [",x[i],",",y[i],"]"
FinPara
EscribaPtos(x,y,11)
FinAlgoritmo

Actividad3: a la Actividad1 de la página 14, agréguele el resultado de la PROGRAMACIÓN


obtenida en la Activida2 anterior. Para ello se debe programar una función que añada 11 puntos
más, a los N puntos que indica el programa. Lo anterior, con el objeto de verificar que caen puntos
en la frontera y caen puntos en la región 5 (dado que son las tres áreas más pequeñas dentro del
círculo).

El número total de puntos a examinar, será por tanto, N+11.


Solución Actividad3 complementaria, usando PROGRAMACIÓN de la Actividad2

Funcion EscribaCont(Cont,M)
Definir i,Tot Como Entero
Tot=0;/// Totalizador
Para i=0 hasta M-1 hacer /// escribiendo resultados pedidos
Tot=Tot+Cont[i];Escribir sin saltar" ..Cont[",i,"]=",Cont[i]
FinPara
Escribir"";Escribir" ..Tot=",Tot /// verificando calculos
FinFuncion
Funcion IncluyaPtos(x,y,r)
Definir m,b,c Como Real
m=-1 /// Pendiente de la recta
b=+r/2-m*r/2; c=b /// intercepto en Y y en X; Ecuación de la recta Y = -X + r
///
x[0]=r*(1.0+rc(3))/2;y[0]=0 /// coordenada B
x[1]=r*(1.0+rc(2))/2;y[1]=m*x[1]+r /// coordenada C
x[2]=c;y[2]=0 /// coordenada D
x[3]=r*(1.0-rc(3))/2;y[3]=0 /// coordenada F
x[4]=y[3];y[4]=x[3] /// Por simetría de E con F
x[5]=y[1];y[5]=x[1] /// Por simetría de G con C
x[6]=y[0];y[6]=x[0] /// Por simetría de H con B
x[7]=y[2];y[7]=x[2] /// Por simetría de I con D
x[8]=(x[0]+x[2])/2;y[8]=y[1]/2; /// Punto en la región 5
x[9]=x[3]/2;y[9]=y[4]/2;/// Punto en la región 5
x[10]=x[5]/2;y[10]=(y[6]+y[7])/2;/// Punto en la región 5
FinFuncion
Algoritmo Actividad3_Taller_23_Abril_Arreglos
///Leer radio del círculo en el rango [ +3.25 .. + 17.75] con dos cifras decimales y múltiplo de
0.25.
///Leer el valor de la variable N en el rango [ +7 .. +99] tal que N sea par y múltiplo de 7
///Leer N coordenadas de la forma (x, y) y almacenarlas en un par de vectores
///Usando los vectores leídos y almacenados, determinar y escribir cuántas coordenadas
caen en cada una de las regiones,
/// según la Figura "A"; y utilizando una función definida por el usuario
/// Las coordenadas deben estar en el rango de [-2.5*(radio del círculo) .. +2.5*(radio del
círculo)],
/// teniendo presente que cualquier punto que esté "en la frontera", pertenece a la región 0
(cero).
///Tener presente la formula general del circulo: (x - g)^2+ (y - h)^2= r^2
/// con (g, h) como la coordenada del centro del circulo que según la figura es (+r/2, +r/2)
///Incluir 11 puntos adicionales a través de una función y de acuerdo al programa
desarrollado en la Actividad2
///Notas obligatorias:
/// 1) Obligatorio usar variables lógicas (siguiendo la metodología "divide y reinaras")
/// 2) Obligatorio usar para las operaciones de lectura (Leer), la función Azar
/// 3) Obligatorio usar arreglos lineales

Definir r,m,b,x,y,xp,yp como real


definir i,j,k,N,Tot,Cont como entero
definir cuad,dentroC,fueraC,arrR,abaR,Reg como logico
dimension Cuad[5],Reg[7],Cont[7],x[111],y[111] /// apartando espacio para los vectores
Cuad, Reg, Cont, x, y
r=azar(1451)+ 325 /// se está generando un número entero en el rango [ +325 .. +1775]
mientras r%25!=0 Hacer
r=azar(1451)+ 325
FinMientras
r=r/100 /// se está generando un número real con dos decimales en el rango [ +3.25 ..
+17.75]
Escribir" ..r=",r
///r=10 /// inicialmente para las pruebas
N=azar(100)+1
mientras (N%2!=0)|(N%7!=0) Hacer
N=azar(99)+1
FinMientras
///N=99 /// inicialmente para las pruebas
Escribir" ..N=",N+11 /// debe incluirse los puntos que va a calcular la función "IncluyaPtos"
m=-1 /// Pendiente de la recta
b=(r/2)-m*(r/2); /// intercepto en Y
/// Ecuación de la recta Y = -X + r
/// Inicializando contadores
para i=0 hasta 6 Hacer
Cont[i]=0
FinPara
IncluyaPtos(x,y,r); /// Observe el uso de la función " IncluyaPtos "
para i=11 hasta N-1+11 hacer /// "leyendo" y almacenando los vectores "x" y "y"
x[i]=((azar(51)-25)/10)*r;y[i]=((azar(51)-25)/10)*r;
FinPara
/// Debe cambiarse el número de puntos para el resto del programa
N=N+11
para i=0 hasta N-1 hacer /// recorriendo los vectores y calculando contadores por región
xp=x[i];yp=y[i] /// por aquí pasa N veces
Cuad[1]=xp>0&yp>0;Cuad[2]=xp<0&yp>0;Cuad[3]=xp<0&yp<0;Cuad[4]=xp>0&yp<0;
dentroC=((xp-r/2)^2+(yp-r/2)^2)<r^2;fueraC=((xp-r/2)^2+(yp-r/2)^2)>r^2;
arrR=yp>m*xp+b;abaR=yp<m*xp+b;
Reg[1]=(Cuad[2]&dentroC&abaR) | (Cuad[4]&dentroC&abaR)
Reg[2]=(Cuad[2]&fueraC&arrR) | (Cuad[4]&fueraC&abaR)
Reg[3]=(Cuad[2]&fueraC&abaR) | (Cuad[1]&dentroC&arrR)
Reg[4]=(Cuad[1]&fueraC) | (Cuad[1]&abaR)
Reg[5]=(Cuad[3]&dentroC) | (Cuad[2]&dentroC&arrR) | (Cuad[4]&dentroC&arrR)
Reg[6]=(Cuad[3]&fueraC) | (Cuad[4]&fueraC&arrR)
/// Determinar el número de la región
k=0 /// asumimos que está en la región 0 (frontera)
/// verificamos si cae en alguna del resto de las regiones
para j=1 hasta 6 hacer
si Reg[j] Entonces
k=j /// número de la región si no está en la región 0
FinSi
FinPara
Cont[k]=Cont[k]+1 /// acumulando en el contador de la región
FinPara
EscribaCont(Cont,7) /// Observe el uso de la función "EscribaCont"
FinAlgoritmo

También podría gustarte