Está en la página 1de 20

17/05/13

name

Lectura
-

Sitio: Curso: Libro:

Universidad Privada Telesup Algortmica y Estructura de Datos - SI/02/131/TOA Lectura

Imprimido por: SALAS VILLAFUERTE EDISON Fecha: viernes, 17 de mayo de 2013, 20:34

campus.telesupvirtual.com/mod/book/print.php?id=72932

1/20

17/05/13

name

Tabla de contenidos
Introduccin Tema 01 Tema 02 Tema 03 Tema 04

campus.telesupvirtual.com/mod/book/print.php?id=72932

2/20

17/05/13

name

INTRODUCCIN a) Presentacin y contextualizacin


El alumno desarrolla una actitud analtica que le permita aplicar las operaciones bsicas con los datos numricos de un arreglo unidimensional, como sumar, promediar, hallar mximo, hallar mnimo.

b) Competencias Construye algoritmos para resolver problemas basados en estructuras de datos estticas.

c) Capacidades
Aplica las operaciones de suma, promedio, valor mximo y mnimo de los valores cargados en el arreglo unidimensional.

Identifica y desarrolla habilidades bsicas para la recoleccin de datos. Insertar, Modificar, Eliminar y Buscar elementos dentro de un arreglo.

Identifica y desarrolla habilidades complejas para unir dos arreglos unidimensionales. Desarrolla soluciones utilizando recursividad y reconoce las ventajas y desventajas de su uso.

d) Actitudes Desarrolla una actitud emprendedora mediante la toma de iniciativas. Acta con responsabilidad personal, al cumplir con los horarios establecidos. Respeto a las normas de convivencia. Cumple con la presentacin de los trabajos encomendados de manera individual y en equipo.

e) Presentacin de ideas bsicas y contenido esenciales de la Unidad La Unidad de Aprendizaje 2 comprende el desarrollo de los siguientes temas: 1. Operaciones algortmicas con arreglos unidimensionales. 2. Mtodos de recoleccin de datos. 3. Operaciones con vectores. 4. Recursividad.

campus.telesupvirtual.com/mod/book/print.php?id=72932

3/20

17/05/13

name

UNIDAD DE APRENDIZAJE 2 OPERACIONES ALGORTMICAS CON ARREGLOS UNIDIMENSIONALES


Como sabemos un Arreglo (ARRAY), es una estructura de datos en la que se almacena una coleccin de datos del mismo tipo. Ejemplo: Las notas de los estudiantes. Tienen un nico nombre de variable (NOTAS), que representa todos los elementos, los cuales se diferencian por un ndice o subndice (0,1, 2, 3n, pueden ser enteros, no negativos, variables o expresiones enteras).

DECLARACION DE UN ARREGLO.- Los arreglos unidimensionales se declaran de la siguiente manera: TIPO identificador = ARRAY [tipo-sub ndice] OF tipo; identificador: es el nombre del arreglo. Donde: tipo-subndice : puede ser tipo ordinal (booleana o char), tipo enumerado o tipo sub rango. No pueden ser usados los tipos estndar (real o integer). tipo: se refiere al tipo de los elementos y puede ser de cualquiera de los tipos estndar o definido por el usuario.

VARIABLESTIPOARRAY.- se declaran como: nombrevar: es cualquier identificador vlido que representa el nombre de la variable. Nombrearray: nombre del arreglo utilizado en el TYPE. Ejemplo:
VAR MUESTRA: ARRAY[1N]OFREAL; INCORRECTO, salvo que N
campus.telesupvirtual.com/mod/book/print.php?id=72932 4/20

17/05/13

name

TYPE VALORES= ARRAY[-10...10]OF INTEGER; Donde: NOTAS:


Las declaraciones de arreglos pueden aparecer directamente en la seccin de variables, pero es preferible no hacerlo. Las declaraciones de ndices (tipo-ndice) no pueden contener v ariables.

VAR PRECIOS: VALORES;

VAR MUESTRA: ARRAY[1N]OFREAL; INCORRECTO, salvo que N haya sido declarado como una constante. OPERACIONESCONARREGLOSUNIDIMENSIONALESOVECTORES: Para leer los elementos de un arreglo deben utilizarse estructuras de repeticin. Ejemplo: TIPO LISTANOTA=ARRAY[130]OFREAL; VAR DEFI.NOTAS:LISTANOTA

COPIAR: Slo cuando ambos tienen el mismo tipo y el mismo tamao. Para i=1 a 30 hacer DEFI[i]=LISTANOTAS[i] o simplemente: DEFI=NOTAS Fin Para SUMAR LOS DATOS DE UN ARREGLO UNIDIMENSIONAL
Se deber recorrer todos los datos del arreglo (usar la estructura FOR ). Dentro de la estructura repetitiva, acumular cada uno de los datos del arreglo en una variable acumulador numrica. Retornar el valor acumulado en la variable numrica.

Mtodo Sumar
campus.telesupvirtual.com/mod/book/print.php?id=72932 5/20

17/05/13

name

Tipo de dato que retorna como respuesta: double Argumentos que recibe: Longitud del arreglo

FuncionSumar(Vec:array): real acum:real Declaracin de variables i: entero acum=0 inicio del acumulador Para i=1 a 30 hacer recorre el arreglo acum= acum + Vec[i] Acumulador Fin Para SUMAR=acum Asignacin a la funcin Fin funcion Promediar los datos de un arreglo unidimensional
Se deber recorrer todos los datos del arreglo (Usar la estructura FOR). Dentro de la estructura repetitiva, acumular cada uno de los datos del arreglo en una variable acumulador numrica. Luego de terminar la estructura repetitiva, divida el valor acumulado entre la cantidad de elementos que contiene el arreglo Retornar el valor obtenido en el paso anterior.

Funcion Promediar (Vec:array): real Acum,prom: real Declaracin de variables i: entero acum=0 Inicio del acumulador Para i=1 a 30 hacer Recorre el arreglo acum= acum + Vec[i] Acumulador Fin Para Prom= acum/30 Dividimos por longitud de valores del arreglo PROMEDIAR=Prom Asignacin a la funcin Fin Funcion EL VALOR MXIMO DE LOS DATOS CONTENIDOS EN UN ARREGLO UNIDIMENSIONAL 1. Se debe tomar hipotticamente que el primer dato del arreglo es el mayor. 2. Se deber recorrer el arreglo desde la segunda posicin hasta la ltima posicin. Esto permitir evaluar cada uno de los datos del arreglo. (Usar la
campus.telesupvirtual.com/mod/book/print.php?id=72932 6/20

17/05/13

name

estructura FOR). 3. Dentro de la estructura repetitiva, preguntar si el supuesto mayor es menor que el dato evaluado. 4. Si se cumple lo anterior, entonces ese dato evaluado se convertir en el nuevo mayor, de lo contrario pasamos a evaluar el siguiente dato. 5. Luego de terminar la estructura repetitiva, retornar el ltimo valor obtenido en la variable mayor. Funcion Promediar (Vec:array): real Acum,prom: real Declaracin de variables i: entero acum=0 Inicio del acumulador Para i=1 a 30 hacer Recorre el arreglo acum= acum + Vec[i] Acumulador Fin Para Prom= acum/30 Dividimos por longitud de valores del arreglo PROMEDIAR=Prom Asignacin a la funcin Fin Funcion
HALLAR EL VALOR MNIMO DE LOS DATOS CONTENIDOS EN UN ARREGLO UNIDIMENSIONAL

1. Se debe tomar hipotticamente que el primer dato del arreglo es el menor. 2. Se deber recorrer el arreglo desde la segunda posicin hasta la ltima posicin. 3. Dentro de la estructura repetitiva, preguntar si el supuesto menor es mayor que el dato evaluado. 4. Si se cumple lo anterior, entonces ese dato evaluado se convertira en el nuevo menor, de lo contrario pasamos a evaluar el siguiente dato. 5. Luego de terminar la estructura repetitiva, retornar el ltimo valor obtenido en la variable menor.

FuncionMenor(Vec:array): entero ValMin: entero Declaracin de variables i: integer ValMin=vec[1] inicio del valor mnimo
campus.telesupvirtual.com/mod/book/print.php?id=72932 7/20

17/05/13

name

Para i=2 a 30 hacer recorre el arreglo Si ( Vec[i] <ValMin) entonces ValMin= Vec[i] Fin si Fin Para MAYOR=ValMin Asignacin a la funcin Fin funcin

campus.telesupvirtual.com/mod/book/print.php?id=72932

8/20

17/05/13

name

UNIDAD DE APRENDIZAJE 2 MTODOS DE RECOLECCIN DE DATOS Cargar los datos en un arreglo unidimensional
Se solicitar la posicin en donde desee insertar. Incrementar la longitud del arreglo en una posicin. Solicitar el nuevo dato y almacenarlo en la posicin sealada por el usuario.

Argumentos que recibe: Posicin, dato y longitud. Procedimiento Cargar dato:entero, i:entero Declaracin de variables Para i=1 a pos hacer Vec[i] = dato Transferir el elemento a la posicin correcta Fin Para Fin Procedimiento (VAR Vec:array, pos:entero) Para i=1 a pos hacer Vec[i] = dato Transferir el elemento a la posicin correcta Fin Para Fin Procedimiento (VAR Vec:array, pos:entero) Insertar los datos en un arreglo unidimensional Se solicitar la posicin en donde desee insertar. Incrementar la longitud del arreglo en una posicin. Luego se proceder a transferir los elementos una posicin hacia la
campus.telesupvirtual.com/mod/book/print.php?id=72932 9/20

17/05/13

name

derecha, comenzando desde el ltimo elemento hasta la posicin donde se desea insertar. Solicitar el nuevo dato y almacenarlo en la posicin sealada por el usuario . Procedimiento Insertar (VAR Vec:array, pos:entero, dato:entero, i:entero Mientras ( i>=pos) hacer Vec[i+1] =Vec[i] Transferir el elemento a la posicin siguiente i= i- 1 Fin Mientras Vec[pos] = dato Posicionar el nuevo dato Fin Procedimiento Modificar los datos en un arreglo unidimensional Se solicitar la posicin en donde desee modificar. Luego se proceder almacenar el nuevo dato en la posicin indicada, sobrescribiendo al dato anterior. Mostrar los datos del arreglo nuevamente.

Argumentos que recibe: Dato y posicin Procedimiento modificardatos (Var Vec:array, dato:integer, pos: integer) Vec[pos]=dato Fin Procedimiento Eliminar los datos en un arreglo unidimensional Se solicitar la posicin del elemento que se desea eliminar. Decrementar la longitud del arreglo en una posicin. Luego se proceder a transferir los elementos una posicin hacia la izquierda, comenzando desde la posicin a eliminar hasta la penltima posicin. Volver a mostrar los datos del arreglo.

Argumentos que recibe: Posicin y longitud Procedimiento Eliminar (VAR Vec:array, pos:entero, i:entero) Var j: entero Para ( j=pos hasta i-1) hacer
campus.telesupvirtual.com/mod/book/print.php?id=72932 10/20

17/05/13

name

Vec[ j ] =Vec[ j+1] Transferir el elemento a la posicin anterior Fin Para Fin Procedimiento

Buscar datos en un arreglo unidimensional Ingresar el dato que se desea buscar Comparar el dato ingresado con cada uno de los datos del arreglo. Si el dato ha sido hallado mostrar la posicin donde se encontr a dicho dato.

Argumentos que recibe: dato, longitud Procedimiento Buscar (Vec:array, dato:integer, n:entero) Var i,a: entero a=0 i=0 Mientras (i<=n) hacer Si (vec[i]=dato) entonces a=i Para la posicin del valor encontrado i=n Para salir de la condicin mientras Fin Si i=i+1 Fin Mientras Si (a=0) entonces Escribir (Lo sentimos, el dato no ha sido encontrado...) Sino Escribir (El Dato se encontr en la posicin: ,a) Fin Si Fin procedimiento Imprimir datos en un arreglo unidimensional Mostramos el dato de cada posicin del vector unidimensional.

campus.telesupvirtual.com/mod/book/print.php?id=72932

11/20

17/05/13

name

Argumentos que recibe: dato, longitud. Procedimiento Insertar (VAR Vec:array, pos:entero) dato:entero, i:entero Declaracin de variables Para i=1 a pos hacer Imprimir Vec[i] Imprime los elementos del vector. Fin Para Fin Procedimiento

campus.telesupvirtual.com/mod/book/print.php?id=72932

12/20

17/05/13

name

UNIDAD DE APRENDIZAJE 2 OPERACIONES CON VESTORES Mostrar los elementos comunes entre dos arreglos unidimensionales
Recorrer el primer arreglo Dentro de cada posicin del arreglo A, recorrer el arreglo B y preguntar si el dato evaluado del arreglo A es igual que el dato que se evala en B, si es si, almacenar el dato comn dentro de una cadena. Al finalizar las estructuras repetitivas, mostrar la cadena que acumul a los datos comunes Se deben mostrar los datos comunes, sin que alguno de estos se repita. Tipo de dato que retorna como respuesta: String Argumentos que recibe: longitud del primer arreglo y longitud del segundo arreglo. Procedimiento mostrarComunesUnicos( VecN:array, n:entero, nb:entero) i, j, nc: entero Declaracin de variables nc=0 inicio del valor (contador) Para i=0 a n-1 hacer recorre el arreglo Si ( VecA[i] = VecB[j]) entonces VecN[nc]= VecA[i] nc=nc+1 Fin si Fin Para Fin Para eliminarRepetidosC() Asignar el procedimiento para eliminar repetidos mostrarTodoslosDatosC() Mostrar los elementos del vector Fin Procedimiento Unir los datos de dos arreglos en un tercer arreglo
campus.telesupvirtual.com/mod/book/print.php?id=72932 13/20

Para j = 0 a nb-1

17/05/13

name

Recorrer el primer arreglo. Enviar cada dato del arreglo A hacia el arreglo C, conservando la misma posicin original. Recorrer el segundo arreglo. Enviar cada dato del arreglo B hacia el arreglo C, comenzando desde la posicin n+i. Tipo de dato que retorna como respuesta: entero. Argumentos que recibe: longitud del primer arreglo y longitud del segundo arreglo. Procedimiento unirArreglos (VecN:array, n:entero, nb:entero): entero i, j, nc: entero Declaracin de variables Para i=0 a n-1 hacer recorre el arreglo nc=n + nb inicio del VecN[i]= VecA[i] Fin Para Repetir j = 0 a nb-1 VecN[j+n]= VecA[j] Fin repetir mostrarTodoslosDatosC() Mostrar los elementos del vector Fin Procedimiento Mostrar los elementos de un arreglo unidimensional y comparar el promedio con cada elemento
Enunciado: Dados 50 nmeros enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los nmeros ingresados que sean mayores que el mismo

valor (contador)

const max = 50 type Programa Ejemplo; t_numeros = array[1.. max] tipo entero variables suma, i : entero promedio: real numeros : t_numeros inicio suma := 0;
campus.telesupvirtual.com/mod/book/print.php?id=72932 14/20

17/05/13

name

Para i:= 1 a max hacer leer(numeros[i] ) suma:= suma +numeros[i] Fin Para Promedio:= suma/max Imprimir (El promedio es ,Promedio); Para i := 1 a 50 hacer Si numeros[i] > promedio entonces imprimir (El nmero, numeros[i], es mayor al promedio); Fin Si Fin programa. Intercalacin de dos arreglos ordenados en un tercer arreglo ordenado
El mtodo se utiliza para generar un conjunto ordenado datos a partir de dos conjuntos de datos ordenados. El proceso consiste en seleccionar sucesivamente los elementos de cada uno de los conjuntos primitivos y formar otro conjunto que tendr todos sus elementos ordenados

Tipo de dato que retorna como respuesta: vector entero. Argumentos que recibe: longitud del primer arreglo y longitud del segundo arreglo. Variables: V1(N), V2 (M), VR(N+M): vector de enteros I, J, K, M, N, Z: enteros Inicio Programa Intercalacin I=1 J =1 K =1 Mientras I<= N y J<= M hacer /* se comparan dos elementos, uno de cada vector y se determina el menor */ VR(K) = V1(I) I =I + 1 K =K + 1 Sino VR(K) =V2(J)
campus.telesupvirtual.com/mod/book/print.php?id=72932 15/20

Si V1(I) < V2(J)

17/05/13

name

J =J + 1 K =K + 1 Fin si Fin mientras

entonces

/* Si sobraron elementos de uno u otro vector, se los aade al final*/ Si I < N entonces Para Z = I hasta N hacer K =K + 1 Fin para Fin si Si J < M entonces Para Z = J hasta N hacer VR(K) =V1(Z) K =K + 1 Fin para Fin si Fin programa VR(K) =V1(Z)

campus.telesupvirtual.com/mod/book/print.php?id=72932

16/20

17/05/13

name

campus.telesupvirtual.com/mod/book/print.php?id=72932

17/20

17/05/13

name

UNIDAD DE APRENDIZAJE 2 RECURSIVIDAD DEFINICIN


Un procedimiento o funcin se dice que es recursivo si durante su ejecucin se invoca directa o indirectamente a s mismo. Esta invocacin depende al menos de una condicin que acta como condicin de corte que provoca la finalizacin de la recursin. Un algoritmo recursivo consta de: 1. Al menos un caso trivial o base, es decir, que no vuelva a invocarse y que se activa cuando se cumple cierta condicin. 2. El caso general que es el que vuelve a invocar al algoritmo con un caso ms pequeo del mismo. Los lenguajes que soportan recursividad, dan al programador una herramienta poderosa para resolver ciertos tipos de problemas reduciendo la complejidad u ocultando los detalles del problema. La recursin es un medio particularmente poderoso en las definiciones matemticas.
Ejemplo: Calcular el factorial de un nmero no negativo. Definimos el problema de la siguiente manera

Por definicin FACT (0) = 1 y el factorial de un nmero negativo es indefinido. El caso base en la recursin es el Factorial (0) el que se define en el caso de n positivo es: FACT = n* (n-1) * (n-2) *...* 1.Dado que n se asume positivo, decrementando en 1 cada vez que se llama al factorial se sabe que siempre ser alcanzado el caso base. Si calculamos el Factorial (3), usando esta definicin Analizando el Factorial Factorial (3) = 3 * Factorial (2) = n*Factorial (n-1), esta sentencia tiene el Factorial (2) = 2 * Factorial (1) siguiente efecto: Factorial (1) = 1 * Factorial (0) Factorial (0) = 1 La aplicacin de la definicin recursiva se detiene y la informacin obtenida se puede
campus.telesupvirtual.com/mod/book/print.php?id=72932 18/20

17/05/13

name

usar para responder la pregunta original factorial (3)? Dado que: Factorial (0) = 1 entonces Factorial (1) = 1 * 1 = 1, entonces Factorial (2) = 2 * 1 = 2, entonces Factorial (3) = 3 * 2 = 6 Funcin Factorial (n: entero): entero hacer si (n=0) entonces Factorial :=1 sino Factorial := n * Factorial (n-1) fin si fin hacer fin funcin CMO FUNCIONAN LOS ALGORITMOS RECURSIVOS Para entender cmo funciona la recursividad es necesario que tengamos presente las reglas y los tipos de pasaje de parmetros provistos por el lenguaje de programacin. Utilizamos el siguiente mtodo: Mtodo de la caja

Rotular con una letra el llamado recursivo en el cuerpode del Cada llamada recursiva hecha al subprograma en el transcurso la ejecucin va a subprograma recursivo. En el generar una nueva caja, que contendr el ambiente local del subprograma. Esto es, ejemplo Factorial (n-1) lo las variables y parmetros que se crean en el llamado y se destruyen cuando se llamamos A. Nos servir para termina la ejecucin. Cada caja contendr entonces: saber exactamente a dnde se debe retornar despus que la El valor de los parmetros formales. llamada a la funcin se complete. Las variables declaradas localmente (no existen en el ejemplo). Un lugar para el valor a ser retornado por cada llamada recursiva generada a partir de la caja corriente (marcada con el rtulo). El valor de la funcin misma.

Cuando se crea una nueva caja se dibuja una flecha desde la caja donde se hizo la llamada hacia la nueva. Sobre la flecha se pone el nombre de la llamada (rotulo) para indicar a dnde se debe retornar.

campus.telesupvirtual.com/mod/book/print.php?id=72932

19/20

17/05/13

name

Comenzar la ejecucin del cuerpo del subprograma con los valores correspondiente al mbito local de la caja corriente. Cuando termina la ejecucin de la caja corriente y se vuelve hacia atrs en las cajas, la anterior es ahora la corriente y el nombre en la flecha indica el lugar a donde se debe retornar y continuar la ejecucin del subprograma. El valor calculado se coloca en el tem apropiado en la caja corriente. Ejemplo: Vamos a calcular el Factorial (3) Llamada original: Factorial(3) comienza la ejecucin

En el punto A hace una llamada recursiva y la nueva invocacin de la funcin factorial comienza su ejecucin, hasta llegar al caso base en donde termina.

Se alcanza el caso base. Por lo tanto, la invocacin del Factorial se completo y puede comenzar a resolverse las cajas. Se vuelve a la caja anterior y se retorna el valor pendiente al punto del llamado (marcado con el rotulo A).

campus.telesupvirtual.com/mod/book/print.php?id=72932

20/20

También podría gustarte