Fundamentos de Informática Especialidad de Electrónica –

Slides:



Advertisements
Presentaciones similares
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Advertisements

LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Estructuras de control
Programación, Algoritmos y Estructuras de Datos
EJERCICIOS DE PROGRAMACION
INFORMATICA I Funciones CLASE 13.
Mergesort como ejemplo de Divide y Vencerás
VECTORES.
SOBRECARGA DE FUNCIONES
El lenguaje de programación C - Funciones -
FUNCIONES EN C.
Estructuras de Iteracion (Repetitivas ) while , for,, do-while
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
LENGUAJE “C” Programación.
LENGUAJE “C” Programación.
Algoritmo.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
Arreglo 1. Un arreglo es una variable que puede alojar múltiples valores a la vez. Algunos formatos para declarar arreglos son: tipo nombre[tamaño] ; //
Tratamientos secuenciales I Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 8 Versión
Funciones y paso de parámetros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 24.
Memoria Dinámica Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez.
Sistemas Operativos Unidad 8 Señales y funciones de tiempo.
 Para poder resolver una ecuación como ésta: x² = -4 No hay ningún número real que elevado al cuadrado nos pueda dar un resultado negativo. Ahora bien,
MATLAB 7 EJERCICIOS. E01. Escribir un programa que permita determinar si un número entero dado es par o impar. (Utilizar el operador mod) E02. Utilizando.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Estructuras de Control.
Actividad #2 Los algoritmos
Introducción al lenguaje C Instrucción IF – ELSE y el bucle WHILE
Arreglos y cadenas de texto
Introduction a la Programacion
IntroducciÓn a los Arreglos (“arrays”) en C++
Olimpiadas Chilenas de Informática - Formación
Estructuras PILA - COLA - LISTA.
FUNCIONES, PROCESAMIENTO ELEMENTAL DE DATOS
FUNCIONES Y PROCEDIMIENTOS
TIPOS DE DATOS Cadenas y caracteres PARCIAL III.
Estructuras de Datos Recursividad.
Arreglos. en Lenguaje C n
Guía teórica de manejo de estructuras de datos
ESTRUCTURAS DE CONTROL REPETITIVAS
GameMaker VIEWS. - Cámaras.
LENGUAJE DE PROGRAMACION III Estructuras Estáticas de Datos
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
Curso de iniciación al trabajo con MatLab 7.0
Estructuras de control en PHP
PROGRAMACIÓN 1 INTRODUCCIÓN
UNIVERSIDAD DE GUAYAQUIL FACULTAD DE CIENCIAS ADMINISTRATIVAS
LENGUAJE C.
Sistemas Numéricos 1. Introducción 2. Sistema de Numeración Decimal
Estructuras Repetitivas
Tema 9. Estructuras de repetición. Clase 2
INFORMATICA DEL CBU Clase 11 Año 2016 ARREGLOS.
ELO320: Estructura de Datos y Algoritmos
Programación I MC José Andrés Vázquez Flores
1 Conjuntos numéricos Índice del libro Números naturales
RADICALES Y LOGARITMOS
Lic. Xóchitl minerva García cruz
Arreglos en Java.
Conversión de Binario a Decimal
Estructuras de Control
MC Beatriz Beltrán Martínez Verano 2018
Informática Ingeniería en Electrónica y Automática Industrial
Informática Ingeniería en Electrónica y Automática Industrial
POTENCIAS Y RADICALES U. D. 2 * 4º ESO E. Angel Prieto Benito
METODOS DE ORDENAMIENTO
UNIVERSIDAD JUÁREZ AUTÓNOMA DE TABASCO Nombres: Isaac Sánchez García Teofilo Martinez Garcia Ricardo Del Carmen Paz López Vanesa Anahí Pérez Lizárraga.
ALGORITMO DE ORDENAMIENTO POR BURBUJA. El método de la burbuja es uno de los mas simples, es tan fácil como comparar todos los elementos de una lista.
MUESTREO SISTEMATICO.
Ordenación Por Inserción
Transcripción de la presentación:

Fundamentos de Informática Especialidad de Electrónica – 2009-2010 8. Vectores (arrays) Fundamentos de Informática Especialidad de Electrónica – 2009-2010 Ismael Etxeberria Agiriano 04/12/2018

Índice 8. Vectores (arrays) Números aleatorios Serie ordenada Números de la loto Inserción ordenada

1. Programa de números aleatorios Vectores 1. Núm. aleatorios 1. Programa de números aleatorios Vamos a ver un programa sencillo utilizado por un "profesor arbitrario" para calificar un trabajo, consistente en mostrar una nota cualquiera entre 0.0 y 10.0 (distinta cada vez). Para ello vamos a utilizar la función (o macro) random definida en la stdlib.h, que tiene la forma siguiente: int random (int n); random devuelve un número aleatorio entre 0 y n–1 Cada vez que llamamos a random obtenemos un nuevo número Detrás de random tenemos una serie de números pseudo-aleatoria de distribución uniforme basada en la función rand (a la que no invocaremos directamente)

Series pseudo-aleatorias Vectores 1. Núm. aleatorios Series pseudo-aleatorias Una distribución es uniforme cuando todos los elementos tienen la misma probabilidad de aparecer, como en el lanzamiento de un dado o una moneda no trucados Detrás de esta serie pseudo-aleatoria tenemos un número entero (por ejemplo, de 32 bits) y si es de buena calidad aparecerán las 232 posibilidades distintas pero en un orden "caótico" A un número dado en esta serie siempre le sigue el mismo número Para inicializar el primer valor (semilla) utilizaremos el reloj del sistema con la función (o macro) randomize (que requiere la inclusión del fichero time.h) de la forma: void randomize (void);

Para forzar división real Vectores 1. Núm. aleatorios Programa 1: código #include <stdio.h> #include <stdlib.h> #include <time.h> void main (void) { double nota; randomize (); /* Inicializa semilla con el reloj del sistema */ nota = random (101) / 10.0; printf ("Nota final: %4.1f\n", nota); } Para forzar división real

2. Programa de serie ordenada Vectores 2. Serie ordenada 2. Programa de serie ordenada Vamos a modificar el programa para que nos muestre una serie ordenada de números aleatorios entre 0.0 y 10.0 El programa se dividirá en cuatro partes: Inicializar la semilla de números aleatorios (inmediata) Inicializar el vector con números aleatorios: void inicializar (double v[], int n); Ordenar el vector: void ordenar (double v[], int n); Mostrar los elementos del vector resultante: void mostrar (double v[], int n);

Programa 2: Programa principal Vectores 2. Serie ordenada Programa 2: Programa principal #include <stdio.h> #include <stdlib.h> #include <time.h> void inicializar (double v[], int n); void ordenar (double v[], int n); void mostrar (double v[], int n); void main (void) { double vector[10]; randomize (); inicializar (vector, 10); ordenar (vector, 10); mostrar (vector, 10); }

Al menos uno de los dos para forzar división real Vectores 2. Serie ordenada Programa 2: inicializar y mostrar void inicializar (double v[], int n) { int i; for (i = 0; i < n; i++) v[i] = (double) random (101) / 10.0; } void mostrar (double v[], int n) printf ("%4.1f\n", v[i]); Al menos uno de los dos para forzar división real

Algoritmo de ordenación Vectores 2. Serie ordenada Algoritmo de ordenación Hay muchos algoritmos para ordenar de manera creciente un vector de n elementos Vamos a utilizar uno sencillo, consistente en colocar en la primera posición el elemento más pequeño, luego el siguiente, y así sucesivamente hasta la penúltima celda: Para i de 0 a n–2 hacer Intercambiar el elemento en la posición i-ésima con el más pequeño en las posiciones de i a n–1 Lo mejor es verlo con un ejemplo. Ordenemos el vector: 9 8 7 6 5 4 3 2 1 6.4 1.7 8.0 5.1 2.5 2.2 0.9 5.7 4.2 5.2

Ejemplo de ordenación Vectores 2. Serie ordenada 9 8 7 6 5 4 3 2 1 6.4 6.4 1.7 8.0 5.1 2.5 2.2 0.9 5.7 4.2 5.2 6.4 1.7 8.0 5.1 2.5 2.2 5.2 5.7 4.2 0.9 6.4 4.2 8.0 5.1 2.5 2.2 5.2 5.7 1.7 0.9 6.4 4.2 8.0 5.1 2.5 5.7 5.2 2.2 1.7 0.9 6.4 4.2 8.0 5.1 5.2 5.7 2.5 2.2 1.7 0.9 6.4 5.7 8.0 5.1 5.2 4.2 2.5 2.2 1.7 0.9 6.4 5.7 8.0 5.2 5.1 4.2 2.5 2.2 1.7 0.9 6.4 5.7 8.0 5.2 5.1 4.2 2.5 2.2 1.7 0.9 6.4 8.0 5.7 5.2 5.1 4.2 2.5 2.2 1.7 0.9 8.0 6.4 5.7 5.2 5.1 4.2 2.5 2.2 1.7 0.9 9 8 7 6 5 4 3 2 1

Programa 2: ordenar void ordenar (double v[], int n) { Vectores 2. Serie ordenada Programa 2: ordenar void ordenar (double v[], int n) { int i, j, min; /* Diversos índices */ double tmp; /* Variable temporal, para el intercambio */ for (i = 0; i < n - 1; i++) {/* Para i de 0 a n – 2 */ min = i; /* Si no hay otro menor el candidato es i */ for (j = i + 1; j < n; j++) if (v[j] < v[min]) /* Si j es menor pasa a ser el menor */ min = j; if (min != i) { /* Si i no es el más pequeño intercambiar v[i] y v[min] */ tmp = v[i]; v[i] = v[min]; v[min] = tmp; }

3. Programa de números de la loto Vectores 3. Loto 3. Programa de números de la loto Vamos a escribir un programa similar al anterior para generar los números de la loto Las modificaciones respecto al programa anterior son que se trata de números naturales (int) del 1 al 49 y que no se pueden repetir Para asegurarnos de que los números no se repiten verificaremos que cada nuevo número no se encuentre ya en la lista, en cuyo caso lo descartaremos (do-while): Hacer num = Generar un número aleatorio entre 1 y 49 mientras (num se encuentre en el vector)

Programa 3: inicializar_loto Vectores 3. Loto Programa 3: inicializar_loto void inicializar_loto (int v[], int n) { int i, j; int num; for (i = 0; i < n; i++) { do { num = random (49) + 1; /* entre 1 y 49 */ for (j = 0; j < i; j++) if (num == v [j]) break; } while (j < i); v [i] = num; }

4. Programa de inserción ordenada Vectores 4. Inserción ordenada 4. Programa de inserción ordenada Una alternativa a la solución anterior es la de introducir directamente cada número en su posición ordenada Para ello iremos construyendo la lista de manera ordenada Para mirar si el número se encuentra en la lista podemos buscarlo de manera secuencial Hay algoritmos de búsqueda eficientes que van dividiendo el espacio de búsqueda en dos pero salen de nuestros objetivos Insertar un elemento en su posición implica desplazar una posición a la derecha a todos los elementos a partir de esa posición

Programa 4: inicializar_ordenando Vectores 4. Inserción ordenada Programa 4: inicializar_ordenando int posicion (int num, int v[], int n); void desplazar (int v[], int n); void inicializar_ordenando (int v[], int n) { int i, j; int num; for (i = 0; i < n; i++) { do { num = random (49) + 1; /* entre 1 y 49 */ j = posicion (num, v, i); /* devuelve -1 si ya se encuentra */ if (j != -1) desplazar (&v[j], i - j); /* desplazar a partir de j */ } while (j == -1); v [j] = num; }

Programa 4: posición y desplazar Vectores 4. Inserción ordenada Programa 4: posición y desplazar int posicion (int num, int v[], int n) { int i; i = 0; while (i < n && num > v[i]) i++; /* Posicionar i */ if (i < n && v[i] == num) i = -1; return i; } void desplazar (int v[], int n) while (n > 1) { v[n] = v[n-1]; n--;