Está en la página 1de 15

UNIVERSIDAD DE AQUINO BOLIVIA

GUÍA DE ESTUDIO
Materia: Programación Avanzada
Docente: Ing. Simón Onofre
Carrera: Ingeniería de Sistemas

UNIDAD II: INTRODUCCIÓN A LA ALGORITMIA

2.1 Introducción, conceptos y definiciones fundamentales

La Algoritmia es la ciencia que nos permite evaluar el efecto de los diversos factores
externos sobre los algoritmos disponibles, de tal modo que sea posible seleccionar
el que más se ajusta a nuestras circunstancias particulares; también es la ciencia
que nos indica la forma de diseñar un nuevo algoritmo para una tarea concreta.
Problemas de la algoritmia:

 Correctitud
 Eficiencia, se mide en función al tiempo y espacio
 Aproximación

Eficiencia.- Cumplir de la manera más adecuada, metas y objetivos que se puede


hacer con menores errores.
Ejemplo: Alguien que cumpla su trabajo sin hacer trampa de forma correcta y
ordenada. Cumple con los tiempos establecidos.

Llegar a cumplir la tarea siguiendo pasos metódicamente.

Eficaz.-
Ejemplo: Alguien que cumpla su trabajo puede hacer trampa de forma rápida.
Cumple con los tiempos establecidos más rápido.
La algoritmia es uno de los pilares de la programación y su relevancia se muestra
en el desarrollo de cualquier aplicación, más allá de la mera construcción de
programas. Este es un texto introductorio sobre análisis y diseño de algoritmos que
pretende exponer al lector las técnicas básicas para su diseño e implementación,
así como presentar unas herramientas que le permitan medir su efectividad y
eficiencia.

El matemático persa del siglo IX al Khowarizmi dio nombre a la palabra algoritmo,


un algoritmo es sencillamente un conjunto de reglas para efectuar algún cálculo,
bien sea a mano o, más frecuentemente, en una máquina.

“Un algoritmo es un conjunto de instrucciones sencillas, claramente


especificadas, que se debe seguir para resolver un problema. Una
vez que se da un algoritmo para un problema y se decide que es
correcto, un paso importante es determinar la cantidad de recursos,
como tiempo o espacio, que requerirá”

Además un algoritmo es una secuencia bien determinada de acciones elementales


que transforma los datos de entrada en datos de salida con el objetivo de resolver
un problema computacional.

ALGORITMIA.- Trata sobre el estudio de los algoritmos eficientes.

PROBLEMA COMPUTACIONAL
Un problema computacional consiste en una caracterización de un conjunto de
datos de entrada, junto con una especificación de la salida deseada en base a
cada entrada.

Un problema computacional tiene una o más instancias, valores particulares


para los datos de entrada, sobre las cuales se puede ejecutar un algoritmo para
resolver el problema.

Ejemplo 1: El problema computacional multiplicar dos números enteros tiene


por ejemplo las siguientes instancias:

multiplicar 345 por 4653,


multiplicar 2637 por 10000,
multiplicar 32341 por 1, etc..

Un problema computacional abarca a otro problema computacional si las


instancias del segundo pueden ser resueltas como instancias del primero en
forma directa.

Ejemplo 2: multiplicar un entero por 352 es un problema computacional que es


abarcado por el problema multiplicar dos números enteros.
Algoritmo: Conjunto de pasos lógicos que se siguen para resolver un problema.
DF o pseudocódigo
Programa: Conjunto de pasos lógicos que se siguen para resolver un problema.

1.2.3 PASOS A SEGUIR EN LA RESOLUCIÓN DE UN PROBLEMA


En muchas situaciones reales, al enfrentarnos a un problema, no es evidente en
un primer intento conseguir la solución. La formulación del problema puede venir
dada o la podemos describir en lengua natural, el cual es un mecanismo de
especificación ambiguo, incompleto y redundante. Si uno busca una solución al
problema, lo primero que hace es eliminar la incompletitud, la redundancia y la
ambigüedad. En otras palabras, se desea una formulación del problema donde
todo esté claro.

Es aquí es donde interviene el proceso de abstracción, que permite modificar el


problema a modelos equivalentes más simples, descartando detalles e
información que, a priori, no influyen en la solución y establecer un enunciado
preciso del problema. En este proceso el problema deviene más puro y
abstracto, hablamos de un enunciado cerrado del problema.

Existen variantes en la formulación de un enunciado cerrado. Estas consisten en


presentar una situación inicial (datos), una situación final (resultados esperados)
y una serie de operadores que permiten pasar de una situación factible a otra
(estados). Una solución del problema consiste en describir una serie de
acciones, en términos de los operadores, que permitan pasar de la situación
inicial a la final. Es aquí donde interviene el término solución algorítmica de un
problema.

Un algoritmo es una descripción de la solución del problema mediante una


secuencia finita de acciones elementales que se supone son realizables a priori.
Una acción es un evento que dura un período de tiempo finito y produce un
resultado bien definido y previsto.

Los pasos principales a seguir en la resolución de un problema, mediante un


algoritmo, son:

a) Formulación del problema en lengua natural.


b) Especificar el problema mediante un lenguaje preciso, por ejemplo el
lenguaje matemático, eliminando así la redundancia, incompletitud y
ambigüedad de la información. En esta etapa se presenta en términos de
modelos matemáticos, que permiten simplificar el problema al hacer una
abstracción de los datos innecesarios, rescatando sólo la información
realmente relevante. Se obtiene un enunciado cerrado.
c) Diseño y Análisis de una solución del problema en términos de una solución
algorítmica del enunciado cerrado.

d) Refinamiento del algoritmo hasta obtener una versión que pueda ser
expresada en el lenguaje de programación que se haya escogido.

2.2 Paradigmas de Programación


Un paradigma está constituido por los supuestos teóricos generales, las leyes y
las técnicas para su aplicación que adoptan los miembros de una determinada
comunidad científica.

Las leyes explícitamente establecidas y los supuestos teóricos. Por ejemplo, las
leyes de movimiento de Newton forman parte del paradigma newtoniano y las
ecuaciones de Maxwell forman parte del paradigma que constituye la teoría
electromagnética clásica.
El instrumental y las técnicas instrumentales necesarios para hacer que las leyes
del paradigma se refieran al mundo real. La aplicación en astronomía del
paradigma newtoniano requiere el uso de diversos telescopios, junto con
técnicas para su utilización y diversas técnicas para corregir los datos
recopilados.

Un componente adicional de los paradigmas lo constituyen algunos principios


metafísicos muy generales que guían el trabajo dentro del paradigma. Todos los
paradigmas, además, contienen prescripciones metodológicas muy generales
tales como: "Hay que intentar seriamente compaginar el paradigma con la
naturaleza".

Podemos decir que, los paradigmas son marcos de referencia que imponen
reglas sobre cómo se deben hacer las cosas, indican qué es válido dentro del
paradigma y qué está fuera de sus límites. Un paradigma distinto implica nuevas
reglas, elementos, límites y maneras de pensar, o sea implica un cambio. Los
paradigmas pueden ser considerados como patrones de pensamiento para la
resolución de problemas. Desde luego siempre teniendo en cuenta los lenguajes
de programación, según nuestro interés de estudio. Los paradigmas de
Programación representan un enfoque particular o filosofía para la construcción
del software. No es mejor uno que otro sino que cada uno tiene ventajas y
desventajas. También hay situaciones donde un paradigma resulta más
apropiado que otro.

Generalmente los autores clasifican los paradigmas de modos similares,


siempre destacan el imperativo, el orientado a objetos, el funcional y el lógico.
Algunos autores o profesores, mencionan paradigmas heurísticos, concurrentes,
procedimentales, declarativos y demostrativos.
Más información de paradigmas de programación lo puede ver en:
https://youtu.be/A0OrKn73k7k
https://youtu.be/hcuvB58hwlE

2.2.1 PARADIGMA FUNCIONAL

Modelo matemático de composición funcional donde el resultado de un cálculo


es la entrada del siguiente, y así sucesivamente hasta que una composición
produce el valor deseado.

El paradigma funcional está representado por la familia de lenguajes LISP, en


particular Scheme o Haskell.

2.2.2 PARADIGMA IMPERATIVO

El paradigma imperativo es considerado el más común y está representado, por


ejemplo, por el C o por BASIC.
El Paradigmas Imperativo es un modelo abstracto que consiste en un gran
almacenamiento de memoria donde la computadora almacena una
representación codificada de un cálculo y ejecuta una secuencia de comandos
que modifican el contenido de ese almacenamiento.

Algoritmos + Estructura de Datos = Programa.

2.2.3 PARADIGMA ORIENTADO A OBJETOS

Disciplina de ingeniería de desarrollo y modelado de software que permite


construir más fácilmente sistemas complejos a partir de componentes
individuales.

Objetos + Mensajes = Programa.


Inicio

A=2

B=3

C=A+B

Fin
Pseudocódigo= lenguaje natural

Prueba de escritorio
A B C Salida
2 3
5 5

2.4 Tipos de algoritmos

Existen cuatro tipos de algoritmos en informática:

 Algoritmos computacionales. Un algoritmo cuya resolución depende del


cálculo, y que puede ser desarrollado por una calculadora o computadora sin
dificultades.

 Algoritmos no computacionales. Aquellos que no requieren de los


procesos de un computador para resolverse, o cuyos pasos son exclusivos
para la resolución por parte de un ser humano.

 Algoritmos cualitativos. Se trata de un algoritmo en cuya resolución no


intervienen cálculos numéricos, sino secuencias lógicas y/o formales.
 Algoritmos cuantitativos. Todo lo contrario, es un algoritmo que depende
de cálculos matemáticos para dar con su resolución.

Los algoritmos presentan las siguientes características:

 Secuenciales. Los algoritmos operan en secuencia, debe procesarse uno a


la vez.
 Precisos. Los algoritmos han de ser precisos en su abordaje del tema, es
decir, no pueden ser ambiguos o subjetivos.
 Ordenados. Los algoritmos se deben establecer en la secuencia precisa y
exacta para que su lectura tenga sentido y se resuelva el problema.
 Finitos. Toda secuencia de algoritmos ha de tener un fin determinado, no
puede prolongarse hasta el infinito.
 Concretos. Todo algoritmo debe ofrecer un resultado en base a las
funciones que cumple.
 Definidos. Un mismo algoritmo ante los mismos elementos de entrada
(input) debe dar siempre los mismos resultados.

Algoritmo es de forma general y entendible para cualquier persona

Programa se utiliza un lenguaje de programación

El algoritmo de Euclides

El algoritmo de Euclides es un método antiguo y eficiente para calcular el máximo


común divisor (MCD).

Algoritmia se puede definir como el estudio de los algoritmos.

Algoritmo de la multiplicación Rusa

En el tiempo restante que queda de la clase el estudiante debe realizar


programas en las que se recapitulará operaciones con matrices.

Ejercicios 1 al 7:

public class Matriz {

public void llena_mat(int M[][],int f, int c)


{ int i,j;
for(i=0;i<f;i++)
{
for(j=0;j<c;j++)
{
M[i][j]=(int)(Math.random()*10);
}
}
}

public void mostrar_mat(int M[][], int f, int c)


{
int i,j;
for(i=0;i<f;i++)
{
for(j=0;j<c;j++)
{
System.out.print(M[i][j]+" ");
}
System.out.println();
}
}

//1.- Mostrar los elementos de la triangular superior derecha, para una matriz cuadrada.

public void triangular_sup_der(int M[][], int f, int c)


{
int i,j;
for(i=0;i<f;i++)
{
for(j=0;j<c;j++)
{
if(i<j)
{System.out.print(M[i][j]+" ");
}
}

}
}

Clase principal
public class Main {

public static void main(String[] args) {


int A[][]=new int[30][30];
int n,m;
n=Integer.parseInt(JOptionPane.showInputDialog("INgrese el número de
filas:"));
m=Integer.parseInt(JOptionPane.showInputDialog("Ingrese el nro. de
columnas: "));

Matriz ma=new Matriz();


ma.llena_mat(A, n, m);

System.out.println("Los elementos de la matriz son:");


ma.mostrar_mat(A, n, m);

// Ejercicio1
System.out.println("Los elementos de la triangular superior derecha son:");
ma.triangular_sup_der(A, n, m);

System.out.println();

}
00 01 02
10 11 12
20 21 22
Analizando las posiciones de la triangular superior de la matriz
Pruebas

El algoritmo de Euclides

El algoritmo de Euclides es un método antiguo y eficiente para calcular el máximo


común divisor (MCD).

Algoritmia se puede definir como el estudio de los algoritmos.

Algoritmo de la multiplicación Rusa


Ejemplo 1: Se desea multiplicar 981 por 1234 utilizando el algoritmo de la
multiplicación a la Russe.

981 1234 1234


490 2468
245 4936 4936
122 9872
61 19744 19744
30 39488
15 78976 78976
7 157952 157952
3 315904 315904
1 631808 631808
1210554
Verificando
981*1234=1210554

Ventaja= multiplicar por 2 y dividir por 2


Desventaja= funciona para 2 números enteros positivos

Ejemplo 2: Se desea multiplicar 41 por 265 utilizando el algoritmo de la


multiplicación a la Russe.

41 265 265
20 530
10 1060
5 2120 2120
2 4240
1 8480 8480
10865

2.4 Técnicas de demostración de algoritmos

2.4.1Pruebas por contradicción

Una prueba por contradicción, o prueba por el absurdo, consiste en demostrar la


validez de una hipótesis probando que su negación conduce a una contradicción.
En otras palabras, supongamos que se quiere probar S. Por ejemplo, S puede ser
“existen infinitos números primos”. Para dar una prueba por contradicción de S se
empieza suponiendo que S es falso, o lo que es equivalente que no S es cierto.
Luego, siguiendo un razonamiento matemático valido, se deduce como verdadera
alguna otra proposición previamente conocida como falsa. Se concluye por lo tanto
que la suposición inicial era incorrecta.
Laboratorio Nro. 2

Desarrollar los siguientes problemas en Java:

1. Mostrar los elementos de la diagonal principal de una Matriz cuadrada


2. Sumar los elementos de la triangular superior derecha
3. Sumar los elementos impares de la matriz
4. Sumar los elementos de la primera fila
5. Mostrar el mayor elemento de la matriz
6. Generar la matriz unitaria
7. Mostrar los elementos múltiplos de 7 de una matriz
8. Algoritmo de Euclides
9. Algoritmo de la multiplicación Rusa

Fecha de presentación:
Martes 5 de abril de 2022

También podría gustarte