Beruflich Dokumente
Kultur Dokumente
gortm
mica y
Pro
ogram
macin
(Gua de
d apuntes))
UNIV
VERSID
DAD AU
UTNO
OMA TOMS FRAS
S
Fac
cultad de
d Ingeniera
a Civil
INF
FORM
TICA
MAT-205
Auuxiliar. Marcco Antonio Velsquez
V
Azzurduy
Edicin 20011
Pgina |1
INDICE
1. Presentacin...5
2. Introduccin...5
3. De los problemas a los programas..5
3.1Lenguajes de Programacin....6
4. Algoritmo y sus tipos.....7
4.1 Tipos de Algoritmos......7
4.2 Lenguajes Algortmicos .........7
5. Metodologa para la solucin de problemas por medio de computadora7
6. Diagrama de Flujo ...........9
7. Pseudocdigo.....10
8. Lenguaje Visual Basic.10
8.1 Tipos, declaraciones y alcances de las variables.....10
8.1.1 Qu son las variables........10
8.2 Tipos de Variables.......11
8.3 Declaracin de Constantes........12
8.4 ENTRADAS Y SALIDAS SENCILLAS CON MSGBOX() E INPUTBOX()..13
8.4.1 Que son Inputbox(), Msgbox(), MsFlexGrid.........13
8.5 Botn de Comando (Command Button) .....14
9. Estructuras algortmicas y de programacin.......14
10. Estructuras Secuenciales ....14
10.1 Calcular el rea de un crculo. .......15
10.1.1 Algoritmo: rea de un crculo.......15
10.1.2 Diagrama de flujo: rea de un Crculo...16
10.1.3 Cdigo Visual Basic: rea de un crculo.......16
11. Estructuras de Condicionales ..........17
11.1 Condicionales Simples..........17
Pgina |2
11.1.1 Determinar el mximo de tres nmeros. .17
11.1.2 Algoritmo: Mximo de tres nmeros...17
11.1.3 Diagrama de Flujo: Mximo de tres nmeros ...18
11.1.4 Programa Visual Basic: Mximo de tres nmeros.18
11.2
Condicionales Dobles.....19
Pgina |3
13. APLICACIN.....31
13.1 Determinar la cantidad de dgitos que posee un nmero n.............31
13.1.1 Algoritmo: Cantidad de dgitos que posee un nmero n...31
13.1.2 Diagrama de flujo: Cantidad de dgitos que posee un nmero n.32
13.1.3 Cdigo Visual Basic: Cantidad de dgitos que posee un nmero n..32
13.2 Cambio de base decimal a base binaria. ...33
13.2.1 Algoritmo: Cambio de base decimal a base binaria..33
13.2.2 Diagrama de flujo: Cambio de base decimal a base binaria.33
13.2.3 Cdigo Visual Basic: Cambio de base decimal a base binaria..34
13.3 Es nmero primo? ...34
13.3.1 Algoritmo: Es nmero primo? ...........34
13.3.2 Diagrama de flujo: Es nmero primo? ....35
13.3.3 Cdigo Visual Basic: Es nmero primo? ..35
13.4 Mximo comn divisor de n nmeros. ......36
13.4.1 Algoritmo: Mximo comn divisor de n nmeros. ...36
13.4.2 Diagrama de flujo: Mximo comn divisor de n nmeros. ..37
13.4.3 Cdigo Visual Basic: Mximo comn divisor de n nmeros..38
14 Mtodos Numricos....39
14.1 Introduccin. ...39
14.1.2 Integracin numrica. ...39
14.1.3 El rea bajo una curva. .....39
14.2 Mtodo de los rectngulos: ..40
14.2.1 Ejemplo Mtodo de los rectngulos .40
14.2.2 Algoritmo. Mtodo de los rectngulos...40
14.2.3 Diagrama de flujo: Mtodo de los rectngulos...40
14.2.4Cdigo Visual Basic: Mtodo de los rectngulos...41
14.3 Mtodo de la suma de trapecios: .....41
14.3.1 Ejemplo Mtodo de la suma de trapecios. ...42
14.3.2 Algoritmo. Mtodo de la suma de trapecios. .....42
14.3.3 Diagrama de flujo: Mtodo de la suma de trapecios. ....43
14.3.4 Cdigo Visual Basic: Mtodo de la suma de trapecios.....43
14.4 Mtodo de Simpson 1/3 (frmula parablica): ..43
14.4.1 Ejemplo Mtodo de Simpson 1/3. ..44
14.4.2 Algoritmo: Mtodo de Simpson 1/3. .44
14.4.4 Diagrama de flujo: Mtodo de Simpson 1/3. ...43
14.4.5 Cdigo: Mtodo de Simpson 1/3. ...45
Pgina |4
15. Determinacin de races de ecuaciones.....45
15.1 Mtodo de la Biseccin...46
15.1.1 Ejemplo Mtodo de la Biseccin. .46
15.1.2 Algoritmo: Mtodo de la Biseccin. ...47
15.1.3 Diagrama de flujo: Mtodo de la Biseccin. ........47
15.1.4 Cdigo: Mtodo de la Biseccin. ..48
15.2 Mtodo de la Secante. .49
15.2.1 Ejemplo Mtodo de la Secante. ..49
15.2.2 Algoritmo: Mtodo de la Secante. ....50
15.2.3 Diagrama de flujo: Mtodo de la Secante. ......50
15.2.4 Cdigo: Mtodo de la Secante. .......51
15.3 Mtodo de la Falsa Posicin. .........51
15.3.1 Ejemplo Mtodo de la Falsa Posicin. ............51
15.3.2 Algoritmo: Mtodo de la Falsa Posicin. .....51
15.3.3 .Diagrama de flujo: Mtodo de la Falsa Posicin. .........52
15.3.4 Cdigo Visual Basic: Mtodo de la Falsa Posicin. ....52
15.4 Mtodo de Newton-Raphson.......53
15.4.1 Ejemplo Mtodo de Newton-Raphson. ...........54
15.4.2 Algoritmo: Mtodo de Newton-Raphson. .........54
15.4.3 Diagrama de flujo: Mtodo de Newton-Raphson. ......54
15.4.4 Cdigo Visual Basic: Mtodo de Newton-Raphson. .55
16. Vectores.....55
16.1 Sacar el promedio de N nmeros..56
16.1.1 Algoritmo: Promedio......56
16.1.2 Diagrama de flujo: Promedio.....56
16.1.3 Programa Visual Basic: Promedio....57
16.2 Programa Excel: Promedio de una lista de cantidad no definida.....57
16.3 Ordenar nmeros de forma ascendente. ......58
16.3.1 Algoritmo: Ordenar nmeros de forma ascendente..........58
16.3.2 Diagrama de Flujo: Ordenar nmeros de forma ascendente.59
16.3.3 Cdigo Visual Basic: Ordenar nmeros de forma ascendente..60
17. Matrices...61
17.1 Producto de 2 matrices. ..61
17.1.1 Algoritmo: Producto de 2 matrices. ..61
17.1.2 Diagrama de flujo: Producto de 2 matrices. .62
17.1.3 Cdigo Visual Basic: Producto de 2 matrices. ..63
18. Bibliografa.65
Pgina |5
Algortmica y Programacin
1. Presentacin
El siguiente Manual de Algoritmia y Programacin fue creado con el propsito de
que el estudiante adquiera destrezas necesarias que le permitan crear diagramas de
flujo que le auxilien en la creacin de programas, con la intencin que el alumno
realice los ejercicios de prcticas en una manera razonada y no mecnica.
2. Introduccin
Debido a las que las mquinas resultan una herramienta til resolviendo un
problema o una situacin al automatizar procesos, es conveniente conocer el proceso
por el cual podemos lograr que las mquinas hagan las cosas que necesitamos, ese
hecho simplemente se resume a lo que se llama programacin, donde en un punto
lograremos realizar nuestros propios programas que se ajusten a nuestras necesidades
como usuarios y programadores a la vez, pero qu es un programador si no ms que
una persona que resuelve problemas y para ello es necesario tener conocimiento tanto
de el problema como de la forma en que podemos establecer un dilogo con las
mquinas para darle dichas ordenes mediante un lenguaje.
Por tanto esta gua est dirigida al inters de cul es el proceso para poder
adentrarnos una mnima parte en el mundo de la programacin.
3. De los problemas a los programas
La computadora no solamente es una mquina que puede realizar procesos
para darnos resultados, sin que tengamos la nocin exacta de las operaciones que
realiza para llegar a esos resultados. Con la computadora adems de lo anterior
tambin podemos disear soluciones a la medida, de problemas especficos que se nos
presenten. Ms aun, si estos involucran operaciones matemticas complejas y/o
repetitivas, o requieren del manejo de un volumen muy grande de datos.
El diseo de soluciones a la medida de nuestros problemas, requiere como en
otras disciplinas una metodologa que nos ensee de manera gradual, la forma de
llegar a estas soluciones.
A las soluciones creadas por computadora se les conoce como programas y no
son ms que una serie de operaciones que realiza la computadora para llegar a un
resultado, con un grupo de datos especficos. Lo anterior nos lleva al razonamiento de
que un programa nos sirve para solucionar un problema especfico.
Para poder realizar programas, adems de conocer la metodologa mencionada,
tambin debemos de conocer, de manera especfica las funciones que puede realizar la
computadora y las formas en que se pueden manejar los elementos que hay en la
misma.
1. Computadora: Es un dispositivo electrnico utilizado para procesar informacin
y obtener resultados. Los datos y la informacin se pueden introducir en la
computadora como entrada (input) y a continuacin se procesan para producir
una salida (output).
Pgina |6
2. Programa: Es el conjunto de instrucciones escritas de algn lenguaje de
programacin y que ejecutadas secuencialmente resuelven un problema
especifico.
3. Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos
(informacin) en la computadora para su proceso. Los datos se leen de los
dispositivos de entrada y se almacenan en la memoria central o interna.
Ejemplos: teclado, scanners (digitalizadores de rastreo), mouse (ratn),
trackball (bola de ratn estacionario), joystick (palancas de juego), lpiz ptico.
4. Dispositivos de Salida: Regresan los datos procesados que sirven de
informacin al usuario. Ejemplo: monitor, impresora.
5. La Unidad Central de Procesamiento (C.P.U) se divide en dos:
o Unidad de control
o Unidad Aritmtico - Lgica
6. Unidad de Control: Coordina las actividades de la computadora y determina que
operaciones se deben realizar y en qu orden; as mismo controla todo el
proceso de la computadora.
7. Unidad Aritmtico - Lgica: Realiza operaciones aritmticas y lgicas, tales
como suma, resta, multiplicacin, divisin y comparaciones.
8. La Memoria de la computadora se divide en dos:
o Memoria Central o Interna
o Memoria Auxiliar o Externa
9. Memoria Central (interna): La CPU utiliza la memoria de la computadora para
guardar informacin mientras trabaja con ella; mientras esta informacin
permanezca en memoria, la computadora puede tener acceso a ella en forma
directa. Esta memoria construida internamente se llama memoria de acceso
aleatorio (RAM).
10. La memoria interna consta de dos reas de memoria:
o La memoria RAM (Randon Access Memory): Recibe el nombre de
memoria principal o memoria del usuario, en ella se almacena
informacin solo mientras la computadora est encendida. Cuando se
apaga o arranca nuevamente la computadora, la informacin se pierde,
por lo que se dice que la memoria RAM es una memoria voltil.
o La memoria ROM (Read Only Memory): Es una memoria esttica que no
puede cambiar, la computadora puede leer los datos almacenados en la
memoria ROM, pero no se pueden introducir datos en ella, o cambiar los
datos que ah se encuentran; por lo que se dice que esta memoria es de
solo lectura. Los datos de la memoria ROM estn grabados en forma
permanente y son introducidos por el fabricante de la computadora.
11. Memoria Auxiliar (Externa): Es donde se almacenan todos los programas o
datos que el usuario desee. Los dispositivos de almacenamiento o memorias
auxiliares (externas o secundarias) mas comnmente utilizados son: cintas
magnticas y discos magnticos.
3.1Lenguajes de Programacin
Es un conjunto de smbolos, caracteres y reglas (programas) que le permiten a
las personas comunicarse con la computadora. Los lenguajes de programacin tienen
un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida,
calculo, manipulacin de textos, lgica/comparacin y almacenamiento/recuperacin.
Los lenguajes de programacin se clasifican en:
Pgina |7
Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan clculos numricos para
definir los pasos del proceso.
Pgina |8
Pgina |9
6. Diagrama de Flujo
Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se
puede decir que es la representacin detallada en forma grfica de cmo deben
realizarse los pasos en la computadora para producir resultados.
Esta representacin grfica se da cuando varios smbolos (que indican diferentes
procesos en la computadora), se relacionan entre si mediante lneas que indican el
orden en que se deben ejecutar los procesos. Los smbolos utilizados han sido
normalizados por el instituto norteamericano de normalizacin (ANSI).
SMBOLO
DESCRIPCIN
Indica el inicio u el final de nuestro diagrama de flujo.
comparacin
de valores.
P g i n a | 10
Recomendaciones para el diseo de Diagramas de Flujo
7. Pseudocdigo
Mezcla de lenguaje de programacin y espaol (o ingls o cualquier otro
idioma) que se emplea, dentro de la programacin estructurada, para realizar el diseo
de un programa. En esencial, el pseudocdigo se puede definir como un lenguaje de
especificaciones de algoritmos. Es la representacin narrativa de los pasos que debe
seguir un algoritmo para dar solucin a un problema determinado. El pseudocdigo
utiliza palabras que indican el proceso a realizar.
Ventajas de utilizar un Pseudocdigo a un Diagrama de Flujo
P g i n a | 11
La memoria es el lugar donde el ordenador almacena de forma temporal los
programas y parte de la informacin que necesita o utiliza. Esas posiciones o lugares
de la memoria donde los programas pueden almacenar informacin son las variables.
Es una ubicacin de almacenamiento temporal con nombre que se encuentra en
memoria, siendo capaz de contener cierto tipo de datos que pueden modificarse
durante la ejecucin del programa.
En VB los nombres de las variables deben limitarse a 255 caracteres, empezar
con un carcter alfabtico y no pueden obtener un punto
Utilizacin temporal de almacenamiento de datos dentro de un programa.
Permiten asignar nombres cortos y fciles de recordar. Son para manejar cualquier
tipo de informacin.
8.2 Tipos de Variables
Dim: Al declarar una variable con esta palabra estamos diciendo que la variable
sea local al mbito en que se declara. Puede ser dentro de un procedimiento o dentro
de un formulario, de esta forma no sera accesible desde los dems procedimientos o
formularios.
Ej:
Dim suma
Public: Las variables declaradas sern publicas y podrn estar accesibles desde
todos los formularios de la aplicacin. Para conseguirlo tendremos que declararlas en
un mdulo de cdigo, no en la seccin declarations de cualquier formulario de los que
conste la aplicacin.
Ej:
Public suma
Static: Con esta forma de declarar variables conseguiremos que las variables
locales no se creen y se destruyan al entrar y salir de los procedimientos donde fueron
declaradas sino que se mantenga su valor durante todo el periodo de ejecucin de la
aplicacin. De esta forma a entrar en algn procedimiento las variables recuerdan el
valor que tenan cuando se sali de l.
Ej:
Static suma
TIPOS DE VARIABLES
TIPO
COMENTARIO
BOOLEAN
BYTE
INTEGER
P g i n a | 12
LONG
SINGLE
DOUBLE
admite valores
precisin
CURRENCY
STRING
cadenas de caracteres
Variant
DATE
decimales
de
doble
P g i n a | 13
En la escritura del cdigo, para que su uso sea de ingreso de datos debe estar de la
siguiente manera.
Radio=Text1.text
El cual en la variable Radio se almacenar el dato que introduzcamos en el text1.
Para que su uso sea de salida de datos, se escribe en el cdigo de la siguiente manera.
Tex2.text= rea
Donde en el text2 estar el dato de salida o la respuesta, en este caso rea
8.4 ENTRADAS Y SALIDAS SENCILLAS CON MSGBOX() E INPUTBOX()
8.4.1 Que son Inputbox(), Msgbox()
InputBox() Despliega un Mensaje en un cuadro de dialogo, espera que el
usuario introduzca el texto o seleccione un botn y luego devuelve el contenido del
cuadro de texto. Sintaxis:
Ej.
Radio = InputBox(ingresar datos)
MsgBox Despliega un mensaje en un cuadro de dialogo y espera que el usuario
seleccione un botn. Sintaxis:
Ej.
rea = MsgBox(Mensaje)
MSFlexGrid Es un cuadro que posee celdas donde se puede mostrar o escribir
datos. (para tener acceso a el se debe hacer clic derecho sobre la barra
general, entrar a Componentes y seleccionar Microsoft FlexGrid Control
6.0)
P g i n a | 14
Para manipular el nmero de columnas o filas se puede hacer externamente
cambiando las Propiedades-MsflexGrid (en la barra de opciones a la derecha) en
Cols (columnas) y Rows (filas).
8.5 Botn de Comando (Command Button)
Uno de los controles mas habituales en Visual Basic 6.0 es el de Command Button, en
el cual la propiedad ms importante es el Caption que es lo que aparece escrito en l.
El evento que se ejecuta al hacer click en l, produce la hoja de programacin donde
podr ser escrito el lenguaje o cdigo de programacin.
Estructura Secuencial
Estructura de Condicionales
Estructuras Cclicas
P g i n a | 15
Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el
teclado) un valor. Esta operacin se representa en un pseudocdigo como sigue:
Leer a, b.
Donde a y b son las variables que recibirn los valores
a,b
Asignacin: La asignacin consiste, en el paso de valores o resultados a una zona de
la memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el
valor. La asignacin se puede clasificar de la siguiente forma:
o
o
o
o
a=c+b*2/4
R
Ejemplo.10.1 Calcular el rea de un crculo.
10.1.1 Algoritmo: rea de un crculo
1.
2.
3.
4.
5.
6.
Inicio
Leer R
pi= 3.1415927
rea= pi*R^2
Escribir rea
Fin
P g i n a | 16
10.1.2 Diagrama de flujo: rea de un Crculo
P g i n a | 17
11. Estructuras de Condicionales
Las estructuras condicionales comparan una variable contra otro(s) valor(es),
para que en base al resultado de esta comparacin, se siga un curso de accin dentro
del programa. Cabe mencionar que la comparacin se puede hacer contra otra variable
o contra una constante, segn se necesite. Existen dos tipos bsicos, las simples y las
mltiples.
V
<Condicin>
F
Tareas
P g i n a | 18
11.1.2 Diagrama de Flujo: Mximo de tres nmeros
P g i n a | 19
k = Val(Text3.Text)
Max = i
If j > Max Then
Max = j
End If
If k > Max Then
Max = k
End If
Text4.Text = Max
End Sub
..
11.1.4 Ejercicios de aplicacin
a) Determinar el mnimo de tres nmeros.
b) Obtener el valor absoluto de un nmero x.
11.2 Condicionales Dobles
Las estructuras condicionales dobles permiten elegir entre dos opciones o
alternativas posibles en funcin del cumplimiento o no de una determinada condicin.
Se representa de la siguiente forma:
Si <condicin> entonces
Accin(es)
si no
Accin(es)
Fin-si
- <condicin>, indica la condicin a evaluar
- <accin(es)>, son las acciones a realizar cuando se cumple o no la condicin
F
Tareas
V
Condicin
Tareas
P g i n a | 20
Ejemplo.11.2.1 Indicar si un nmero x es par o impar
11.2.2 Algoritmo: Nmero par?
1.
2.
3.
4.
5.
6.
7.
8.
Inicio
Leer x
SI x RESIDUO 2 = 0 ENTONCES
Escribir x es par
Caso contrario
Escribir x es impar
Fin decisin
Fin
P g i n a | 21
Else
Text2.Text = "es impar"
End If
End Sub
..
Fin Caso
Caso1
Caso2
Caso3
Caso4
P g i n a | 22
Ejemplo.11.3.1 Hacer un programa que resuelva cualquier ecuacin de 2 grado
ax2 + bx + c = 0, con a diferente de 0.
11.3.2 Algoritmo: Ecuacin de 2 grado.
1.
2.
3.
4.
5.
Inicio
Leer a, b, c.
Discriminante = b2 4ac
Seleccionar caso Discriminante
Caso es > 0
6. Mostrar: 1
, 2
7. Caso es =0
8. Mostrar: X = b
2a
9. Caso es < 0
10. Mostrar La ecuacin no tiene soluciones reales
11. Fin caso
12. Fin
11.3.3 Diagrama de Flujo: Ecuacin de 2 grado.
P g i n a | 23
11.3.4 Programa Visual Basic: Ecuacin de 2 grado.
Nota.- Se necesita: 5 TextBox, 1 CommandButton
..
Private Sub Command1_Click()
Dim a As Single
Dim b As Single
Dim c As Single
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
discr = b ^ 2 - (4 * a * c)
Select Case discr
Case Is > 0
X1 = (-b + Sqr(discr)) / (2 * a)
X2 = (-b - Sqr(discr)) / (2 * a)
Text4.Text = X1
Text5.Text = X2
Case Is = 0
x = -b / (2 * a)
Text4.Text = x
Text5.Text = x
Case Is < 0
MsgBox ("no tiene sol. real")
End Select
End Sub
..
P g i n a | 24
11.3.5 Ejercicios de aplicacin
a) Determinar si un nmero es mayor, menor o igual a un nmero b.
b) Dada tres longitudes de un tringulo, determinar qu tipo de triangulo es.
12 Estructuras Cclicas
Se llaman problemas repetitivos o cclicos a aquellos en cuya solucin es
necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad
especfica de veces. Esta cantidad puede ser fija (previamente determinada por el
programador) o puede ser variable (estar en funcin de algn dato dentro del
programa).Los ciclos se clasifican en:
12.1 Sentencia PARA
La sentencia Para es la ms sencilla de utilizar de las sentencias iterativas. La
emplearemos cuando el nmero de iteraciones del bucle se conozca antes de iniciarse
la ejecucin de ste. Una variable de contaje, contador, va contando las pasadas
(iteraciones) por el bucle.
Para <contador> = <iniciar> Hasta <finalizar> [Salto <incremento>]
<Sentencias>
Siguiente [<contador>]
-
Para<contador>=<iniciar>Hasta<finalizar> [Salto<incremento>]
<Sentencias>
P g i n a | 25
Ejemplo.12.1.1 Calcular el factorial de un nmero x
12.1.2 Algoritmo: Factorial
1.
2.
3.
4.
5.
6.
7.
8.
Inicio
Leer x
Factorial=1
Para i= 1 hasta x
Factorial=Factorial*i
Siguiente i
Mostrar: Factorial
Fin
P g i n a | 26
12.1.4 Programa Visual Basic: Factorial
Nota.- Se necesita: 2 TextBox, 1 CommandButton
..
Private Sub Command1_Click()
Dim x As Single
x = Val(Text1.Text)
Factorial = 1
For i = 1 To x
Factorial = Factorial * i
Next
Text2.Text = Factorial
End Sub
.
12.1.5 Ejercicios de aplicacin
a) Calcular la sumatoria de un nmero n.
b) Calcular el nmero de combinaciones de n elementos tomados de m en m.
12.2 Sentencia Mientras
En la sentencia PARA, debemos conocer el nmero exacto de veces que se
deben ejecutar las sentencias del bucle. Cuando esto no es posible, debemos emplear
la sentencia MIENTRAS para conseguir ejecutar varias veces las sentencias del bucle.
En estas sentencias el nmero de iteraciones depende de la evaluacin de una
condicin.
MIENTRAS < condicin ejecucin > HACER <sentencia> CICLO
<condicin ejecucin>, es una expresin que puede tomar los valores cierto o falso.
<sentencia bucle>, es la sentencia que se debe ejecutar en el caso de que el
resultado de la evaluacin de <condicin ejecucin> sea cierto. Puede ser una
sentencia compuesta.
el CICLO indica que debe volver al punto donde se realiza la pregunta de <condicin
de ejecucin> hasta que el valor sea falso
P g i n a | 27
condicin
ejecucin
V
sentencia
bucle
Ejemplo.
12.2.1 Calcular la suma de los N primeros nmeros mltiplos de 7
Inicio
Leer N
i=0, suma=0
Mientras i<N
i=i+1
suma=suma+(i*7)
Ciclo
vuelve al paso 4 hasta que la pregunta N/2<2 sea falso
Mostrar: suma
Fin
P g i n a | 28
12.2.4 Programa Visual Basic: suma de N mltiplos de 7
Nota: Se necesita: 2 TextBox, 1 CommandButton
.
Private Sub Command1_Click()
Dim N As Single
N = Val(Text1.Text)
i=0
suma = 0
Do While i < N
i=i+1
suma = suma + (i * 7)
Loop
Text2.Text = suma
End Sub
.
12.2.5 Ejercicios de aplicacin
a) Obtener el mximo comn divisor por resta reiterada de 2 nmeros.
b) Imprimir los trminos de la serie Fibonacci menores que N.
12.3 Sentencia REPETIR (HASTA)
En la sentencia MIENTRAS, la condicin de ejecucin del bucle se verifica antes
de haber ejecutado este por primera vez. Por tanto, es necesario inicializar las
variables empleadas para determinar su ejecucin antes de entrar por primera vez a
ste, lo cual puede tener como consecuencia que el bucle no llegue a ejecutarse nunca.
Si queremos evitar ambas cosas, es decir:
tener que inicializar las variables de control de bucle y
ejecutar al menos una vez el bucle,
debemos emplear la sentencia REPETIR. En esta sentencia, el nmero de interacciones
depende de la evaluacin de una condicin, como en la de MIENTRAS, pero esta
evaluacin se realiza despus de cada ejecucin del bucle.
Hacer <sentencia de bucle> Hasta <condicin>
P g i n a | 29
<sentencia bucle>, es la sentencia que se debe volver a ejecutar en el caso de que
el resultado de la evaluacin de <condicin> sea falso. Puede ser una sentencia
compuesta.
<condicin>, es una expresin que puede tomas los valores cierto o falso.
Ejemplo.
12.3.1 Dado el Factorial, encontrar el nmero ms prximo que da tal valor.
12.3.2 Algoritmo: qu nmero da el factorial?
1. Inicio
2. Leer Factorial
3. i=1, fact=1
4. Hacer
5. i=i+1
6. fact=fact*i
7. Hasta fact<=Factorial
8. Si fact= Factorial Entonces
9. Mostrar: i
10. Caso contrario
11. Mostrar: ninguno
12. Fin decisin
13.Fin
P g i n a | 30
12.3.2 Diagrama de flujo: qu nmero da el factorial?
P g i n a | 31
i=0
fact = 1
Do
i=i+1
fact = fact * i
Loop Until fact >= Factorial
If fact = Factorial Then
Text2.Text = i
Else
Text2.Text = "ninguno"
End If
End Sub
..
12.2.5 Ejercicios de aplicacin
a) Convertir un nmero de base octal a base decimal.
b) Imprimir los trminos de la serie Fibonacci menores que N.
13. APLICACIN.Ejemplo.13.1 Determinar la cantidad de dgitos que posee un nmero n.
13.1.1 Algoritmo: Cantidad de dgitos que posee un nmero n.
1.
2.
3.
4.
5.
6.
7.
8.
9.
Inicio
Leer n
dgitos=0
Hacer
dgitos=dgitos+1
n=(n Cociente 10)
Hasta n=0
Mostrar: dgitos
Fin
P g i n a | 32
13.1.2 Diagrama de flujo: Cantidad de dgitos que posee un nmero n.
P g i n a | 33
Ejemplo.
13.2 Cambio de base decimal a base binaria.
13.2.1 Algoritmo: Cambio de base decimal a base binaria.
1. Inicio
2. Leer N
3. i= -1, Base =0
4. Hacer mientras N>2
5. C=N Residuo 2
6. Base=Base+(C*10^(1+i))
7. i=i+1
8. N=N Cociente 2
9. Ciclo
10.Base=Base+(N Residuo 2)*10^(1+i)
11.Mostrar Base
12.Fin
P g i n a | 34
13.2.3 Cdigo Visual Basic: Cambio de base decimal a base binaria.
Nota.- Se necesita: 2 TextBox, 1 CommandButton
Ejemplo.
13.3 Realizar el algoritmo, diagrama de flujo y cdigo para mostrar si un nmero es
primo no.
13.3.1 Algoritmo: Es nmero primo?
1.
2.
3.
4.
5.
6.
7.
8.
9.
Inicio
Leer n
Para i = 1 Hasta n
Si n Residuo i=0 Entonces
temp=temp+1
Fin condicin
Siguiente i
Si temp > 2 Entonces
Mostrar No es primo
P g i n a | 35
10. Caso contrario: Mostrar Es primo
11. Fin condicin
12.Fin
13.3.2 Diagrama de flujo: Es nmero primo?
P g i n a | 36
For i = 1 To n
If n Mod i = 0 Then
temp = 1 + temp
End If
Next i
If temp > 2 Then
MsgBox "no es primo"
Else
MsgBox "Es primo"
End If
End Sub
..
Ejemplo.13.4 Realizar el algoritmo, diagrama de flujo y cdigo para determinar el mximo
comn divisor de n nmeros.
13.4.1 Algoritmo: Mximo comn divisor de n nmeros.
1. Inicio
2. Leer n
3. MCD=1
4. Para i= 1 Hasta n
5. Leer a(i)
6. Siguiente i
7. Para i= 1 Hasta a(1)
8. Para j=2 Hasta n
9. Si a(j) Residuo i=0 Entonces
10. cont=cont+1
11. Fin condicin
12. Siguiente j
13. Si cont=n-1 Entonces
14. MCD=i
15. Fin condicin
16. cont=0
17. Siguiente i
18. Mostrar MCD
19.Fin
P g i n a | 37
13.4.2 Diagrama de flujo: Mximo comn divisor de n nmeros.
P g i n a | 38
13.4.3 Cdigo Visual Basic: Mximo comn divisor de n nmeros.
Nota.- Se necesita: 2 TextBox, 1 CommandButton
P g i n a | 39
14 Mtodos Numricos
14.1 Introduccin.
Se presentan algunas de las tecinas comunes para realizar clculos numricos
sin mayor rigor matemtico, con el objetivo de hacer referencias a ellas en el resto de
los captulos donde ello sea necesario, y para que el lector interesado
tenga conocimiento de la existencia de estos mtodos.
14.1.2 Integracin numrica.
14.1.3 El rea bajo una curva.
Si se tiene una funcin y = f(x), el problema de determinar el rea entre la
curva representativa de la funcin y el eje X, entre los valores x1 y x2 conduce al
concepto de integral. Una aproximacin a la solucin de este problema consiste en
aproximar el rea por una suma de rectngulos como se indica en la figura.
Si el intervalo de x1 a x2 lo llenamos con N rectngulos que lleguen hasta
la curva, entonces los anchos de los rectngulos sern
2
P g i n a | 40
14.2 Mtodo de los rectngulos:
Sea f(x) en el intervalo [a, b], con sub intervalos [
aproximada A de f(x) presenta la siguiente frmula.
1 ], entonces el rea
Ejemplo:
14.2.1 Realizar el algoritmo, diagrama de flujo y cdigo del mtodo de rectngulos
14.2.2 Algoritmo. Mtodo de los rectngulos
1. Inicio
2. Definir funcin Y=x^3
3. Leer a, b, n
4. S=0, h=(b-a)/n
5. Para i= 0 Hasta (n-1)
6. S= Y(a+i*h)+S
7. Siguiente i
8. rea=S*h
9. Mostrar rea
10.Fin
14.2.3 Diagrama de flujo: Mtodo de los rectngulos
P g i n a | 41
ix
1 ], entonces el rea
f x
P g i n a | 42
Ejemplo:
14.3.1 Realizar el algoritmo, diagrama de flujo y cdigo del mtodo de la suma de
trapecios
14.3.2 Algoritmo. Mtodo de la suma de trapecios.
1. Inicio
2. Definir funcin Y=x^3
3. Leer a, b, n
4. S1=0, S2=0, h=(b-a)/n
5. Para i= 1 Hasta (n-1)
6. S= Y(a+i*h)+S
7. Siguiente i
8. rea=h/2*(Y(a)+2*S+Y(b))
9. Mostrar rea
10.Fin
14.3.3 Diagrama de flujo: Mtodo de la suma de trapecios.
P g i n a | 43
14.3.4 Cdigo Visual Basic: Mtodo de la suma de trapecios.
Nota.- Se necesita: 4 TextBox, 1 CommandButton
.
Public Function Y(x As Single)
Y=x^3
End Function
Private Sub CommandButton1_Click()
Dim a As Single
Dim b As Single
Dim n As Single
a = Val(Text1.Text)
b = Val(Text2.Text)
n = Val(Text3.Text)
S=0
h = (b - a) / n
For i = 1 To (n - 1)
S = S + (2 * Y(a + (i * h)))
Next i
rea = (Y(a) + Y(b) + S) * h / 2
Text4.Text = rea
End Sub
..
14.4 Mtodo de Simpson 1/3 (frmula parablica):
Sea f(x) una funcin continua en [a, b], una vez generada ste intervalo como unin
de subintervalos con la misma longitud h, esta vez se considerar el ajuste a la funcin
mediante parbolas, dando el rea total la suma de dichas parbolas, tomando
siempre n par.
Donde n es par
P g i n a | 44
Ejemplo
14.4.1Realizar el algoritmo, diagrama de flujo y cdigo del mtodo de Simpson1/3.
14.4.2 Algoritmo: Mtodo de Simpson 1/3.
1. Inicio
2. Definir funcin Y=x^3
3. Leer a, b, n
4. S1=0, S2=0, h=(b-a)/n
5. Para i= 1 Hasta n : Salto 2
6. S1= Y(a+i*h)+S1
7. Siguiente i
8. Para j= 2 Hasta (n-1) :Salto 2
9. S2= Y(a+j*h)+S2
10. Siguiente j
11. rea=h/3*(Y(a)+4*SI+2*S2+Y(b))
12. Mostrar rea
13.Fin
14.4.4 Diagrama de flujo: Mtodo de Simpson 1/3.
P g i n a | 45
Para ecuaciones de tercer y cuarto orden hay tambin frmulas, pero que son
complicadas. Si f es un polinomio de grado 5 o superior no existe tal frmula.
Asimismo no hay frmulas que nos permitan encontrar races exactas de ecuaciones
trascendentales tales como cos x = x. Mtodos que permitan encontrar aproximaciones
para las races de ecuaciones se han desarrollado.
P g i n a | 46
15.1 Mtodo de la Biseccin
Sea f(x) una funcin (ecuacin) con raz en (a, b), esto significa que f(a)>0 y
f(b)<0 f(a)<0 y f(b)>0, adems f(x) continuo.
Bajo esta hiptesis, se considera reiterativa la mitad del intervalo con las condiciones
ya mencionadas.
<0
Ejemplo
15.1.1 Realizar el algoritmo, diagrama de flujo, cdigo del mtodo de la Biseccin.
15.1.2 Algoritmo: Mtodo de la Biseccin.
1. Inicio
2. Definir funcin Y=x^2-2
3. Leer a, b, n
4. Si Y(a)*Y(b)<0 Entonces
5.
Para i= 1 Hasta n
6.
c=(a+b)/2
7.
Si Y(a)*Y(c)<0 Entonces
8.
b=c
9.
Caso contrario
10.
a=c
11.
Fin condicin
12. Siguiente i
13. Mostrar c
14. Caso contrario: No existe raz o hay ms de una raz
15. Fin condicin
16.Fin
P g i n a | 47
P g i n a | 48
Dim n As Double
Dim c As Double
a = Val(Text1.Text)
b = Val(Text2.Text)
n = Val(Text3.Text)
If Y(a) * Y(b) < 0 Then
For i = 1 To n
c = (a + b) / 2
If Y(a) * Y(c) < 0 Then
b=c
Else
a=c
End If
Next i
Text4.Text = c
Else
MsgBox "no tiene raz en ese intervalo"
End If
End Sub
..
P g i n a | 49
Este proceso debe ser repetido hasta alcanzar la precisin deseada, eligiendo
entre nuevos valores inciales, (a, c) o (c, b) segn en cual pareja hay cambio
de signo de la funcin.
Ejemplo.15.2.1 Realizar el algoritmo, diagrama de flujo, cdigo del mtodo de la Secante.
15.2.2 Algoritmo: Mtodo de la Secante.
1.
2.
3.
4.
5.
Inicio
Definir funcin Y=x^2-2
Leer a, b, n
Si Y(a)*Y(b)<0 Entonces
Para i= 1 Hasta n
6.
c=
a * Y (b) b * Y (a)
Y (b) Y (a)
7. a=b, b=c
8. Siguiente i
9. Mostrar c
10. Caso contrario: No existe raz o hay ms de una raz
11. Fin condicin
12.Fin
P g i n a | 50
15.2.3 Diagrama de flujo: Mtodo de la Secante.
P g i n a | 51
a = Val(Text1.Text)
b = Val(Text2.Text)
n = Val(Text3.Text)
If Y(a) * Y(b) < 0 Then
For i = 1 To n
c = ((a * Y(b)) - (b * Y(a))) / (Y(b) - Y(a))
a=b
b=c
Next i
Text4.Text = c
Else
MsgBox "no hay raiz"
End If
End Sub
..
15.3 Mtodo de la Falsa Posicin.
Para encontrar la raz aproximada de f(x) continua y con presencia de una raz
se itera como con el mtodo de la biseccin, usando la regla de f(a) * f(b)<0, y
utilizando la iteracin del mtodo de la Secante.
.
y en cada iteracin
0.
Ejemplo
15.3.1 Realizar el algoritmo, diagrama de flujo, cdigo del mtodo de la Falsa
Posicin.
15.3.2 Algoritmo: Mtodo de la Falsa Posicin.
1.
2.
3.
4.
5.
Inicio
Definir funcin Y=x^2-2
Leer a, b, n
Si Y(a)*Y(b)<0 Entonces
Para i= 1 Hasta n
6.
c=
a * Y (b) b * Y (a)
Y (b) Y (a)
7. Si Y(a)*Y(c)<0 Entonces
8. a=c
9. Caso contrario
10. b=c
11. Fin condicin
12. Siguiente i
13. Mostrar c
14. Caso contrario: No existe raz o hay ms de una raz
15. Fin condicin
16.Fin
P g i n a | 52
15.3.3 Diagrama de flujo: Mtodo de la Falsa Posicin.
Para i= 1 Hasta n
INICIO
Y=x^2-2
Y(a)*^Y(c)<0
a, b, n
No
No
Y(a)*Y(b)<0
No existe raz o
hay mas de una
raz
Si
a=c
b=c
Si
Mostrar
c
FIN
a As Double
b As Double
n As Double
c As Double
a = Val(Text1.Text)
b = Val(Text2.Text)
n = Val(Text3.Text)
P g i n a | 53
If Y(a) * Y(b) < 0 Then
For i = 1 To n
c = ((a * Y(b)) - (b * Y(a))) / (Y(b) - Y(a))
If Y(a) * Y(c) < 0 Then
b=c
Else
a=c
End If
Next i
Text4.Text = c
Else
MsgBox "no hay raiz"
End If
End Sub
.
15.4 Mtodo de Newton-Raphson
El mtodo de Newton se basa en la observacin de que la lnea tangente es una
buena aproximacin local a una funcin. Sea (x0; f(x0)) un punto de la curva. La lnea
tangente en ese punto ser
0
0 .
0
Esta lnea cruza el eje-x donde y = 0. El valor de x ser
0
.
0
0
En general, dada una aproximacin xn a una raz de la funcin f(x), la lnea tangente
cruza el eje x donde
n
Dado x0, el mtodo de Newton produce una lista x1, x2, , xn de aproximaciones al
cero de f.
En los grficos que siguen, f(x) = x - x3, x0 = 0.44, x1 -0.41,x2 0.27, y x3 -0.048.
P g i n a | 54
Ejemplo:
15.4.1 Realizar el algoritmo, diagrama de flujo, cdigo del mtodo de NewtonRaphson.
15.4.2 Algoritmo: Mtodo de Newton-Raphson.
1.
2.
3.
4.
Inicio
Definir funcin Y=x^2-2
Leer x, n
Para i = 1 Hasta n
5.
x = x
Y ( x)
dY ( x)
6. Siguiente i
7. Mostrar x
8. Fin
15.4.3 Diagrama de flujo: Mtodo de Newton-Raphson.
P g i n a | 55
16. Vectores
Un vector es una estructura de datos en la que podemos almacenar un
determinado nmero de datos, todos ellos del mismo tipo, ordenados en una sola
dimensin.
<nombrevector>(<tipondice>)
<nombre>, es el nombre de la variable tipo vector.
P g i n a | 56
(<tipondice>), indica el elemento concreto del vector con el que queremos operar.
Con los elementos de un vector podemos realizar cualquier operacin permitida con la
variable de su tipo, es decir, del tipo bsico del vector.
Ejemplo.
16.1 Sacar el promedio de N nmeros
16.1.1 Algoritmo: Promedio
1. Inicio
2. Leer N
3. Suma=0
4. Para i= 1 Hasta N
5. Leer x(i)
6. Suma=Suma +x(i)
7. Siguiente i
8. Promedio=Suma/N
9. Mostrar Promedio
10.Fin
16.1.2 Diagrama de flujo: Promedio
INICIO
Suma=0
Para i= 1 Hasta N
x(i)
Promedio = Suma/ N
Promedio
FIN
P g i n a | 57
16.1.3 Programa Visual Basic: Promedio
Nota.- Se necesita: 2 TextBox, 1 CommandButton
.
Private Sub Command1_Click()
Dim N As Single
Dim x(1 to 50) As Double
N = Val(Text1.Text)
For i = 1 To N
x(i) = InputBox("leer nmero")
Suma = Suma + x(i)
Next
Promedio = Suma / N
Text2.Text = Promedio
End Sub
-----------------------------------Ejemplo 2----------------------------------------16.2 Programa Excel: Promedio de una lista de cantidad no definida
Sub promedio()
suma = 0
i=1
If Cells(1, 2) = "" Then
MsgBox ("la lista esta vaca")
Else
Do
i=i+1
suma = suma + Cells(1, i)
Loop Until Cells(1, i) = ""
Range("B3") = suma / (i - 2)
P g i n a | 58
End If
Cells(1, i) = ">"
End Sub
..
Ejemplo.
16.3 Realizar el algoritmo, diagrama de flujo, y cdigo para ordenar nmeros de forma
ascendente.
1. Inicio
2. Leer n
3. Para i= 1 Hasta n
4. Leer a(i)
5. Siguiente i
6. Para i = 1 Hasta (n-1)
7. Para j= (i+1) Hasta n
8. Si a(i)>a(j) Entonces
9. temp=a(i)
10. a(i)=a(j)
11. a(j)=temp
12. Fin condicin
13. Siguiente j
14. Siguiente i
15. Para i= 1 Hasta n
16. Mostrar a(i)
17. Siguiente i
18.Fin
P g i n a | 59
P g i n a | 60
P g i n a | 61
17. Matrices
Por matriz entenderemos una estructura de datos en la que podemos almacenar
tantos datos como queramos, todos ellos del mismo tipo, el tipo bsico, ordenados en
cualquier nmero de dimensiones, podemos decir que es una generalizacin del tipo
vector, aunque, como veremos, es mucho ms lgico pensar que los vectores son un
caso particular de una matriz.
Las matrices se declaran empleando una sintaxis muy similar a la de los vectores,
aadiendo simplemente tantos rangos de valores como dimensiones tenga la
estructura matricial que estemos definiendo:
<nombre>(<ndice1,ndice2,>)
<nombre>, es el nombre de la variable tipo matriz.
(<ndice1,ndice2,>), indica el elemento concreto de la matriz con el que
queremos operar.
As pues, una matriz bidimensional (de dos dimensiones) tendr dos rangos de valores
MATRIZ(indice1,indice2), una tridimensional tres MATRIZ(indice1, indice2,
indice3),etc., todos ellos separados por comas.
Ejemplo.17.1 Producto de 2 matrices.
17.1.1 Algoritmo: Producto de 2 matrices.
1. Inicio
2. Leer m, n; p ,q
3. Si n= p Entonces
4. Para i= 1 Hasta m
5. Para j= 1 Hasta n
6. Leer mtrz1(i,j)
7. Siguiente j
8. Siguiente i
9. Para i= 1 Hasta p
10. Para j= 1 Hasta q
11. Leer mtrz2(i,j)
12. Siguiente j
13. Siguiente i
14. Para i= 1 Hasta m
15. Para j= 1 Hasta q
16. Para k= 1 Hasta n
17. mtrz3(i, j) = mtrz3(i, j) + mtrz1(i, k) * mtrz2(k, j)
18. Siguiente k
P g i n a | 62
19. Siguiente j
20. Siguiente i
21. Para i= 1 Hasta m
22. Para j= 1 Hasta q
23. Mostrar: mtrz3(i,j)
24. Siguiente j
25. Siguiente i
26. Caso contrario: No est definida
27. Fin condicin
28.FIN
17.1.2 Diagrama de flujo: Producto de 2 matrices.
P g i n a | 63
P g i n a | 64
Next j
Next i
Escritura del resultado
For i = 1 To m
For j = 1 To q
MSFlexGrid1.TextMatrix(i, j) = mtrz3(i, j)
Next j
Next i
Else
MsgBox ("no esta definido")
End If
End Sub
P g i n a | 65
18. Bibliografa
-Algoritmos y diagramacin
y propagacin.
Josep Sarrate-Ramos
Antonio Rodrguez-Ferran
Primero.