Algoritmos y Programacin Clase 10 - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

Algoritmos y Programacin Clase 10

Description:

Un archivo de datos contiene las notas de un parcial ... Command button: mode. Sub mode_Click() Encuentra la moda. Textbox: show_moda ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 19
Provided by: peterulric
Category:

less

Transcript and Presenter's Notes

Title: Algoritmos y Programacin Clase 10


1
Algoritmos y ProgramaciónClase 10
  • TDU (Tipos de datos Definidos por el Usuario)
  • Ordenamiento y búsqueda

2
Repaso vectores
  • Un archivo de datos contiene las notas de un
    parcial
  • Encuentre cuál es la nota más frecuente y cuántas
    veces se repite

3
Moda
  • Leer datos de archivo y almacenar en vector
    dinámico nota(). Al finalizar esta parte del
    programa, se conocen las dimensiones (1..n) y los
    componentes de nota.
  • Para encontrar la moda, recorrer el vector,
    comparando cada elemento con todos los demás
  • Dos ciclos anidados (ciclo i1..n y ciclo j1..n)
  • En el ciclo externo se cuenta la nota que aparece
    más veces
  • En el ciclo interno se cuenta cuántas veces se
    repite una nota i (nota(i)nota(j)?)

4
Moda definir variables
Dim n As Integer 'número de estudiantes Dim
nota() As Double 'vector que almacena las notas.
Las entradas se leen desde un archivo Dim nveces
As Double 'número de veces que se repite cada
nota Dim moda As Double 'nota más frecuente Dim
mayor_freq As Double 'mayores repeticiones de una
nota Dim nota_actual As Double 'nota que se está
buscando
5
Moda (interfaz)
Muestra cuántas observaciones se leyeron (n)
Lee de archivo Redimensiona y llena el vector
nota(1..n)
Command button mode.Sub mode_Click() Encuentra
la moda
Textbox show_moda
6
Al oprimir encontrar moda
  • Private Sub mode_Click()
  • 'inicializar contador de las mayores repeticiones
  • mayor_freq 0
  • moda 0
  • 'iniciar recorrido, ciclo i
  • For i 1 To n
  • nveces 0
  • nota_actual nota(i)
  • 'recorrido comparando la nota actual con todas
    las demás ciclo interior j
  • For j 1 To n
  • If nota_actual nota(j) Then
  • nveces nveces 1
  • Next j
  • 'si el número de veces que se repite la nota
    actual es mayor que el de la
  • 'mayor frecuencia encontrada, actualice el
    contador y la moda.
  • If nveces gt mayor_freq Then
  • mayor_freq nveces
  • moda nota_actual
  • Else

nota_actual guarda la variable cuyo número de
ocurrencias contamos
nveces cuenta cuántas veces ocurre nota_actual
En el ciclo externo se cuenta la nota que aparece
más veces (moda, que aparece mayor_freq veces)
7
Ejemplo 2
  • El archivo Datos.txt contiene varios registros
    con los siguientes datos de estudiantes sexo
    (M, F), edad (14, 35), código de la comuna
    donde vive (1, 16).
  • Elaborar un programa en VB que efectúe los
    siguientes procesos
  • Leer todos los registros de datos.
  • Calcular el total y el porcentaje de mujeres y de
    hombres.
  • Calcular el total y el porcentaje de los mayores
    de edad y de los menores de edad.
  • Determinar el porcentaje de los estudiantes que
    viven en las comunas de código impar pero
    distinto de 3.

8
Ejemplo 2 Definición de variables
  • Datos de entrada
  • Ei ? Registro i-ésimo de un estudiante.
  • Cada registro tiene
  • - Un elemento Sexo de tipo String
  • - Un elemento Edad de tipo Integer
  • - Un elemento CodComuna de tipo Integer
  • Datos de salida
  • NumH ? Número total de Hombres
  • NumM ? Número total de Mujeres
  • PorcH ? Porcentaje de Hombres
  • PorcM ? Porcentaje de Mujeres

9
Ejemplo 2 Definición de variables
  • MenE ? Número de menores de edad
  • MayE ? Número de mayores de edad
  • PorcMenE ? Porcentaje de menores de edad
  • PorcMayE ? Porcentaje de mayores de edad
  • PorcImpar ? Porcentaje de estudiantes que viven
    en comunas de código impar y distinto de 3.
  • Variables auxiliares
  • N ? Contador de estudiantes
  • NumImpar ? Número de estudiantes que viven en
    comunas de código impar y distinto de 3.

10
Ejemplo 2 Código fuente
  • '(en un módulo estándar)
  • 'Requerir declaración de variables
  • Option Explicit
  • 'Declaración del TDU Estudiante
  • Public Type Estudiante
  • Sexo As String 1
  • Edad As Integer
  • CodComuna As Integer
  • End Type
  • 'Declaración de variables globales
  • Dim N As Integer, E() As Estudiante, NumH As
    Integer
  • Dim NumM As Integer, PorcH As Single, PorcM As
    Single
  • Dim MenE As Integer, MayE As Integer
  • Dim PorcMenE As Single, PorcMayE As Single
  • Dim PorcImpar As Single, NumImpar As Integer

11
Ejemplo 2 Código fuente
  • '(en el evento Click de un CommandButton)
  • ChDrive App.Path 'Cambiamos el drive actual
  • ChDir App.Path 'Cambiamos el directorio actual
  • 'Abrimos el archivo
  • Dim NumArch As Integer
  • NumArch FreeFile()
  • Open "Datos.txt" For Input As NumArch
  • 'Leer datos mientras no sea el final del archivo
  • N 0
  • Do While Not EOF(NumArch)
  • N N 1
  • ReDim Preserve E(1 To N)
  • Input NumArch, E(N).Sexo, E(N).Edad,
    E(N).CodComuna
  • Loop
  • Close NumArch

12
Ejemplo 2 Código fuente
  • 'Cálculos
  • NumH 0 NumM 0 MenE 0 MayE 0 NumImpar
    0
  • Dim I As Integer
  • For I 1 To N
  • If E(I).Sexo "M" Then NumH NumH 1
  • Else NumM NumM 1 End If
  • If E(I).Edad lt 18 Then MenE MenE 1
  • Else MayE MayE 1 End If
  • If E(I).CodComuna Mod 2 1 And _
  • E(I).CodComuna ltgt 3 Then NumImpar NumImpar
    1
  • Next I
  • PorcH NumH / N PorcM NumM / N
  • PorcMenE MenE / N PorcMayE MayE / N
  • PorcImpar NumImpar / N

13
Ejemplo 2 Código fuente
  • 'Mostrar resultados
  • Dim Aux As String
  • Aux Aux "NumH " NumH vbCrLf
  • Aux Aux "NumM " NumM vbCrLf
  • Aux Aux "PorcH " PorcH vbCrLf
  • Aux Aux "PorcM " PorcM vbCrLf
  • Aux Aux "MenE " MenE vbCrLf
  • Aux Aux "MayE " MayE vbCrLf
  • Aux Aux "PorcMenE " PorcMenE vbCrLf
  • Aux Aux "PorcMayE " PorcMayE vbCrLf
  • Aux Aux "PorcImpar " PorcImpar vbCrLf
  • I FreeFile()
  • Open "Resultados.txt" For Output As I
  • Print I, Aux
  • Close I

14
Ejemplo Ordenar vector
  • Dado un vector de N componentes, ordenarlo de
    menor a mayor (en orden ascendente)

15
Ejemplo Ordenar vector
Sub ejecutar_Click()
N
V(i) i1..N
16
ii,N-1,1
Valmenor?V(i) Posmenor?i
ji1,N,1
V(1) V(2) V(3) . . . V(i) V(i1) . . . V(N-1) V(N)
V(j)ltV(valmenor)
no

Valmenor?V(j) Posmenor?j
Ciclo i Recorrer V i1..N-1

iltgtj
Ciclo j Recorrer V ji1N
no
Aux?V(i) V(i)?V(posmenor) V(posmenor)?Aux
17
Ejemplo Ordenar vector
  • Private Sub ejecutar_Click()
  • Dim aux2 As String
  • For i 1 To dimv - 1
  • valmenor v(i)
  • posmenor i
  • For j i 1 To dimv
  • If v(j) lt valmenor Then
  • valmenor v(j)
  • posmenor j
  • End If
  • Next j
  • If posmenor ltgt i Then
  • aux1 v(i)
  • v(i) v(posmenor)
  • v(posmenor) aux1
  • End If
  • Next i

Ciclo j Encuentra el menor valor y su
posición Entre i1 y N
Ciclo i
Si se encontró un valor menor que V(i),
intercambiarlo con V(i)
18
Ejemplo Ordenar vector
  • Mostrar vector en cuadro de texto aux2
  • For i 1 To dimv
  • aux2 aux2 "v" i "" v(i) vbCrLf
  • Next i
  • orderv.Text aux2
  • End Sub
Write a Comment
User Comments (0)
About PowerShow.com