TEMA 9 Algoritmos, Pseudocódigos y Conceptos Fundamentales

Anuncio
Introducción a la Programacion en Visual Basic .NET 2008
TEMA 9
Algoritmos, Pseudocódigos y Conceptos Fundamentales
Un Algoritmo es un conjunto ordenado y finito de pasos o instrucciones que conducen a
la solución de un problema. La naturaleza de los problemas varían con el ámbito o con el
contexto donde están planteados; así, existen problemas matemáticos, químicos,
filosóficos, etc. Según esto la naturaleza de los algoritmos también es variada y no todos
ellos pueden ser ejecutados por la computadora. En este curso consideramos aquellos
algoritmos que expresan soluciones usando reglas cuantitativas cuyas instrucciones
pueden ser introducidas en la computadora, a este tipo de algoritmos se denominan
Algoritmos Computacionales. En la resolución de un problema con la computadora la
parte pensante esta en el algoritmo. Así pues la eficacia de un programador no esta en
conocer la herramienta de programación, cosa necesaria, sino en saber resolver
problemas con la computadora para lo cual se requiere conocer un concepto conocido
como metodología de la programación cuyo eje central es el algoritmo.
Una vez que la solución de un problema ha sido expresada mediante un algoritmo el paso
siguiente es convertirlo a programa para lo cual se elige un lenguaje de programación.
De modo que un programa resulta ser la implementación de un algoritmo en un
determinado lenguaje de programación. Esto significa, por otro lado, que un algoritmo es
independiente del lenguaje de programación.
Problema, algoritmo y programa
Es una relación de pasos que siguen un orden lógico con la finalidad de dar solución a un
problema especifico. Durante la construcción de todo algoritmo se debe buscar que éste
cumple los siguientes criterios o condiciones.
-
Entrada.
-
Salida.
-
Exactitud
-
Generalidad
Ing. Miguel Angel Machaca
1
Introducción a la Programacion en Visual Basic .NET 2008
Al ser una secuencia de pasos, un algoritmo tiene un principio un final, además de ser
finito y general. Cada uno de los pasos son consecuentes; es decir un paso origina otro.
Veamos la siguiente grafica para comprender a un algoritmo clásico y sus características.
Algoritmo
Inicio
Paso : 1
Secuencia
Paso : 2
Secuencia
Paso : 3
Secuencia
Final
Paso : n
El pseudocódigo es una herramienta algorítmica que permite escribir pseudoprogramas
(una imitación de un programa real) utilizando un lenguaje de pseudoprogramación que
es una imitación de los lenguajes de programación de alto nivel.
Así, un pseudocódigo es una combinación de símbolos (+, -, *, /, %, >, >=, <, <=, !=,
==, y, o, no), términos (Leer, Imprimir, Abrir, Cerrar, Hacer...Mientras, Mientras...Hacer,
Para...Mientras, etc) y otras características comúnmente utilizadas en uno o más
lenguajes de alto nivel. No existen reglas que determinen que es o no es un
pseudocódigo, sino que varía de un programador a otro.
El objetivo del pseudocódigo es permitir al programador centrarse en los aspectos lógicos
de la solución evitando las reglas de sintaxis de un lenguaje de programación.
Posteriormente el pseudocódigo debe ser traducido a programa usando un lenguaje de
programación de alto nivel como Java, C++, Delphi, etc.
Ejemplo. Diseñe un algoritmo para preparar una limonada.
INICIO
Paso 1: Llenar una jarra con un litro de agua
Paso 2: Echar el jugo de tres limones
Ing. Miguel Angel Machaca
2
Introducción a la Programacion en Visual Basic .NET 2008
Paso 3: Echar cuatro cucharadas de azúcar
Paso 4:Remover el agua hasta disolver completamente el azúcar
FIN
Ejemplo. Diseñe un algoritmo que permita hallar la suma y el promedio de tres números.
INICIO
Paso 1: LEER numero1, numero2, numero3
Paso 2: Suma = numero1 + numero2 + numero3
Paso 3: Promedio = suma / 3
Paso 4: IMPRIMIR suma, promedio
FIN
Notas:
El término LEER significa obtener un dato de algún dispositivo de entrada, como el teclado, y almacenarlo en
una variable.
Una variable es una localización en la memoria que tiene un nombre y cuyo contenido puede cambiar a lo largo
de la ejecución de un programa. Así numero1, numero2 y numero3 son variables.
El término IMPRIMIR significa mostrar el valor de una variable en algún dispositivo de salida, como la
pantalla.
Para una explicación más detallada de estos conceptos vea Variables e Instrucciones Básicas de Programación
más adelante en este mismo capítulo.
En la siguiente pagina realiza los siguientes algoritmos:
-
Realizar un algoritmo para efectuar una llamada telefónica considerando que
deseas llamar por un teléfono monedero.
-
Realizar un algoritmo para hallar el producto de números enteros en base a suma
sucesivas.
-
Realizar un algoritmo para determinar si un numero es mayor a 100 o menor a
este.
-
Realzar un algoritmo para una actividad cotidiana que tu realizas.
Ing. Miguel Angel Machaca
3
Introducción a la Programacion en Visual Basic .NET 2008
Variable: Es una estructura elemental o medio de almacenamiento que soporta o
identifica a un determinado tipo de dato, que radica en la RAM. Durante la construcción
de un algoritmo, siempre se utilizan variables ya sean para efectuar operaciones,
controlar procesos repetitivos o tomar decisiones.
Características de una variable.
Siempre debe comenzar con una letra (carácter inicial) luego de ella puede ir a
-
cualquier combinación de letras (A...Z, a...z) o dígitos (0...9) hasta máximo de
255 caracteres.
No puede formar parte del nombre de la variable ningún carácter especial (&, #,
-
@, !, ", -, +, *, /, %, $, ?, ^, {}, [], etc.) excepto un subguión (mi_variable).
Se recomienda que en lo posible el nombre de la variable refleje el motivo de
-
operación que desarrolle.
CLASIFICACIÓN DE VARIABLES

Por su Ubicación y Uso.
-
Variables Globales. Son aquellas que pueden ser utilizadas por todos los módulos
que componen el programa. Generalmente son declaradas o definidas entes o
dentro del módulo principal.
-
Variables Locales: También denominadas restringidas, porque son utilizadas
dentro el modulo en que fueron declaradas.

Por el Tipo de Dato que Almacena
-
Variables Numéricas: Almacenan caracteres numéricos (0...9), en general
números reales.
-
Variables Alfabéticas: Almacenan caracteres alfabéticos MAYÚSCULAS (A...Z) y
minúsculas (a...z).
-
Variables Alfanuméricos: Combinación de los anteriores. Ej. Suma1, Digito_55.
TIPOS DE DATOS
Los datos son los objetos de información sobre los que actúa un programa. Un dato
puede ser un simple carácter como 'a', un valor entero tal como 35, un número real tal
Ing. Miguel Angel Machaca
4
Introducción a la Programacion en Visual Basic .NET 2008
como 2.345 o una cadena tal como "algoritmia". En la mayoría de los lenguajes de
programación los tipos de datos simples o primitivos se pueden clasificar como:
-
enteros (dato numérico sin componente decimal y puede ser positivo o
negativo).
-
flotantes (dato numérico con componente decimal y puede ser positivo o
negativo).
-
carácter (un sólo carácter)
-
booleanos (verdadero o falso)
Así, en los lenguajes de programación, existen los siguientes tipos de datos:
Clasificación
Nombre del
Carácter
Rango de Valores Permitidos
Tipo
Char
0 a 65535
Byte
-128 a 127
Short
-32768 a 32767
Int
-2147483648 a 2147483647
Long
-9223372036854775808 a -9223372036854775807
Float
-3.4 x 10 38 a 3.4 x 10 38
Double
-1.7 x 10 308 a 1.7 x 10 308
Entero
Real
Booleano
Boolean
true, false
También la mayoría de los lenguajes de programación permiten crear tipos compuestos
conocidos también como tipos abstractos de datos. Estos son tipos de datos creados
por el programador para responder a un problema específico o general, usando para ello
los tipos simples u otros tipos abstractos.
IDENTIFICADORES
Un identificador es un nombre que puede darse a una variable, a una constante y en
general a cualquier elemento de un programa que necesite nombrarse.
Ing. Miguel Angel Machaca
5
Introducción a la Programacion en Visual Basic .NET 2008
Una variable tiene asociada dos cosas fundamentales: un identificador y un tipo de
dato. El nombre identifica de manera única la localización de memoria donde se
almacena el dato. El tipo de dato especifica la naturaleza del dato que puede almacenar la
variable. Según el tipo de dato de la variable podemos tener variables enteras, variables
reales, variables de carácter, variables booleanas, etc.
En el gráfico siguiente se muestran dos variables con sus contenidos en memoria. La
variable llamada Edad (de tipo entero) cuyo contenido es 27 y la variable llamada
Descuento (de tipo real) cuyo contenido es 23.57.
Ing. Miguel Angel Machaca
Edad
301
Descuento
23.57
6
Introducción a la Programacion en Visual Basic .NET 2008
TEMA 10
PROGRAMACIÓN ESTRUCTURADA
Una estructura secuencial es aquella en la que las instrucciones están una a continuación
de la otra siguiendo una secuencia única, sin cambios de ruta. La estructura secuencial
tiene una entrada y una salida. En la Figura se muestra el diagrama de flujo y el
pseudocódigo de una estructura secuencial.
Diagrama de
Flujo
Pseudocódigo
Inicio
.
.
acción 1
acción 2
acción 3
.
.
Fin
Estructura Secuencial: Diagrama de Flujo y Pseudocódigo
Ejercicios:
Ejercicio 1:- Diseñe un pseudocódigo que halle el área y el perímetro de un rectángulo.
Considere las siguientes fórmulas: area = base x altura, perimetro = 2 x (base+altura).
INICIO
REAL base, altura, area, perimetro
LEER base, altura
area = base*altura
perimetro = 2*(base+altura)
IMPRIMIR area, perimetro
FIN
Ing. Miguel Angel Machaca
7
Introducción a la Programacion en Visual Basic .NET 2008
Ejercicio 2:- Diseñe un pseudocódigo para convertir una longitud dada en centímetros a
pies. Considere que:
1 pie = 30.48 centímetros.
INICIO
REAL cpies, ccent
LEER ccent
cpies = ccent/30.48
IMPRIMIR cpies
FIN
Ejercicio 3:- Una institución benéfica europea ha recibido tres donaciones en soles,
dólares y marcos. La donación será repartida en tres rubros: 60% para la implementación
de un centro de salud, 40% para un comedor de niños y el resto para gastos
administrativos. Diseñe un algoritmo que determine el monto en euros que le
corresponde a cada rubro. Considere que: 1 dólar = 3.52 soles, 1 dólar = 2.08 marcos, 1
dólar = 1.07 euros.
INICIO
REAL c soles, cdolares, c marcos, ceuros, rubro1, rubro2, rubro3
LEER csoles, cdolares, cmarcos
// Determina el total en euros
ceuros = (csoles/3.52 + cdolares + cmarcos/2.08)*1.07
// Determina el monto de cada rubro
rubro1 = ceuros*0.60
rubro2 = ceuros*0.40
rubro3 = ceuros*0.20
IMPRIMIR rubro1, rubro2, rubro3
FIN
Ing. Miguel Angel Machaca
8
Introducción a la Programacion en Visual Basic .NET 2008
REPRESENTACIÓN MEDIANTE DIAGRAMAS DE FLUJO
Concepto. Un Diagrama de Flujo, es la Representación grafica de un algoritmo.
En este texto, los símbolos gráficos que utilizaremos son los siguientes
SÍMBOLO
DESCRIPCIÓN
Inicio o Final
Lectura o Entrada de Datos
Proceso Secuencial o Asignación
Salida por Pantalla de Textos y Resultados
Entrada de Datos por teclado
Conector de Procesos Interno
Conector de Procesos Externo
Toma de Decisiones
Flujo de Datos
Multidocumentos
Ing. Miguel Angel Machaca
9
Introducción a la Programacion en Visual Basic .NET 2008
Ejemplo:
Utilizando las anteriores figuras representemos el siguiente ejercicio. Diseñe un
pseudocódigo que halle el área y el perímetro de un rectángulo. Considere las siguientes
fórmulas: area = base x altura, perimetro = 2 x (base+altura).
ALGORITMO
INICIO
REAL base, altura, area, perimetro
LEER base, altura
area = base*altura
perimetro = 2*(base + altura)
IMPRIMIR area, perímetro
FIN
Diagrama de Flujo
inic io
base,
altura,
area,
perim etro
PRUEBA DE ESCRITORIO
base, altura
area = bas e * altura
base
altura
área
perímetro
pantalla
5
10
50
30
"100"
10
12
120
44
"44"
10,5
5,5
57.75
32
"32.0"
perim etro = 2 * (base + altur a)
area,
perim etro
fin
Ing. Miguel Angel Machaca
10
Introducción a la Programacion en Visual Basic .NET 2008
1. Hacer leer S en segundos, convertir a minutos y horas. Desplegar resultados.
Public Class Ej_3
Private Sub Button2_Click(ByVal... Button2.Click
End
End Sub
Private Sub Button1_Click(ByVal... Button1.Click
Dim s, min, hor As Long
s = Val(TextBox1.Text)
min = s / 60
hor = min / 60
TextBox2.Text = CStr(min)
TextBox3.Text = CStr(hor)
End Sub
End Class
Ing. Miguel Angel Machaca
11
Introducción a la Programacion en Visual Basic .NET 2008
2. Hacer leer un número
X, hallar su cuadrado, cubo, raíz cuadrada, raíz cúbica.
Desplegar resultados.
Public Class Ej_5
Private Sub Button1_Click(ByVal... Button1.Click
Dim x, cua, cubo, rac, racub As Long
x = Val(TextBox1.Text)
cua = x * x
cubo = x * x * x
rac = x ^ (1 / 2)
racub = x ^ (1 / 3)
TextBox2.Text = CStr(cua)
TextBox3.Text = CStr(cubo)
TextBox4.Text = CStr(rac)
TextBox5.Text = CStr(racub)
End Sub
Private Sub Button2_Click(ByVal... Button2.Click
End
End Sub
End Class
Ing. Miguel Angel Machaca
12
Introducción a la Programacion en Visual Basic .NET 2008
3. Desarrollar una aplicación que permita calcular la velocidad de un Móvil cuando se
conoce el espacio recorrido y el tiempo. La formula es V=e/t.
Public Class frmvelocidad
Dim espacio, tiempo, velocidad As Single
Private Sub cmdcalcular_Click(... cmdcalcular.Click
espacio = Val(txtespacio.Text)
tiempo = Val(txttiempo.Text)
a = Convert.ToInt32(TextBox1.Text)
Dim a As Integer = Convert.ToInt32(TextBox1.Text)
velocidad = espacio / tiempo
txtvelocidad.Text = velocidad.ToString & " m/s"
lblvelocidad.Visible = True
txtvelocidad.Visible = True
End Sub
Private Sub cmdnuevo_Click(... cmdnuevo.Click
txtespacio.Text = ""
txttiempo.Text = ""
txtvelocidad.Text = ""
End Sub
End Class
Ing. Miguel Angel Machaca
13
Introducción a la Programacion en Visual Basic .NET 2008
4. Hacer leer G grados, M minutos y S segundos convertir a radianes y desplegar el
resultado.
Public Class Ejer1a
Private Sub btnNuevo_Click(... btnNuevo.Click
txtGrado.Clear()
txtMin.Clear()
txtSeg.Clear()
txtResultado.Clear()
txtGrado.Focus()
End Sub
Private Sub btnConvertir_Click(... btnConvertir.Click
Dim grado As Integer = Convert.ToInt32(txtGrado.Text)
Dim min As Integer = Convert.ToInt32(txtMin.Text)
Dim seg As Integer = Convert.ToInt32(txtSeg.Text)
Dim res As Double
res = ((seg * min) / 3600) + grado
res = (res * Math.PI) / 180
txtResultado.Text = res.ToString
End Sub
Ing. Miguel Angel Machaca
14
Introducción a la Programacion en Visual Basic .NET 2008
Private Sub txtGrado_KeyPress(... txtGrado.KeyPress
If Asc(e.KeyChar) = 13 And txtGrado.TextLength > 0 Then
txtMin.Focus()
Exit Sub
End If
VerificaValor(e)
End Sub
Private Sub txtMin_KeyPress(... txtMin.KeyPress
If Asc(e.KeyChar) = 13 And txtMin.TextLength > 0 Then
txtSeg.Focus()
Exit Sub
End If
VerificaValor(e)
End Sub
Private Sub txtSeg_KeyPress(... txtSeg.KeyPress
If Asc(e.KeyChar) = 13 And txtSeg.TextLength > 0 Then
btnConvertir.Focus()
Exit Sub
End If
VerificaValor(e)
End Sub
Sub VerificaValor(ByVal x As System.Windows.Forms.KeyPressEventArgs)
If Asc(x.KeyChar) = 8 Or Asc(x.KeyChar) = 46 Then
Exit Sub
End If
If Asc(x.KeyChar) < 48 Or Asc(x.KeyChar) > 57 Then
x.Handled = True
MessageBox.Show("Solo se permiten Numeros", "Error de datos")
End If
End Sub
End Class
Ing. Miguel Angel Machaca
15
Introducción a la Programacion en Visual Basic .NET 2008
5. Hacer leer un número
X, hallar su cuadrado, cubo, raíz cuadrada, raíz cúbica.
Desplegar resultados.
Public Class Ejer2a
Private Sub btnNuevo_Click(... btnNuevo.Click
txtnumero.Clear()
LTResultado.Items.Clear()
txtnumero.Focus()
End Sub
Private Sub btnCalcular_Click(... btnCalcular.Click
Dim numero As Double = Convert.ToDouble(txtnumero.Text)
Dim res As Double
res = Math.Pow(numero, 2)
LTResultado.Items.Add("Cuadrado => " & res.ToString)
res = Math.Pow(numero, 3)
LTResultado.Items.Add("Cubo => " & res.ToString)
res = Math.Sqrt(numero)
LTResultado.Items.Add("Raíz Cuadrada => " & res.ToString)
res = Math.Pow(numero, (1 / 3))
LTResultado.Items.Add("Raíz Cúbica => " & res.ToString)
End Sub
Ing. Miguel Angel Machaca
16
Introducción a la Programacion en Visual Basic .NET 2008
Private Sub txtnumero_KeyPress(... txtnumero.KeyPress
If Asc(e.KeyChar) = 13 And txtnumero.TextLength > 0 Then
btnCalcular.Focus()
Exit Sub
End If
VerificaValor(e)
End Sub
Sub VerificaValor(ByVal x As System.Windows.Forms.KeyPressEventArgs)
If Asc(x.KeyChar) = 8 Or Asc(x.KeyChar) = 46 Then
Exit Sub
End If
If Asc(x.KeyChar) < 48 Or Asc(x.KeyChar) > 57 Then
x.Handled = True
MessageBox.Show("Solo se permiten Numeros", "Error de datos")
End If
End Sub
End Class
Ing. Miguel Angel Machaca
17
Descargar