Está en la página 1de 11

Curso: Análisis y Diseño de Algoritmos

Docente: Augusto Cortez Vásquez


Nombre: Jean Carlo Benites Porras

LIMA – PERÚ

2020
Índice

Introducción.................................................................................................................................3
Teórico.........................................................................................................................................4
Solución........................................................................................................................................5
Referencia Bibliográficas............................................................................................................11

2
Introducción

Dados los conceptos de, formalismo y abstracción, especificaciones algorítmicas por medio


de la terna de Hoare y utilización de algoritmos, trabajados a lo largo de la clase del lunes
se tienen la posibilidad de solucionar los inconvenientes propuestos. Pero antes
de seguir debemos ofrecer definición a estos 3 conceptos con nuestras propias palabras para
lograr tener un marco teórico con el cual trabajar.

3
Marco Teórico

¿Qué es la abstracción? La abstracción son las características específicas de un objeto, aquellas


que lo distinguen de los demás tipos de objetos y que logran definir límites conceptuales
respecto a quien está haciendo dicha abstracción del objeto.

Se enfoca en la visión externa de un objeto, separa el comportamiento específico de un objeto,


a esta división que realiza se le conoce como la barrera de abstracción, la cual se consigue
aplicando el principio de mínimo compromiso.

¿Qué es el formalismo? “Tendencia a continuar rigurosamente las normas formales


establecidas.” (DLA, 2014) Teniendo la definición de formalismo presente, ya tenemos la
posibilidad de ofrecerle un sentido terminado a abstracción y
formalismo: dividir las características de un elemento para lograr comprender las otras para
lograr ordenarlas siguiendo reglas formales. Lo que va a hacer que
estas características sean simples de comprender no solo para nosotros sino además para
nuestros colegas ingenieros y investigadores computacionales.

Cuando estamos hablando de informaciones lo asociamos con condiciones y esta no es


la distinción, al referirnos a informaciones algorítmicas lo primero que debemos de tomar en
cuenta es la Lógica de Hoare “cual es un sistema formal creado por C.A.R. Hoare. Esta lógica
se ingresó para comprobar los programas formalmente imperativos. Ósea, con la lógica de
Hoare tenemos la posibilidad de garantizar y mostrar que un programa
en especial ejecuta precisamente las acciones para las cuales fue diseñado. Esta
lógica está compuesta por una precondición, es el estado inicial antes de realizar el programa;
una articulo condición, es una especificación del estado final luego de realizar el software y un
programa, cual puede ser un fácil algoritmo hasta numerosas líneas de código. Estas
tres conforman la terna de Hoare.” (Hoare, 1969)

Explicado esto queda implícito que al comentar de informaciones algorítmicas nos por medio


de la terna de Hoare hablamos a precondiciones y postcondiciones.

Ya se puede ver la relación entre el Formalismo y la abstracción con los especificadores


algorítmicos. Las informaciones las logramos luego del desarrollo de abstracción y el
formalismo que debemos continuar es de la lógica de Hoare. Pero aquí no termina nuestro
marco teórico, aún nos falta dejar en claro un último criterio. Utilización de algoritmos,
este criterio puede resultar raro por el concepto de la palabra utilización “Poner
en desempeño o utilizar procedimientos, medidas, etc., para llevar algo a cabo.” (DLA, 2014)
pero en nuestra carrera el termino utilización de algoritmos tiene relación a una utilización de
manera abstracta, la cual no usa un lenguaje de programación especifico, sino representa los
algoritmos por medio de diagramas de fluido, seudocódigos, etc.

4
Solución

Ejercicio 1

Enunciado:

Se tiene un cilindro C1 contenido dentro de otro cilindro C2. Se pide hallar el volumen
comprendido entre los dos cilindros

Especificación

R1 H1 R2 H2 V

R1, R2: Radios de los cilindros V: volumen entre cilindros


H1, H2: Altura de los cilindros

Entrada: R1, R2, H1, H2

Salida: V

A: R1, R2, H1, H2 ∈ Z+

P: FUN Calcular_Vol (R1, R2, H1, H2: real) DEV (V: real)

B: V ∈ Z+

Implementación:

Función Calcular_Vol ()

Inicio

i=1

Real V, R1, R2, H1, H2

HacerMientras (i=0)

Leer R1, R2

SI (R1<R2)

i=0

FinSi

5
FinHacerMintras

HacerMIentras (i=0)

Leer H1, H2

SI (H1<H2)

i=0

FinSi

FinHacerMientras

V=( π R 12 H 1)−(π R 22 H 2)

Escribir “El Volumen entre los cilindros es ” V

Fin

Ejercicio 3

Especificación:

Diagrama de entrada y salida:

S
SM

S: conjunto de números
SM: Conjunto Números

Entrada: S

Salida: SM

A: S ∈ R±

P: FUN Calcu lar_Subsec (S: Real) DEV (SM: entero)


card ( {a x })−1 card ( {ax })
B: {SM={aj}/card({aj}) < card({ax})∩ ∑ aj > ∑ ax }
j=1 x=1

Implementación

Inicio

Funcion subsecuencia(int x[],int n)

Calcular_Subsec ()

entero array[100], s=0, n

leer n

6
leerArray(array,n)

subsecuencia(array,n)

finCalcular_Subsecuencia

void leerArray(int x[],int n)

para i=0 hasta i<n sino i++

mostrar "x["<<i<<"]: "

leer x[i]

finPara

finLeerArray

subsecuencia(int x[],int n)

entero temp[50],m=0,lista[50],cont

entero s=0,may=0,k=0

mientras(k<n)

Para i hasta k<n-1

s=0;m=0;

para j=0 hasta j<n-i

s += x[j+k]

mostrar x[j+k]<<" + "

temp[m] = x[j+k]

m++

Mostar" = “s

Si(s>may)

may = s

finSi

copiarArray(temp,lista,m)

cont = m;

k++;

Fin mientras

Mostrar "la subsecuencia de suma maxima es: "

impArray(lista,cont);

Mostrar “cuya suma es: “

7
Finsubsecuencia

copiarArray(int x[],int y[],int n)

para i hasta i<n;i

y[i] = x[i]

finpara

fincopiar array

void impArray(int x[],int n)

para i=0 hasta i<n

mostrar x[i]

finpara

FinImpArray

Ejercicio 5

Especificación:

Diagrama de entrada y salida:

Entrada: Px, Py, Qx, Qy


L

Px = Ubicación x del punto P


Py =Ubicación y del punto P

Qx =Ubicación x del punto Q Q y =Ubicación y del punto Q

L= Recta

A: {Px, Py, Qx, Qy:real}

P: FUN Trazar_Recta (Px, Py, Qx, Qy: Real) DEV (L: booleano)

X−P x Y −P y
B: {L=ax – b - c = 0 / = }
Q x−P x Q y−P y

8
Implementación:

Inicio

Leer Px, Py, Qx, Qy

A= Qx- Px

B = Q y - Py

C = (B*- Px )– (A*- Py)

Mostrar “La recta generada con los puntos ingresados es” A “x – ”B“y - ”C“ = 0”

Fin

Ejercicio 7

Especificación:

Diagrama de entrada y salida:

Entrada: r, n, pi
pg, pe

pi: Población inicial r: Tasa anual de


crecimiento n: Año pg: Crecimiento geométrico
pe: Crecimiento exponencial

A: {n, pi> 0. r: real. n, pi: natural}

P: FUN Calcular_Crecimiento (n, pi: natural) DEV (pg, pe: real)

B: { pg=Pi (1+r )n , pe=PI∗e rn}

Implementación:

Función Calcular_Crecimiento ()

Inicio

i=1

9
Real r

Nautral n, pi

HacerMientras (i=0)

Leer n, pi

SI (n<0)

i=0

FinSi

Si(pi<0)

I=0

FinSi

FinHacerMintras

pe=PI∗ern

pg=Pi (1+r )n
Escribir “El crecimiento geométrico es es ”pg“y el crecimiento exponencial es” pe

Fin

10
Referencia Bibliográficas

Daniel Lara. (2015). ¿ What is abstraction in object-oriented programming? 16/06/2020, de


Styde.org Sitio web: https://styde.net/abstraccion-programacion-orientada-a-objetos/

Frorer, P; Hazzan, O; Manes, M. (1997) “Revealing the faces of abstraction”, International


Journal of Computeers for Mathematical Learning, Numero 2, pp. 217-218

Hoare, C. A. R. (1969) “An Axiomatic Basus for Computer Programming”, Comunications of the
ACM. Volumen, numero 10. p 577

11

También podría gustarte