jueves, 9 de marzo de 2017

Algoritmo de busqueda y ordenamiento



Principios de Programaci´on
Algoritmos de Busqueda y Ordenacion

1.           Algoritmos de ordenacion

Discutiremos el problema de ordenar un array de elementos. A los efectos de simplificar asumiremos que los arrays contienen solo enteros aunque obviamente estructuras m´as complicadas son posibles. Asumiremos tambien que el ordenamiento completo se puede realizar en memoria principal o sea la cantidad de elementos es relativamente pequeo (menos de un mill´on).
Ordenamientos que no se pueden realizar en memoria deben realizarse en disco. Se encuentran ejemplos en la bibliografıa.

1.1.          Preliminares

Los algoritmos que describiremos reciben como argumentos un array que pasa los elementos y un entero que representa la cantidad de elementos. Asumiremos que N (el nu´mero de elementos) es un nu´mero legal. Para alguno de los programas que veremos ser´a conveniente utilizar un sentinela en posici´on 0, por lo cual nuestros array ir´an del 0 al N. Los datos ir´an del 1 al N.
Asumiremos la existencia de operadores de comparacion < y >. Llamaremos al ordenamiento que se basa en el uso de estos operadores ordenamiento basado en comparaciones.

1.2.          Ordenamiento Burbuja

Consideremos el programa de ordenamiento burbuja que ordena un array de enteros en orden creciente:
void burbuja(int a[],int n)
{ int i,j,temp;
for(i=0;i<n-1;i++) for(j=0;j<n-1;j++) if (a[j]>a[j+1])
intercambio(&a[j],&a[j+1]);
}
void intercambio(int *a, int *b)
{
int aux;
aux=*a; *a = *b;
*b=aux;
}
En cada ejecucion del for interior (en el que varia j) se coloca el elemento mayor en su lugar. Realizo esta repeticion tantas veces como elementos.

1.3.          Ordenamiento por insercion (Insertion Sort)

Es uno de los algoritmos m´as simples. Consiste en N − 1 pasadas. En las pasadas 2 a N se cumplir´a que los elementos de las posiciones 1 a P est´an ordenados. En la pasada P movemos el elemento P-esimo a su lugar correcto, este lugar es encontrado en las posiciones de los elementos 1 a P. El programa es el siguiente:
void Sort por insercion (int A[], int N)
{ int j,P,tmp;
int;
for(P=2;P<=N;P++)
{ j=P; tmp=A[P]; while(tmp < A[j-1])
{
A[j] = A[j-1]; j-=1; }
A[j]=tmp;
}
}
}
La idea del programa es la siguiente: coloco un centinela en la primer posici´on (posici´on 0) por lo cual el elemento a insertar ser´a colocado en caso de que sea el m´ınimo en la posici´on 1. Guardamos el valor del elemento a insertar en una variable auxiliar tmp. Si tmp es menor que A[j-1] su posici´on ser´a anterior o igual a (j-1), luego corro el elemento de la posici´on (j-1) a la posici´on j para hacer lugar para tmp. Repito esto para todos los elementos anteriores al tmp. Cuando encuentre una posici´on tal qu´e tmp no es menor indica que los elementos anteriores est´an ordenados (estaban ordenados del 0 al P − 1). Luego lo unico que resta es colocar tmp en la posici´on j.

1.4.          Ordenamiento por Seleccion (Selection Sort)

La idea del selection sort es la siguiente : en la pasada i-esima seleccionamos el elemento menor entre A[i],...,A[n] y lo intercambiamos con el A[i]. Como resultado, luego de i pasadas los menores i elementos ocupar´an las posiciones A[1],...,A[i] y adem´as los elementos de dichas posiciones estar´an ordenados. El programa es el siguiente:
void Sort por seleccion (int A[], int N)
{
int i,j,sel,clave sel;
{
for(i=1;i<N;i++)
{
sel=i; clave sel=A[i]; for(j=i+1;j<=N;j++)
{ if (A[j]<clave sel)
{ clave sel=A[j]; sel=j;
}
} intercambio(A[i],A[sel]);
}
}
}

2.           Algoritmos de Busqueda

Con frecuencia el programador trabajar´a con grandes cantidades de informaci´on almacenada en arreglos. Podr´ıa ser necesario determinar si algu´n arreglo contiene un valor que sea igual a cierto valor clave.
El proceso para encontrar un elemento particular en un arreglo se llama bu´squeda. Estudiaremos dos t´ecnicas de bu´squeda: una t´ecnica simple llamada busqueda lineal y una m´as eficiente llamada busqueda binar´ıa.
Ambos programas se pueden implementar recursivamente o no. En este cap´ıtulo veremos la implementaci´on no recursiva.

2.1.          Busqueda lineal

La bu´squeda lineal compara los elementos del array con la clave de bu´squeda hasta que encuentra el elemento o bien hasta que se determina que no se encuentra.
int busqueda lineal (int A[], int clave, int n)
{ for(int i=0;i<n;i++) if (A[i]==clave) return i;
return -1;
}
Este m´etodo funciona bien con arreglos pequeos y con los no ordenados. En arreglos grandes u ordenados conviene aplicar la bu´squeda binaria que es m´as eficiente.

2.2.          Busqueda binaria

Dados un entero X y un array A de n enteros que se encuentran ordenados y en memoria, encontrar un i talque A[i] == X o retornar 0 si X no se encuentra en el array (consideramos los elementos del array de 1 a N.
La estrategia consiste en comparar X con el elemento del medio del array, si es igual entonces encontramos el elemento, sino, cuando X es menor que el elemento del medio aplicamos la misma estrategia al array a la izquierda del elemento del medio y si X es mayor que el elemento del medio aplicamos la misma estrategia al array a la derecha de dicho elemento.
Para simplificar el c´odigo definimos A[0]=X.
int busqueda binaria(int A[],int X,int n)
{ int izq=1,medio,der=n;
A[0]=X; do
{ medio = (izq+der) / 2; if(izq > der)
medio=0;
else if A[medio] < X izq = medio +1; else der=medio-1;
} while (A[medio] != X); return medio;


www.fing.edu.uy/tecnoinf/mvd/cursos/prinprog/material/teo/prinprog-teorico11.pdf

miércoles, 8 de marzo de 2017

Resumen actividad proyecto innovación y desarrollo


Resumen fotografico









Resumen Arreglos Unidimencionales y Multidimencionales


Resumen



Arreglos están clasificados en :

Unidimensionales están formados por un tipo de dato finito y ordenado del mismo tipo .

Multidimencionales es la extencion de un arreglo  unidimencional ,siempre tiene el mismo tipo de dato.

Reservan espacio de memoria contiene una lista de variables ordenadas en  algoritmos


En resumen vimos como aplicar arreglos unidimensionales y multidimensionales colocando el ejemplo del punto nueve de la guía 3 donde se resolvieron algunas inquietudes o dudas sobre el tema.






lunes, 6 de marzo de 2017

Arreglos Unidimencionales y Multidimencionales




ARREGLOS UNIDIMENSIONALES

Un arreglo unidimensional es un tipo de datos estructurado que está formado por una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. Los datos que se guarden en los arreglos todos deben ser del mismo tipo.

El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria.
Los arreglos nos permiten hacer un conjunto de operaciones para manipular los datos guardados en ellos, estas operaciones son: ordenar, buscar, insertar, eliminar, modificar entre otras.


REPRESENTACIÓN EN MEMORIA: Los arreglos guardan en memoria la cantidad de espacios que se le indican en la declaración.

Ejemplo: sea el siguiente arreglo unidimensional donde se va a guardar 5 datos de tipo entero (integer)

x : array[1..5] of integer
En memoria el computador guarda 5 espacios: esto quiere decir en el arreglo X en la posición 1 guarda 34, en el arreglo X en la posición 2 guarda 22, asi hasta la última posición del arreglo X posicion 5 guarda 72.
X [1]
34
X [2]
22
X [3]
39
X [4]
63
X [5]
72
Declaración de los arreglos unidimensionales: Se declara el tipo del arreglo, con la palabra reservada TYPE, luego se declara la variable de tipo arreglo, esto se hace en el bloque de declaracion de variables palabra reservada VAR.
Type
nombre_arreglo= array[x..y]of tipo_dato;
Ejemplos:
salarios= array [1…x] of real;
nombre_trabajador=array[1..x] of string;
Nota: El tipo de dato del arreglo puede ser: integer,real, boolean, string etc.
Variables tipo array
Var
sueldo:salarios;
nombre:nombre_trabajador;
Una vez declarados los arreglos procedemos a cargar información en ellos, para esto usamos estructuras repetitivas la mas recomendable por su facilidad es el for, una vez cargada la información se puede hacer cualquier operación de calculo y por último mostramos la información de los arreglos usando de igual manera la estructura repetitiva for.
carga de un arreglo, la letra i es el indice o subindice del arreglo e indica la posición del arreglo:
for i:=1 to num do
begin
readln(notas[i]);
end;
Mostrar la información de un arreglo, la letra i es el indice o subindice del arreglo e indica la posición del arreglo::
for i:=1 to num do
begin
writeln(notas[i]:3:1);
end;
Se han hechos programas que suman una cantidad de números usando dos variables, una para leer cada número y otra para acumular la suma. Este enfoque tiene la desventaja de que se pierden los valores de los sumandos. El uso de arreglos permite calcular la suma de los números con una cantidad mínima de código y a la vez conservar cada valor, como muestra el siguiente programa completo:

Program SumaN;
Uses
Crt;
Const
n = 5;
Var
nums: Array[1..n] Of Integer;
s, i: Integer;
Begin
For i:=1 To n Do
Begin
Write('Escriba el número: ');
ReadLn(nums[i]);
s := s + nums[i];
End;
WriteLn('La suma es: ', s);
End.

Nótese el uso de una constante para marcar el tamaño del arreglo; dicha constante, también sirve para controlar el For. De este modo, sólo se hace necesario cambiar un número para adecuar el programa a la escala apropiada
Ejercicios de arreglos unidimensionales:


* Dadas n cantidad de notas, calcular e imprimir el promedio de las notas y todas las notas que fueron mayor a la media calculada.

PROGRAM calificaciones;
USES CRT;
type
listacalificaciones=array[1..n]of real;
VAR
notas:listacalificaciones;
media,suma:real;
num,i:integer;

BEGIN
WRITELN('INTRODUZCA la cantidad de notas a procesar');
READLN(NUM);
suma:=0;

for i:=1 to num do
begin
readln(notas[i]);
suma:=suma+notas[i];


end;
media:=suma/num;
writeln('la media es:' , media:2:2);
writeln('la lista de calificaciones mayores a la media es:');
for i:=1 to num do
begin
if notas[i]>media then
writeln(notas[i]:3:1);
readln;
end;
END.

(*Escribir un programa en pascal que rellene un array con 11
numeros, luego dividirlos entre 3 y mostralos por pantalla *)

PROGRAM numeros;
USES CRT;
type
arreglonumeros=array[1..11]of real;
VAR
num:arreglonumeros;
i:integer;
numero:real;

BEGIN
for i:=1 to 11 do
begin
WRITELN('Introduzca el numero ' , i, ' a dividir');
readln(num[i]);
numero:=num[i]/3;
write('los numero resultantes de la division son:' ,numero:2:2);
readln;
end;
end.



Arreglos multidimensionales

Un arreglo multidimensional es simplemente una extensión de un  arreglo
unidimensional. Más que almacenar una sola lista de elementos, piense en un arreglo
multidimensional como el almacenamiento de múltiples listas de elementos. Por ejemplo, un
arreglo  bidimensional almacena listas en un formato de tabla de dos dimensiones de filas y
columnas, en donde cada  fila es una lista. Las filas proporcionan la dimensión vertical del
arreglo, y las columnas dan la dimensión horizontal. Un arreglo de tres dimensiones almacena
listas en un formato de tres dimensiones de filas, columnas y planos, en donde cada plano es
un  arreglo bidimensional. Las  filas proporcionan la dimensión vertical; las columnas, la
dimensión horizontal; y los planos, la dimensión de profundidad del arreglo.



jueves, 23 de febrero de 2017

Resumen Seudocodigos



Resumen Seudocódigos.


En esta clase aprendimos a formular algoritmos alfanuméricos  realizando varios ejercicios, el lenguaje de programación es algo nuevo en el cual estamos incursionando y para ello debemos familiarizarnos con el lengua del programación visto en clase (PSEINT) el cual dejo a continuación el glosario.


Operador                         Significado                      Ejemplo
Relacionales
  >                                    Mayor que                       3>2 
<                                      Menor que                       'ABC'<'abc' 
=                                      Igual que                          4=3 
<=                                    Menor o igual que            'a'<='b' 
>=                                    Mayor o igual que            4>=5 
<>                                    Distinto que                      'a'<>'b' 
Logicos 
& ó Y                              Conjunción (y).                (7>4) & (2=1) //falso 
| ó O                                Disyunción (o).                 (1=1 | 2=1) //verdadero 
~ ó NO                            Negación (no).                 ~(2<5) //falso 
Algebraicos 
+                                      Suma                               total <- cant1 + cant2 
-                                       Resta                               stock <- disp - venta 
*                                      Multiplicación                    area <- base * altura
/                                       División                            porc <- 100 * parte / total  
^                                      Potenciación                     sup <- 3.41 * radio ^ 2 
% ó MOD                       Módulo (resto de la división entera)   resto <- num MOD div


Función                       Significado 
RC(X) o RAIZ(X)      Raíz Cuadrada de X 
ABS(X)                      Valor Absoluto de X 
LN(X)                        Logaritmo Natural de X 
EXP(X)                      Función Exponencial de X 
SEN(X)                      Seno de X 
COS(X)                     Coseno de X 
TAN(X)                     Tangente de X 
ASEN(X)                    Arcoseno de X 
ACOS(X)                  Arcocoseno de X 
ATAN(X)                  Arcotangente de X 
TRUNC(X)                Parte entera de X 
REDON(X)                 Entero más cercano a X 
AZAR(X)                   Entero aleatorio entre 0 y x-1

miércoles, 22 de febrero de 2017

Calidad de la Información



RESUMEN

CALIDAD DE LA INFORMACIÓN

En esta clase se investigó sobre el tema Calidad De La información y se debatió por
Grupos cada grupo defendió su punto de vista de los que pasaron enfocándose en un tema.

El primer grupo se enfocó en  la precisión de la información por lo cual me parece una parte muy importante en el tema ya que de ella es más eficaz el poder enfocar nuestro objetivo en un tema en particular.

El segundo o grupo se enfocó en el tema de mejorar la calidad del producto  traído desde el exterior para presta mejor servicio a cuanto bienes  y servicios optimizando los mismos.

El tercer grupo defendió su idea a partir del cliente final y calidad del producto generalizando todo el proceso desde la recolección de datos hasta el cliente final como un todo a través de la herramienta de calidad de la información.

El cuarto grupo expone que la objetividad se refiere a la cualidad del objetivo o a que publico debe ser dirigida, la información debe tener un objetivo  claro e imparcial .

CONCEPTO PROBLEMA

Un problema es una circunstancia en la que se genera un obstáculo al curso normal de las cosas.

Problema es aquel que requiere de solución. A nivel social, el concepto más genérico de problema puede ser vertido en cualquier campo, porque en teoría, problemas existen en todos lados. La falta de razonamiento no es un declive en la orientación del concepto, ejemplo, los animales de cualquier especie pueden afrontar circunstancias en las que se vean comprometidas su salud o incluso su vida y eso es un problema.

PREGUNTA PROBLEMA

Es uno de los primeros pasos metodológicos de una investigación y que el investigador debe llevar debe ser formulado precisa y clara para lograr la mejor respuesta
Se define como la parte central de la investigación y puede ser cualitativa o cuantitativa busca aclara ideas  orientar y delimitar el proyecto para articular la investigación.

GENERACIÓN DE OBJETIVOS

Los objetivos son parte fundamental de la investigación que nos permite predecir, describir o formular para aclarar conocimientos acerca del estudio a realizar estos deben ser claros y formulados para dar claridad a la investigación y evitar confusiones y desviaciones durante el transcurso del proyecto.

Se debe plantear un objetivo general y unos específicos lo más precisos para lograr las metas del investigador.

En la formulación del objetivo se utilizan verbos en infinitivo es decir verbos no conjugados deben ser específicos y generales.

martes, 21 de febrero de 2017

TIPOS DE DATOS


En la clase anterior vimos tipos  de datos clasificados  en :

Nativos o Primitivos :Son aquellos que no son iguales a otro tipo de datos no pueden tener atributos o contenido de elementos pero si valores simples separados por comillas.
"a" , "1"

Datos avanzados o Complejos:Son aquellos que pueden almacenar mas de un carácter combinarlo  y en su efecto pueden resolver problemas mas complejos de información y resultado.

"hola" 

Booleanos :Se diferencian de  los de mas por que solo pueden tener dos literales true y false esta a su vez indica si es falsa o verdadera .
True =1
False =0 
PSEUDOCODIGOS:

Describe el  algoritmo  que resulta independiente de otros lenguajes de programación para que una persona pueda interpretar o leer el código en cuestión, es empleado cuando se pretende describir un algoritmo si saber cuales son sus principios basicos.

En otras palabras es el lenguaje mas simple entre la maquina y la persona basado en la programación de esta persona en su idioma con la cual se escribe el algoritmo y se desarrolla y debe tener un principio y un fin .


A partir de esto mi experiencia es haber adquirido nuevos conocimientos sobre el manejo de este programa llamado 
psEint y el manejo de comando para tipos de datos y sea nativos o avanzados y poder desarrollar  una tarea de lo explicado en clase.








  Diagrama De Flujo