Operaciones con vectores



Documentos relacionados
Operaciones con vectores

Capítulo 1. MANUAL DE USUARIO

Programa completo de resolución de ecuaciones de 2º grado

Tutorial Básico de vbscript

Sentencias o instrucciones en Visual BASIC

Oprime click para iniciar

Ejemplos de conversión de reales a enteros

Informática I. While & do While

Comencemos a programar con. Entrega 10. Estructuras de Control II

Cualquier número de cualquier base se puede representar mediante la siguiente ecuación polinómica:

Como se declara un vector en Visual Basic 6.0

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Comencemos a programar con. Entrega 09

ARREGLOS DEFINICION GENERAL DE ARREGLO

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Formulario VBA en Excel. Creación del formulario. Actividad grado 10.

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Curso de Visual Basic Lección 1 Area Interactiva -

LABORATORIO Nº 1 Sistemas de Información asociados a los Formularios en Excel

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Prerrequisitos El alumno debe conocer y dominar los aspectos básicos de programación.

Accesibilidad web GUÍA FUNCIONAL

Ejercicios de Programación Orientada a Objetos

Programa de resolución de ecuaciones de primero y segundo grado

Programa de saludo 2 (resuelto)

TUTORIAL DESARROLLO DE APLICACIONES PARA EVOLUTION CON MS ACCESS

Algorítmica y Lenguajes de Programación. Ordenación (i)

15 CORREO WEB CORREO WEB

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

Estructuras de repetición

Una fracción es una expresión que nos indica que, de un total dividido en partes iguales, escogemos sólo algunas de esas partes.

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

ESTRUCTURA DE DATOS: ARREGLOS

Tecnologías de la Información. Apuntes de programación en Visual Basic 6.0

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC)

EJERCICIOS DEL TEMA 1

La ventana de Microsoft Excel

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

EJERCICIOS DE MATEMÁTICAS I HOJA 4. Ejercicio 1. Se consideran los vectores

6. Vectores Fundamentos de Informática

Técnicas de Programación

Título: Manual Básico de Calc. Parte I: Introducción a Calc de OpenOffice.org

MANAUAL DE MANTENIMIENTO PARA LA PÁGINA WEB DE PROYECTO ADL GESTOR DE CONTENIDOS

Manual de Procedimiento

col Type mismatch cadena vacía fila 1 z + i 4 1 fila 2

Enunciado unidades fraccionarias fracción fracciones equivalentes comparar operaciones aritméticas fracciones propias Qué hacer deslizador vertical

Manual CMS Mobincube

Base de datos en Excel

Cómo crear una encuesta online básica con encuestafacil

FUNDAMENTOS DE INFORMÁTICA

PRÁCTICAS DE GESTIÓN GANADERA:

Curso de Excel Objetivos de la Guía. La sintaxis de una fórmula

Segundo parcial de Sistemas Operativos. 24/6/2008. Ejercicios. 5 puntos. Duración 2h.

Ejercicio 1. Desarrollar un pequeño juego para practicar mecanografía.

Resolver triángulos en Visual Basic. Parte 3/3

Este programa mueve cada motor de forma independiente, y cuando termina una línea pasa a la siguiente.

Ejemplo de la implementación del llenado de un arreglo de forma aleatoria

1. Prestar ejemplar. -1-

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

Capítulo 4 Procesos con estructuras de repetición

U.T. 6.- Lenguaje Javascript - DOM. Parte Práctica

Guía de utilización de la Plantilla para la inserción de Unidades Didácticas para Microsoft Word 2007 y 2010

DESARROLLO DE HABILIDADES DEL PENSAMIENTO LÓGICO

Introducción a la Estadística con Excel

Tutorial: Primeros Pasos con Subversion

UNIDAD 1. LOS NÚMEROS ENTEROS.

DISEÑO WEB ADOBE DREAMWEAVER CS3

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Aritmética binaria

6. Vectores. 1. Introducción. 2. Declaración (I) Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos.

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Año: 2008 Página 1 de 18

Modulo 1 El lenguaje Java

Práctica 1 El juego de los chinos

3 ESTRUCTURAS DE CONTROL REPETITIVAS. BUCLES

Manual SBR. Pero antes de explicar las actividades que principalmente podemos desarrollar vamos a dar una visión global de la aplicación.

Vectores no colineales.

CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

MÓDULO 2. LEYES FINANCIERAS DE CAPITALIZACIÓN Y DESCUENTO SIMPLE

KIG: LA GEOMETRÍA A GOLPE DE RATÓN. Asesor de Tecnologías de la Información y de las Comunicaciones

Por ejemplo convertir el número 131 en binario se realiza lo siguiente: Ahora para convertir de un binario a decimal se hace lo siguiente:

PESTAÑA DATOS - TABLAS EN EXCEL

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas

Ejercicio de Microsoft Access

promedio = nint((notas(1) + notas(2) + notas(3) + & notas(4) + notas(5) + notas(6)) / 6.0) print *, 'Su promedio es', promedio

Paso 1 de 13. Paso 2 de 13. Guía de aprendizaje de Flash CS5 Tutorial 3. Creación de un logotipo textual.

ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas.

Gestión de Retales WhitePaper Noviembre de 2009

Introducción al tipo de dato ARRAY

Programación Orientada a Objetos

Práctica 2 Gráficos Vectoriales con SVG (versión )

Segunda práctica de Programación 2

Caso práctico 1: Determinación del coste de capital de REGRESENGER.

Módulo 8: Ofimática básica. Unidad didáctica 4: Introducción y modificación de datos. Access

Ecuaciones de primer grado con dos incógnitas

Fundamentos de la Programación

Transcripción:

Fundamentos de Informática 2012-2013 Laboratorio 12: Vectores (2) Objetivos: Practicar con algoritmos típicos con vectores (arrays de una dimensión) Operaciones con vectores Interfaz Figura 12.1. Interfaz del programa de operaciones con vectores. Funcionamiento En el laboratorio anterior se propusieron ejercicios para obtener listas de notas aleatorias. En este laboratorio vamos a retomar parte del código utilizado para no andar introduciendo los datos del teclado. En general utilizaremos vectores de notas (números reales del 0 al 10) aunque en un último ejercicio retomaremos la generación de una lista de seis números enteros distintos del 1 al 49 para rellenar un boleto de la loto de manera ordenada.

El funcionamiento básico de cada botón consistirá en generar una o dos listas de números aleatorios del 0 al 10 y obtener el mínimo, máximo, suma y media de los elementos, copia de un vector a otro, suma de dos vectores, ordenación de un vector y la mencionada lista de números de la loto. Veámoslos por partes. Botón Nota mínima Declaramos un vector v() de 20 elementos y lo rellenamos de números aleatorios del 0 al 10 mediante el procedimiento IniVectorNotas, que es el mismo que vimos en el laboratorio 11. Llamamos a la función imin, que nos devuelve el índice del menor de los n elementos de un vector, mostramos el vector mediante MuestraVectorDbl, que es similar al procedimiento SacaVectorDbl visto en el laboratorio anterior pero éste lo muestra en un cuadro de dibujo en vez de utilizar MsgBox; finalmente mostramos el elemento mínimo Sub cmd1_click() Dim v(1 To 20) As Double Dim i As Integer Dim min As Double ' Limpiar el cuadro de dibujo ' Inicializar la semilla con el reloj Call IniVectorNotas(v) i = imin(20, v) min = v(i) pctres.print "Mínima: " & Format(min, "0.00") Recordemos el procedimiento para inicializar el vector de notas: Sub IniVectorNotas(ByRef v() As Double) Dim i As Integer For i = LBound(v) To UBound(v) Step 1 Next i v(i) = Rnd * 10 El diagrama de flujo de la función imin que obtiene el índice del menor elemento del vector se muestra en la Figura 12.2. A partir de este índice ya podremos obtener el menor de los números, min. Nótese que un número puede estar repetido, aunque no sea probable ya que el generador de números aleatorios nos da series de números distintos. Por mucho que demos formato con dos decimales los números estarán guardados con mayor precisión. 2 de 7

imin entero i, m: entero m 1 i i + 1 no i 2 i n Sí v(i) < v(m) No sí m i imin m Fin Figura 12.2. Diagrama de flujo de la función imin. El procedimiento para mostrar en el cuadro de dibujo el vector formateado puede ser: Sub MuestraVectorDbl(ByRef v() As Double) Dim i As Integer For i = LBound(v) To UBound(v) Step 1 Next i Botón Nota máxima pctres.print Format(v(i), "0.00") Es similar al botón Nota mínima. Botón Suma vector Obtiene la suma de los elementos del vector: Sub cmd3_click() Dim v(1 To 20) As Double Dim sum As Double Call IniVectorNotas(v) sum = SumaVector(20, v) pctres.print "Suma: " & Format(sum, "0.00") Botón Media Obtiene la media de los elementos del vector. Puede obtenerse directamente dividiendo el valor obtenido por la función anterior SumaVector dividido por el número de elementos. 3 de 7

Sub cmd4_click() Fundamentos de Informática 2012-2013 Lab 12 Dim v(1 To 20) As Double Dim med As Double Call IniVectorNotas(v) med = MediaVector(10, v) pctres.print "Media: " & Format(med, "0.00") Botón Copia vector Obtiene la copia de un vector. Definiremos un vector v1 que inicializaremos mediante el procedimiento IniVectorNotas y lo copiaremos a un vector destino v2, mostrando el contenido de ambos en el cuadro de dibujo. Sub cmd5_click() Dim v1(1 To 10) As Double, v2(1 To 10) As Double Call IniVectorNotas(v1) Call CopiaVector(10, v1, v2) pctres.print "Vector origen:" Call MuestraVectorDbl(v1) pctres.print "Vector destino:" Call MuestraVectorDbl(v2) El procedimiento de copia tendrá la cabecera que se muestra en la Figura 12.3. vo: vector de real CopiaVector vd: vector de real Figura 12.3. Cabecera del procedimiento de copia de un vector a otro. Botón Suma vectores Obtiene la suma de dos vectores. Definiremos dos vector v1 y v2 que inicializaremos mediante el procedimiento IniVectorNotas y los sumaremos a un vector resultado v, mostrando el contenido de los tres en el cuadro de dibujo. Sub cmd6_click() Dim v1(1 To 7) As Double, v2(1 To 7) As Double Dim v(1 To 7) As Double Call IniVectorNotas(v1) Call IniVectorNotas(v2) Call SumaVectores(7, v1, v2, v) pctres.print "Vector 1:" 4 de 7

Call MuestraVectorDbl(v1) pctres.print "Vector 2:" Call MuestraVectorDbl(v2) pctres.print "Vector suma:" El procedimiento de suma tendrá la cabecera que se muestra en la Figura 12.4. v1, v2: vector de real SumaVector es Botón Ordena vector Figura 12.4. Cabecera del procedimiento de suma de vectores. Genera un vector, lo copia y ordena la copia, mostrando ambos vectores. Sub cmd7_click() Dim v1(1 To 10) As Double, v2(1 To 10) As Double Call IniVectorNotas(v1) Call CopiaVector(10, v1, v2) Call OrdenaVector(10, v2) pctres.print "Vector origen:" Call MuestraVectorDbl(v1) pctres.print "Vector ordenado:" Call MuestraVectorDbl(v2) El procedimiento de ordenación tendrá la cabecera que se muestra en la Figura 12.5. OrdenaVector Figura 12.5. Cabecera del procedimiento de ordenación de un vector. Obsérvese que el vector v es un parámetro de entrada y salida. Para ordenar el vector utilizaremos un algoritmo sencillo, cuyo diagrama de flujo se muestra en la figura 12.6. Descrito en palabras, buscaremos el índice del elemento menor y lo intercambiaremos con el primero, luego el del segundo menor y lo intercambiaremos con el segundo, y así sucesivamente. 5 de 7

OrdenaVector i, m: entero i i + 1 i 1 i n-1 No Sí m imin2(i, n, v) Fin no i i <> m sí Intercambia (v(i), v(m)) Figura 12.6. Diagrama de flujo del procedimiento de ordenación Haremos uso de la función imin2 que nos devuelve el índice del menor elemento de un vector de entre dos índices, i y n. Esta función es similar a imin, utilizada en el Botón mínimo cuyo diagrama de flujo se muestra en la Figura 12.2, con la diferencia que en vez de comenzar por 1 comienza por otro índice que recibe como parámetro. También hacemos uso del procedimiento Intercambia que, tal y como expresa su nombre, intercambia el valor de sus argumentos. La figura 12.7 muestra su cabecera, con x e y como parámetros de entrada y salida. x, y: entero Intercambia x, y: entero Figura 12.7. Diagrama de flujo de la cabecera del procedimiento de Intercambia. Botón Loto ordenado Genera un conjunto de seis números aleatorios distintos ordenados entre 1 y 49. Para ello utiliza el algoritmo de la inserción ordenada, es decir, para cada número nuevo generado calcula la posición en la que debe ir ordenado en el vector. Si ya existe no se insertará y si no existe se desplazarán a la derecha todos los números para hacer espacio al nuevo número en su posición. A continuación se propone el código asociado al botón en cuestión. La función PosOrd inserta el nuevo número num al final de la lista (llamado centinela) y devuelve la posición del primer elemento que sea mayor o igual a num. De esta manera sabemos que vamos a encontrar siempre uno mayor o igual. Si existe anteriormente nos dará la posición en la que se encuentra (y no 6 de 7

haremos nada). Si había que añadirlo al final sólo tendremos que incrementar en uno el número de elementos puesto que ya está introducido. Sub cmd8_click() Dim n As Integer, i As Integer Dim p As Integer Dim num As Integer Dim v(1 To 6) As Integer n = 0 Do num = Aleatorio(1, 49) p = PosOrd(num, n, v) If p <= n Then If v(p) <> num Then ' si es igual num ya estaba en el vector For i = n To p Step -1 ' desplazar a la derecha a partir de pos v(i + 1) = v(i) Next i n = n + 1 v(p) = num End If Else n = n + 1 ' PosOrd ya ha introducido num en esta posición End If Loop Until n = 6 Call MuestraVectorInt(v) La Figura 12.8 representa el diagrama de flujo de la función PosOrd con el comportamiento anteriormente descrito. Nótese que se utiliza un bucle While ya que no sabemos de antemano cuántas comparaciones hemos de realizar. num: real es PosOrd v(n+1) num i 1 i: entero entero v(i) < num Sí i i + 1 No PosOrd i Fin Figura 12.8. Diagrama de flujo de la función PosOrd. 7 de 7