Você está na página 1de 79

Algortmica y

Programacin
(Gua de apuntes)

UNIVERSIDAD AUTNOMA TOMS FRAS

Facultad de Ingeniera Civil

INFORMTICA

MAT-205
Auxiliar. Marco Antonio Velsquez Azurduy

Segunda Edicin 2011


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

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


2

11.1.4 Programa Visual Basic: Mximo de tres nmeros.18

11.2 Condicionales Dobles......19

11.2.1 Indicar si un nmero x es par o impar.20

11.2.2 Algoritmo: Nmero par? ....20

11.2.3 Diagrama de flujo: Nmero par? ...20

11.2.4 Programa Visual Basic: Nmero par? .20


11.3 Condicionales Mltiples....21
11.3.1 Ecuacin de 2 grado. ......22
11.3.2 Algoritmo: Ecuacin de 2 grado. .....22
11.3.3 Diagrama de Flujo: Ecuacin de 2 grado. ....22
11.3.4 Programa Visual Basic: Ecuacin de 2 grado. 23

12 Estructuras Cclicas..24

12.1 Sentencia PARA.24

12.1.1 Calcular el factorial de un nmero x..25

12.1.2 Algoritmo: Factorial....25


12.1.3 Diagrama de flujo: Factorial..........25
12.1.4 Programa Visual Basic: Factorial...26
12.2 Sentencia Mientras....26
12.2.1 Calcular la suma de los N primeros nmeros mltiplos de 7... .........27
12.2.2 Algoritmo: suma de N mltiplos de 7.....27
12.2.3 Diagrama de Flujo: suma de N mltiplos de 7...27
12.2.4 Programa Visual Basic: suma de N mltiplos de 7.....28
12.3 Sentencia REPETIR (HASTA) ....28
12.3.1 Dado el Factorial, encontrar el nmero ms prximo que da tal valor...29
12.3.2 Algoritmo: qu nmero da el factorial? ..29
12.3.2 Diagrama de flujo: qu nmero da el factorial? .30
12.3.3 Programa Visual Basic: qu nmero da el factorial?........... .......30
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
3

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
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
4

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. Extras.65

18.1 Integracin; Caso Discreto (Mtodo de los Trapecios) Programacin en Ecxel.65


18.2 Integracin; Caso Continuo (Mtodo Simpson 1/3) Programacin en Excel.65
18.3 Raz de una Funcin (Mtodo de la Secante) Programacin en Excel.66

18.4. Tiro parablico, Programacin Visual Basic67


18.5 Ajuste lineal (Ecuacin de Segundo grado), Programacin Visual Basic..68

19.Programas Hp (Aplicacin Mtodos Numricos) 70

19.1Rraices de una ecuacin71

19.1.1 Mtodo de la biseccin....72

19.1.2 Mtodo de la falsa posicin....72

19.1.2 Mtodo de newton raphson......73

19.1.3 Mtodo de la secante... ...73

19.2 Integracin........74

19.2.1 Caso continuo ........74

19.2.2 Caso discreto....74

19.3 Ajuste lineal por mnimos cuadrados: pseudo inversa....75

20. Bibliografa.77
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).
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:


7

Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente


entendibles por la computadora y no necesitan traduccin posterior para que la
CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje
maquina se expresan en trminos de la unidad de memoria ms pequea el bit
(dgito binario 0 o 1).
Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se
escriben en cdigos alfabticos conocidos como mnemotcnicos para las
operaciones y direcciones simblicas.
Lenguaje de Alto Nivel: Los lenguajes de programacin de alto nivel (BASIC,
pascal, cobol, fortran, etc.) son aquellos en los que las instrucciones o
sentencias a la computadora son escritas con palabras similares a los lenguajes
humanos (en general en ingles), lo que facilita la escritura y comprensin del
programa.

4. Algoritmo y sus tipos

La palabra algoritmo se deriva de la traduccin al latn de la palabra rabe


Alkhowarizmi, nombre de un matemtico y astrnomo rabe que escribi un tratado
sobre manipulacin de nmeros y ecuaciones en el siglo IX.

Un algoritmo es una serie de pasos organizados que describe el proceso que se


debe seguir, para dar solucin a un problema especfico.

4.1 Tipos de Algoritmos

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.

4.2 Lenguajes Algortmicos

Es una serie de smbolos y reglas que se utilizan para describir de manera explcita
un proceso. De los cuales se encuentran los siguientes tipos de Lenguajes
Algortmicos:

Grficos: Es la representacin grfica de las operaciones que realiza un


algoritmo (diagrama de flujo).
No Grficos: Representa en forma descriptiva las operaciones que debe realizar
un algoritmo (pseudocdigo).

5. Metodologa para la solucin de problemas por medio de computadora

Definicin del Problema: Esta fase est dada por el enunciado del problema, el
cual requiere una definicin clara y precisa. Es importante que se conozca lo que se
desea que realice la computadora; mientras esto no se conozca del todo no tiene
mucho caso continuar con la siguiente etapa.

Anlisis del Problema: Una vez que se ha comprendido lo que se desea de la


computadora, es necesario definir:

Los datos de entrada.


8

Cul es la informacin que se desea producir (salida)


Los mtodos y frmulas que se necesitan para procesar los datos.

Una recomendacin muy practica es el que nos pongamos en el lugar de la


computadora y analicemos que es lo que necesitamos que nos ordenen y en que
secuencia para producir los resultados esperados.

Diseo del Algoritmo: Las caractersticas de un buen algoritmo son:

Debe tener un punto particular de inicio.


Debe ser definido, no debe permitir dobles interpretaciones.
Debe ser general, es decir, soportar la mayora de las variantes que se puedan
presentar en la definicin del problema.
Debe ser finito en tamao y tiempo de ejecucin.

Codificacin: La codificacin es la operacin de escribir la solucin del problema (de


acuerdo a la lgica del diagrama de flujo o pseudocdigo), en una serie de
instrucciones detalladas, en un cdigo reconocible por la computadora, la serie de
instrucciones detalladas se le conoce como cdigo fuente, el cual se escribe en un
lenguaje de programacin o lenguaje de alto nivel.

Prueba y Depuracin: Los errores humanos dentro de la programacin de


computadoras son muchos y aumentan considerablemente con la complejidad del
problema. El proceso de identificar y eliminar errores, para dar paso a una solucin sin
errores se le llama depuracin. La depuracin o prueba resulta una tarea tan creativa
como el mismo desarrollo de la solucin, por ello se debe considerar con el mismo
inters y entusiasmo. Resulta conveniente observar los siguientes principios al realizar
una depuracin, ya que de este trabajo depende el xito de nuestra solucin.

Documentacin: Es la gua o comunicacin escrita es sus variadas formas, ya sea en


enunciados, procedimientos, dibujos o diagramas. A menudo un programa escrito por
una persona, es usado por otra. Por ello la documentacin sirve para ayudar a
comprender o usar un programa o para facilitar futuras modificaciones
(mantenimiento). La documentacin se divide en tres partes:

Documentacin Interna: Son los comentarios o mensaje que se aaden al


cdigo fuente para hacer ms claro el entendimiento de un proceso.
Documentacin Externa : Se define en un documento escrito los siguientes
puntos:
o Descripcin del Problema
o Nombre del Autor
o Algoritmo (diagrama de flujo o pseudocdigo)
o Diccionario de Datos
o Cdigo Fuente (programa)
Manual del Usuario: Describe paso a paso la manera como funciona el
programa, con el fin de que el usuario obtenga el resultado deseado.

Mantenimiento: Se lleva a cabo despus de terminado el programa, cuando se detecta


que es necesario hacer algn cambio, ajuste o complementacin al programa para que
siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el
programa este correctamente documentado.
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.

Se utiliza para representar los subprogramas.

Indica la entrada y salida de datos.

Smbolo de proceso y nos indica la asignacin de un


valor en la memoria y/o la ejecucin de una operacin
aritmtica.

Smbolo de decisin indica la realizacin de una comparacin


de valores.

Smbolo de bucle con rangos para un ciclo definido

Conector dentro de pgina.

Conector fuera de pgina.

Indica la salida de informacin.

Lneas de flujo o direccin.


10

Recomendaciones para el diseo de Diagramas de Flujo

Se deben se usar solamente lneas de flujo horizontal y/o vertical.


Se debe evitar el cruce de lneas utilizando los conectores.
Se deben usar conectores solo cuando sea necesario.
No deben quedar lneas de flujo son conectar.
Se deben trazar los smbolos de manera que se puedan leer de arriba hacia
abajo y de izquierda a derecha.
Todo texto escrito dentro de un smbolo deber ser escrito claramente, evitando
el uso de muchas palabras.

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

Ocupa menos espacio en una hoja de papel


Permite representar en forma fcil operaciones repetitivas complejas
Es muy fcil pasar de pseudocdigo a un programa en algn lenguaje de
programacin.
Si se siguen las reglas se puede observar claramente los niveles que tiene cada
operacin.

8. Lenguaje Visual Basic

Como se menciono anteriormente es necesario el manejo de un lenguaje el cual


nos ayude a la codificacin de los programas, por tanto nuestro lenguaje de
programacin ser el Visual Basic, el cual trabaja en un entorno visual y de fcil
manejo, lo cual nos llevar seguidamente a la manipulacin de los macros en Excel,
que simple mente trabaja con el mismo lenguaje que es el Visual Basic.

8.1 Tipos, declaraciones y alcances de las variables

8.1.1 Qu son las variables

En cualquier programa necesitamos hacer clculos, usar informacin, procesarla


y mostrarla. En la mayora de los casos, necesitamos un lugar temporal en el cual
guardar parte de esa informacin, incluso toda.

Es aqu donde entran en juego las variables, las que nos permite guardar datos
en memoria, para que cuando los necesitemos, podamos tomarlos, modificarlos y
volverlos a guardar para usar mas tarde.
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 Slo admite 2 valores TRUE o FALSE

BYTE admite valores entre 0 y 255

INTEGER admite valores entre -32768 y 32767


12

admite valores entre -2.147.483.648 y


LONG
2.147.483.647

admite valores decimales con precisin


SINGLE
simple

admite valores decimales de doble


DOUBLE
precisin

CURRENCY vlido para valores de tipo moneda

STRING cadenas de caracteres

Variant Admite cualquier tipo de datos

DATE fechas, permite operar con ellas

8.3 Declaracin de Constantes

Como su palabra lo dice es Informacin que no vara hace ms fcil la


comprensin del cdigo y permite modificar un valor en un solo lugar no ocupa espacio
extra, Ejemplo:

Mnimo = 1, Mximo = 10

3 Entradas y salidas con Texbox

Texbox() Se introduce en este cuadro la informacin, que puede ser usada


como de entrada de datos o de salida.
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)
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.

9. Estructuras algortmicas y de programacin

Las estructuras de operacin de programas son un grupo de formas de trabajo,


que permiten, mediante la manipulacin de variables, realizar ciertos procesos
especficos que nos lleven a la solucin de problemas, resumiendo a tres simples pero
importantes tipos de estructuras:

- Estructura Secuencial
- Estructura de Condicionales
- Estructuras Cclicas

10. Estructuras Secuenciales

La estructura secuencial es aquella en la que una accin (instruccin) sigue a


otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la
entrada de la siguiente y as sucesivamente hasta el fin del proceso. Una estructura
secuencial se representa de la siguiente forma:

Inicio
Accion1
Accion2
.
.
AccionN
Fin
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 Simples: Consiste en pasar un valor constate a una variable (a=15)


o Contador: Consiste en usarla como un verificador del nmero de veces
que se realiza un proceso (a=a+1)
o Acumulador: Consiste en usarla como un sumador en un proceso
(a=a+b)
o De trabajo: Donde puede recibir el resultado de una operacin
matemtica que involucre muchas variables (a=c+b*2/4).

a=c+b*2/4

Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora)


un resultado o mensaje. Este proceso se representa en un pseudocdigo como sigue:
Escribe El resultado es:, R
Donde El resultado es: es un mensaje que se desea aparezca y R es una variable que
contiene un valor.

Ejemplo.-

10.1 Calcular el rea de un crculo.

10.1.1 Algoritmo: rea de un crculo

1. Inicio
2. Leer R
3. pi= 3.1415927
4. rea= pi*R^2
5. Escribir rea
6. Fin
16

10.1.2 Diagrama de flujo: rea de un Crculo

INICIO

Leer R

pi=3.1415927

Area=pi*R^2

Area

FIN

10.1.3 Cdigo Visual Basic: rea de un crculo

Nota.- Se necesita: 2 TextBox, 1 CommandButton

..

Private Sub Command1_Click()

Dim R As Single

R = Val(Text1.Text)

pi = 3.1415927

Area = pi * R ^ 2

Text2.Text = Area

End Sub

..

10.1.4 Ejercicios de aplicacin.

a) Convertir una hora expresada en segundos a horas, minutos y segundos.

b) Convertir un nmero complejo de su forma polar a cartesiana.


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.

11.1 Condicionales Simples

Las estructuras condicionales simples se les conocen como Tomas de


decisin. Estas tomas de decisin tienen la siguiente forma:
Si <condicin> entonces
Accin(es)
Fin-decisin

V
<Condicin> Tareas

Ejemplo.-

11.1.1 Determinar el mximo de tres nmeros.

11.1.2 Algoritmo: Mximo de tres nmeros

1. Inicio
2. Leer I, J, K
3. MAX= I
4. SI J>MAX ENTONCES
5. MAX=J
6. Fin condicin
7. SI K>MAX ENTONCES
8. MAX=K
9. Fin decisin
10. Escribir MAX
11. Fin.
18

11.1.2 Diagrama de Flujo: Mximo de tres nmeros

11.1.3 Programa Visual Basic: Mximo de tres nmeros

Nota.- (Se necesita: 4 TextBox,1 CommandButton)

..

Private Sub Command1_Click()

Dim i As Single

Dim j As Single

Dim k As Single

i = Val(Text1.Text)

j = Val(Text2.Text)
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 V
Tareas Condicin Tareas
20

Ejemplo.-

11.2.1 Indicar si un nmero x es par o impar

11.2.2 Algoritmo: Nmero par?

1. Inicio
2. Leer x
3. SI x RESIDUO 2 = 0 ENTONCES
4. Escribir x es par
5. Caso contrario
6. Escribir x es impar
7. Fin decisin
8. Fin

11.2.3 Diagrama de flujo: Nmero par?

11.2.4 Programa Visual Basic: Nmero par?

Nota.- Se necesita: 2TextBox,1 CommandButton

..

Private Sub Command1_Click()

Dim x As Single

x = Val(Text1.Text)

If x Mod 2 = 0 Then

Text2.Text = "es par"


21

Else

Text2.Text = "es impar"

End If

End Sub

..

11.2.5 Ejercicios de aplicacin

a) Determinar si un nmero N es mltiplo de un nmero n.

b) Determinar si un nmero es entero o es un nmero con parte decimal.

11.3 Condicionales Mltiples

Las estructuras de comparacin mltiples, son tomas de decisin especializada


que permiten comparar unas variables con otras distintas posibles resultados,
ejecutando para cada caso una serie de instrucciones especficas.

Seleccionar Caso <expresin_prueba>


[Caso lista_expresiones1
<bloque de sentencias 1>
[Caso lista_expresiones2
<bloque de sentencias 2>
.

[Caso Contrario
<bloque de sentencias n>
Fin Caso

Caso 1 Caso 2 Caso 3 Caso 4


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. Inicio
2. Leer a, b, c.
3. Discriminante = b2 4ac
4. Seleccionar caso Discriminante
5. Caso es > 0
+
6. Mostrar:1 = , 2 =
2 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.

inicio

Leer a,b,c

discr=b^2-(4*a*c)

discr>0 disc=0 disc<0

x=-b/(a*c)
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
24

Case Is < 0

MsgBox ("no tiene sol. real")

End Select

End Sub

..

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>]

- <contador>, es la variable empleada para contabilizar las iteraciones del bucle


realizadas.
- <iniciar>, el resultado de su evaluacin determina el valor inicial, de contador,
es decir, el valor con el que se ejecutara por primera vez.
- <final>, el resultado de su evaluacin determina el valor final, de contador, es
decir, el valor con el que se ejecutar por ltima vez el bucle.
- <incremento>, determina la forma en a que se modificara contador al final de
cada ejecucin del bucle. Su valor se sumara o se restar a contador, segn
hayamos usado la palabra reservada Hasta antes de <final>, respectivamente.
La indicacin de este valor en la sentencia es opcional, caso de no indicarse, el
valor que toma por defecto es 1.
- <sentencia>, es la que constituye el denominado cuerpo del bucle. En
general ser una sentencia compuesta, es decir, que estar formada por ms
25

de una sentencia simple, aunque puede ser una sola accin, o incluso no
existir(accin nula).

Para<contador>=<iniciar>Hasta<finalizar> [Salto<incremento>]

<Sentencias>
Ejemplo.-

12.1.1 Calcular el factorial de un nmero x

12.1.2 Algoritmo: Factorial

1. Inicio
2. Leer x
3. Factorial=1
4. Para i= 1 hasta x
5. Factorial=Factorial*i
6. Siguiente i
7. Mostrar: Factorial
8. Fin

12.1.3 Diagrama de flujo: Factorial


26

INICIO

Leer
x

Factorial=1

Para i= 1 Hasta x

Factorial=Factorial*i

Mostrar
Factorial

FIN

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
27

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

F
condicin
ejecucin

sentencia
bucle

Ejemplo.

12.2.1 Calcular la suma de los N primeros nmeros mltiplos de 7

12.2.2 Algoritmo: suma de N mltiplos de 7

1. Inicio
2. Leer N
28

3. i=0, suma=0
4. Mientras i<N
5. i=i+1
6. suma=suma+(i*7)
7. Ciclo vuelve al paso 4 hasta que la pregunta N/2<2 sea falso
8. Mostrar: suma
9. Fin

11.2.3 Diagrama de Flujo: suma de N mltiplos de 7

INICIO

Leer
N

i=0, suma=0

No
i < N

Si

i=i+1
suma = suma +(i*7)

Mostrar
suma

12.2.4 Programa Visual Basic: suma de N mltiplos de 7


FIN
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)
29

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>

<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.

<sentencia
bucle>

V
<condicin>

Ejemplo.

12.3.1 Dado el Factorial, encontrar el nmero ms prximo que da tal valor.


30

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

12.3.2 Diagrama de flujo: qu nmero da el factorial?


31

INICIO

Leer
Factorial

i=1, fact=1

i= i +1
fact=fact*i

Si
fact <= Factorial

No

fact= Factorial

Si No

Mostrar Mostrar
i "no existe nmero"

FIN

12.3.3 Programa Visual Basic: qu nmero da el factorial?

Nota.- Se necesita: 2 TextBox, 1 CommandButton

..

Private Sub Command1_Click()

Dim Factorial As Single

Factorial = Val(Text1.Text)

i=0
32

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. Inicio
2. Leer n
3. dgitos=0
4. Hacer
5. dgitos=dgitos+1
6. n=(n Cociente 10)
7. Hasta n=0
8. Mostrar: dgitos
9. Fin

13.1.2 Diagrama de flujo: Cantidad de dgitos que posee un nmero n.


33

INICIO

Leer
n

dgitos=0

dgitos=dgitos+1
n=n Cociente 10

No Si
n=0

Mostrar
dgitos

13.1.3 Cdigo Visual Basic: Cantidad de dgitos que posee un nmero n.

Nota.- Se necesita: 2 TextBox, 1 CommandButton

..

Private Sub Command1_Click()

Dim n As Single

n = Val(Text1.Text)

digitos = 0

Do
digitos = digitos + 1

n = n \ 10
Loop Until n = 0

Text2.Text = digitos
End Sub

Ejemplo.
34

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

13.2.2 Diagrama de flujo: Cambio de base decimal a base binaria.

INICIO

Leer
N

i= -1
Base= 0

No
N>2 Base=Base+(N Residuo 2)*10^(1+i)

Si
C=N Residuo 2
Base=Base+(C*10^(1+i))
i=i+1
N=N Cociente 2

Base

FIN
13.2.3 Cdigo Visual Basic: Cambio de base decimal a base binaria.
35

Nota.- Se necesita: 2 TextBox, 1 CommandButton

Private Sub Command1_Click()

Dim N As Single

N = Val(Text1.Text)

i = -1

Base = 0

Do While N > 2

C = N Mod 2

Base = Base + (C * 10 ^ (1 + i))

i=i+1

N=N\2

Loop

Base = Base + (N Mod 2) * 10 ^ (1 + i)

Text2.Text = Base

End Sub

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. Inicio
2. Leer n
3. Para i = 1 Hasta n
4. Si n Residuo i=0 Entonces
5. temp=temp+1
6. Fin condicin
7. Siguiente i
8. Si temp > 2 Entonces
9. Mostrar No es primo
10. Caso contrario: Mostrar Es primo
11. Fin condicin
36

12.Fin

13.3.2 Diagrama de flujo: Es nmero primo?

INICIO

Leer
n

Para i= 1 Hasta n

No
n Residuo i=0

Si

temp= temp +1

temp > 2

Mostrar Mostrar
"No es Primo" "Es Primo"

FIN

13.3.3 Cdigo Visual Basic: Es nmero primo?

Nota.- Se necesita: 1 TextBox, 1 CommandButton

Private Sub Command1_Click()

Dim n As Single

n = Val(Text1.Text)

For i = 1 To n
37

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=1 Hasta n
9. Si a(j) Residuo i=0 Entonces
10. cont=cont+1
11. Fin condicin
12. Siguiente j
13. Si cont=n Entonces
14. MCD=i
15. Fin condicin
16. cont=0
17. Siguiente i
18. Mostrar MCD
19.Fin

13.4.2 Diagrama de flujo: Mximo comn divisor de n nmeros.

INICIO

Leer
n
38

13.4.3 Cdigo Visual Basic: Mximo comn divisor de n nmeros.


39

Nota.- Se necesita: 2 TextBox, 1 CommandButton

Private Sub Command1_Click()

Dim n As Single

Dim a(1 To 20) As Single

n = Val(Text1.Text)

MCD = 1

For i = 1 To n

a(i) = InputBox("leer Nmeros")

Next i

For i = 1 To a(1)

For j = 1 To n

If a(j) Mod i = 0 Then

cont = cont + 1

End If

Next j

If cont = n Then

MCD = i

End If

cont = 0

Next i

Text2.Text = MCD

End Sub

14 Mtodos Numricos
40

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 1
=

las abscisas de sus vrtices inferiores izquierdos sern
= 1 + ( 1); = 1, 2, . . . ,

Figura 1.1: rea bajo la curva.


o

= + ( 1) ; = 1, 2, . . . ,

Entonces el rea A ser aproximadamente




()

=1

14.2 Mtodo de los rectngulos:


41

Sea f(x) en el intervalo [a, b], con sub intervalos [ , ( + 1) ], entonces el rea
aproximada A de f(x) presenta la siguiente frmula.

() [(1 ) + (2 ) + + ( )]


=

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


INICIO

Y=x^3

a, b, n

S=0
h=(b-a)/n

Para i = 0 Hasta (n-1)

S=Y(a+i*h)+S

rea=S*h

rea

FIN

14.2.4Cdigo Visual Basic: Mtodo de los rectngulos


42

Nota.- Se necesita: 4 TextBox, 1 CommandButton

Public Function Y(x As Double)

Y=x^3

End Function

Private Sub Command1_Click()

Dim a As Double

Dim b As Double

Dim n As Double

a = Val(Text1.Text)

b = Val(Text2.Text)

n = Val(Text3.Text)

S=0

h = (b - a) / n

For I = 0 To n - 1

S = Y(a + (I * h)) + S

Next I

rea = S * h

Text4.Text = rea

End Sub

..

14.3 Mtodo de la suma de trapecios:

Sea f(x) una funcin en [a, b], con n subintervalos [xi , x(i + 1) ], entonces el rea
aproximada A de f(x) es:
b
x
f(x)dx [f(x0 ) + 2f(x1 ) + 2f(x2 ) + + 2f(xn1 ) + f(xn )]
a 2
ba
x = y xi = a + ix
n

Ejemplo:
43

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.

INICIO

Y=x^3

Leer
a, b, n

S1=0
S2=0
h=(b-a)/n

Para i= 1 Hasta (n-1)

S=S+Y(a+i*h)

rea=h/2*(Y(a)
+2*S+Y(b))

rea

FIN

14.3.4 Cdigo Visual Basic: Mtodo de la suma de trapecios.


44

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.


() [(0 ) + 4(1 ) + 2(2 ) + + 4(1 ) + ( )] Donde n es par =
3
Ejemplo

14.4.1Realizar el algoritmo, diagrama de flujo y cdigo del mtodo de Simpson1/3.


45

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.

INICIO

Y=x^3

a, b, n

S1=0
S2=0
h=(b-a)/n

Para i= 1 to n :2

S1=S1+Y(a+i*h)

Para j= 2 Hasta (n-1):2

S2=S2+Y(a+J*h)

rea=h/3*(Y(a)+4*SI+2*S2+Y(b))

Mostrar
14.4.5 Cdigo: Mtodo de Simpson 1/3. rea

FIN
46

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)
S1 = 0
S2 = 0
h = (b - a) / n
For i = 1 To n Step 2
S1 = S1 + Y(a + (i * h))
Next i

For j = 2 To (n - 1) Step 2
S2 = S2 + Y(a + (j * h))
Next j

rea = (Y(a) + Y(b) + (4 * S1) + (2 * S2)) * h /3


Text4.Text = rea

End Sub

15. Determinacin de races de ecuaciones.


Muchos problemas en ciencia e ingeniera conducen a un problema de
determinar las races de una ecuacin de la forma f(x) = 0 donde f es una funcin
diferenciable. Para una ecuacin cuadrtica ax2 +bx +c = 0 es bien conocido que:

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.

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.
47

Bajo esta hiptesis, se considera reiterativa la mitad del intervalo con las condiciones
ya mencionadas.

Figura: Mtodo de la biseccin


+
Donde = y debe cumplir que () ()<0
2

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

15.1.3 Diagrama de flujo: Mtodo de la Biseccin.


48

INICIO

Y=x^2-2

a, b, n

No No existe raz o
Y(a)*Y(b)<0 hay mas de una
raz
Si

Para i= 1 Hasta n

c=(a+b)/2

Y(a)*Y(c)< 0
No Si

a=c b=c

Mostrar
c

FIN

15.1.4 Cdigo: Mtodo de la Biseccin.

Nota.- Se necesita: 4 TextBox, 1 CommandButton

.
Public Function Y(x As Double)
Y=x^2-2
End Function
Private Sub Command1_Click()
Dim a As Double
Dim b As Double
Dim n As Double
Dim c As Double
49

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
..

15.2 Mtodo de la Secante.

La idea de este mtodo es muy simple. Si se conocen do puntos tales que


en ellos las funcin f(x) tiene diferente signo, por ejemplo f(a) < 0 y f(b) > 0, entonces
(para funciones continuas) en algn punto intermedio la funcin debe anularse. La
recta que va desde el punto (1) al punto (2) corta el eje x ms cerca de la raz
buscada, como se ilustra en la figura siguiente: Como la recta pasa por los puntos (1)
y (2) su ecuacin es (verifquelo)

() ()
= () + ( )

y el punto donde ella corta el eje x (la aproximacin) satisface

() ()
() + ( ) = 0

50

Figura 1.4: Mtodo de la secante.

de donde

= ()
() ()

() ()
=
() ()

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. 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
a * Y (b) b * Y (a)
6. c
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
51

15.2.3 Diagrama de flujo: Mtodo de la Secante.

INICIO

Y=x^2-2

a, b, n

No No existe raz o
Y(a)*Y(b)<0 hay mas de una
raz
Si

Para i= 1 Hasta n

a=b
b=c

Mostrar
c

FIN

15.2.4 Cdigo: Mtodo de la Secante.

Nota.- Se necesita: 4 TextBox, 1 CommandButton

Public Function Y(x As Double)


Y=x^2-2
End Function
Private Sub Command1_Click()
Dim a As Double
Dim b As Double
Dim n As Double
Dim c As Double

a = Val(Text1.Text)
52

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. 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
a * Y (b) b * Y (a)
6. c
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

15.3.3 Diagrama de flujo: Mtodo de la Falsa Posicin.


53

Para i= 1 Hasta n
INICIO

Y=x^2-2

a, b, n Y(a)*^Y(c)<0
No Si

No a=c b=c
No existe raz o
Y(a)*Y(b)<0 hay mas de una
raz
Si
Mostrar
A
c

FIN

15.3.4 Cdigo Visual Basic: Mtodo de la Falsa Posicin.

Nota.- Se necesita: 4 TextBox, 1 CommandButton

Public Function Y(x As Double)


Y=x^2-2
End Function
Private Sub Command1_Click()

Dim a As Double
Dim b As Double
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


54

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 + 1 = .
( )

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.

Ejemplo:
55

15.4.1 Realizar el algoritmo, diagrama de flujo, cdigo del mtodo de Newton-


Raphson.

15.4.2 Algoritmo: Mtodo de Newton-Raphson.

1. Inicio
2. Definir funcin Y=x^2-2
3. Leer x, n
4. Para i = 1 Hasta n
Y ( x)
5. x x
dY ( x)
6. Siguiente i
7. Mostrar x
8. Fin

15.4.3 Diagrama de flujo: Mtodo de Newton-Raphson.

INICIO

Y=x^2-2

x, n

Para i= 1 Hasta n

Mostrar
x

FIN
56

15.4.4 Cdigo Visual Basic: Mtodo de Newton-Raphson.


Nota.- Se necesita: 3 TextBox, 1 CommandButton

Public Function Y(x As Double)

Y=x^2-2

End Function

Public Function dY(x As Double)

dY = 2 * x

End Function

Private Sub Command1_Click()

Dim x As Double

Dim n As Double

x = Val(Text1.Text)

n = Val(Text3.Text)

s=0

For i = 1 To n

x = (x - (Y(x) / dY(x)))

Next i

Text4.Text = x

End Sub

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.

(<tipondice>), indica el elemento concreto del vector con el que queremos operar.
57

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)

Suma= Suma + x(i)

Promedio = Suma/ N

Promedio
16.1.3 Programa Visual Basic: Promedio

FIN
58

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)

End If
59

Cells(1, i) = ">"

End Sub

..

Ejemplo.

16.3 Realizar el algoritmo, diagrama de flujo, y cdigo para ordenar nmeros de forma
ascendente.

16.3.1 Algoritmo: 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
60

16.3.2 Diagrama de Flujo: Ordenar nmeros de forma ascendente.

.INICIO

Leer
n

Para i= 1 Hasta n

Leer
a(i)

Para i= 1 Hasta (n-1)

Para j= (i+1) Hasta n

Si temp=a(i)
a(i)>a(j) a(i)=a(j)
a(j)=temp
No

Para i= 1 Hasta n

Mostrar
a(i)

FIN
61

16.3.3 Cdigo Visual Basic: Ordenar nmeros de forma ascendente.

Nota.- Se necesita: 1 TextBox, 1 CommandButton, 1 MSFlexGrid

Private Sub Command1_Click()

Dim n As Single

Dim i As Single

Dim j As Single

Dim a(1 To 10) As Single

Dim temp As Single

n = Val(Text1.Text)
For i = 1 To n

a(i) = InputBox("meter numero")

Next

For i = 1 To n - 1

For j = i + 1 To n

If a(i) > a(j) Then

temp = a(i)
a(i) = a(j)

a(j) = temp
End If

Next j

Next i

For i = 1 To n

MSFlexGrid1.TextMatrix(1, i) = a(i)

Next i

End Sub

16.4 Ejercicios de aplicacin

a) Descomponer en sus factores primos un nmero n y mostrarlos en una lista.


b) Normalizar un vector de reales con el criterio de hacer su mdulo igual a 1.
62

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
19. Siguiente j
20. Siguiente i
63

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.

A
INICIO

Para i= 1 Hasta m
Leer
m,n; p,q

No Para j= 1 Hasta q
Mostrar
n=p
"No esta definido"

Si

Para k= 1 Hasta n
Para i= 1 Hasta m

mtrz3(i, j) = mtrz3(i, j) + mtrz1(i, k) * mtrz2(k, j)


Para j= 1 Hasta n

Leer
mtrz1(i,j)

Para i = 1 Hasta m

Para i= 1 Hasta p
Para j= 1 Hasta q

Para j= 1 Hasta q
Mostrar
mtrz3(i,j)

Leer
mtrz2(i,j)
FIN

A
64

17.1.3 Cdigo Visual Basic: Producto de 2 matrices.

Nota.- Se necesita: 4 TextBox, 1 CommandButton, 1 MSFlexGrid

..

Private Sub Command1_Click()


Dim mtrz1(1 To 30, 1 To 30) As Double
Dim mtrz2(1 To 30, 1 To 30) As Double
Dim mtrz3(1 To 30, 1 To 30) As Double
Dim m As Double
Dim n As Double
Dim p As Double
m = Val(Text1.Text)
n = Val(Text2.Text)
p = Val(Text3.Text)
q = Val(Text4.Text)
If n = p Then
Lectura de la matriz 1
For i = 1 To m
For j = 1 To n
mtrz1(i, j) = InputBox("A(" + Str(i) + "," + Str(j) + ")")
Next j
Next i
Lectura de la matriz 2
For i = 1 To p
For j = 1 To q
mtrz2(i, j) = InputBox("B(" & Str(i) & "," & Str(j) & ")")
Next j
Next i
Calculo del producto
For i = 1 To m
For j = 1 To q
For k = 1 To n
mtrz3(i, j) = mtrz3(i, j) + mtrz1(i, k) * mtrz2(k, j)
Next k
Next j
Next i
65

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

17.2 Ejercicios de aplicacin

a) Programa para calcular el determinante de una matriz m*n

b) Programa para resolver un sistema de ecuaciones lineales.

18. Extras
66

18.1 Mtodos de Integracin; Caso Discreto (Mtodo de los Trapecios)


Programacin en Ecxel.

Caso Discreto.-

Mtodo de los Trapecios.

Sub clculo()
Dim f(1 To 50) As Single
Dim d(1 To 50) As Single

lectura de datos
n = Cells(1, 2)
For i = 1 To n
f(i) = Cells(2, 1 + i)
d(i) = Cells(3, 1 + i)
Next

Clculos
h = d(2) - d(1)
For i = 2 To n - 1
suma = suma + f(i)
Next
trabajo = h / 2 * (f(1) + 2 * suma + f(n))

salida de datos
Cells(5, 2) = trabajo

End Sub

18.2 Mtodos de Integracin; Caso Continuo (Mtodo Simpson 1/3)


Programacin en Excel

Caso Continuo.-

Mtodo Simpson 1/3

Public Function Y(x) As Double


Y=x^3
End Function
.
Sub simp13()
Dim a As Single
Dim b As Single
Dim n As Single
Lectura de datos
n = Cells(2, 2)
a = Cells(3, 2)
b = Cells(4, 2)

Clculo de h
h = (b - a) / n
67

Cells(5, 2) = "h=" & Val(h) & ""

Clculos de las sumas pares sump e impares sumi


For i = 1 To n - 1
Cells(7 + i, 1) = i
Cells(7 + i, 2) = a + (h * i)
If i Mod 2 = 0 Then
Cells(7 + i, 3) = Y(Cells(7 + i, 2))
sump = sump + Cells(7 + i, 3)
Cells(7 + n, 3) = "Suma=" & Val(sump) & " "
Else
Cells(7 + i, 4) = Y(Cells(7 + i, 2))
sumi = sumi + Cells(7 + i, 4)
Cells(7 + n, 4) = "Suma=" & Val(sumi) & " "
End If
Next i
Mostrar datos
Cells(9 + n, 2) = "f(a)=" & Val(Y(a)) & ""
Cells(10 + n, 2) = "f(b)=" & Val(Y(b)) & ""
Cells(15, 6) = "Area="
Cells(15, 7) = h / 3 * (Y(a) + 2 * sump + 4 * sumi + Y(b))

End Sub
Borrar datos
Sub borrar()
Dim n As Single
n = Cells(2, 2)
For i = 8 To 10 + n
For j = 1 To 7
Cells(i, j) = ""
Next j
Next i
End Sub

18.3 Raz de una Funcin (Mtodo de la Secante) Programacin en Excel.

Mtodo de la Secante

Public Function Y(x As Double)


Y=x^2-2
End Function
..
Sub secante()
Dim a As Double
Dim b As Double
Dim n As Double
Dim c As Double
Lectura de datos
a = Cells(2, 2)
b = Cells(3, 2)
n = Cells(4, 2)
68

If Y(a) * Y(b) < 0 Then


For i = 1 To n
Cells(6 + i, 1) = i
Cells(6 + i, 2) = a
Cells(6 + i, 3) = b
Cells(6 + i, 4) = Y(a)
Cells(6 + i, 5) = Y(b)

c = ((a * Y(b)) - (b * Y(a))) / (Y(b) - Y(a))


Cells(6 + i, 6) = c
a=b
b=c
Next i

Else
MsgBox "no hay raiz"
End If
End Sub
..

18.4. Tiro parablico, Programacin Visual Basic.

Nota. - 2 textbox, 2 Commandbutton, 1 Picturebox.

Private Sub Command1_Click()


Dim L As Double
Dim H As Double
Dim xpixeles, y, i, j, t, esc, ang, vo, g As Double
vo = Val(Text1.Text)
ang = Val(Text2.Text)
g = 9.81
L = vo ^ 2 / g * Sin(2 * ang * 3.141593 / 180)
H = vo ^ 2 / (2 * g) * Sin(ang * 3.141593 / 180) ^ 2
dib.Cls
dib.ScaleMode = 3
xpixeles = dib.ScaleWidth
esc = L / xpixeles

dib.Scale (0, -1)-(L, H)


For i = 0 To xpixeles
t = i * esc / (vo * Cos(ang * 3.141593 / 180))
y = vo * t * Sin(ang * 3.141593 / 180) - g / 2 * t ^ 2
dib.PSet (i * esc, H - y)
Next i

dib.CurrentX = 0
dib.CurrentY = 0
H = Round(H, 5)
L = Round(L, 5)
dib.Print ("Ymax=" + Str(H))
dib.CurrentX = L / 2
dib.CurrentY = H - 8 * esc
dib.Print ("Xmax" + Str(L))
69

End Sub

Private Sub Command2_Click()


End
End Sub

18.5 Regresin lineal (Ecuacin de Segundo grado), Programacin Visual


Basic.
Nota. - 2 textbox, 2 Optionbutton, 1 MSFlexGrid, 1 Picturebox.

Private Sub Option1_Click()


Dim n As Single
Dim x(1 To 50) As Single
Dim y(1 To 50) As Single
Dim mtr1(1 To 50, 1 To 50) As Single
Dim mtr2(1 To 50, 1 To 50) As Single
Dim mtr3(1 To 50, 1 To 50) As Single
Dim mtr4(1 To 50, 1 To 50) As Single
Dim mtr5(1 To 50, 1 To 50) As Single

n = Val(Text1.Text)

MSFlexGrid1.TextMatrix(0, 0) = "N"
MSFlexGrid1.TextMatrix(0, 1) = "X"
MSFlexGrid1.TextMatrix(0, 2) = "Y"
For i = 1 To n
MSFlexGrid1.TextMatrix(i, 0) = i
Next
For i = 1 To n
x(i) = Val(InputBox("leer punto x(" + Str(i) + ")"))
y(i) = Val(InputBox("leer punto y(" + Str(i) + ")"))
MSFlexGrid1.TextMatrix(i, 1) = x(i)
MSFlexGrid1.TextMatrix(i, 2) = y(i)
mtr1(i, 1) = 1
mtr1(i, 2) = x(i)
mtr1(i, 3) = x(i) ^ 2
Next
'transpuesta
For i = 1 To 3
For j = 1 To n
mtr2(i, j) = mtr1(j, i)
Next
Next
'producto a*at
For i = 1 To 3
For j = 1 To 3
For k = 1 To n
mtr3(i, j) = mtr3(i, j) + mtr2(i, k) * mtr1(k, j)
Next
Next
Next
'producto 2
70

For j = 1 To 3
For k = 1 To n
mtr4(j, 1) = mtr4(j, 1) + mtr2(j, k) * y(k)
Next
Next
n=n-1

'leer
For i = 1 To n
For j = 1 To n
mtr3(i, j) = mtr3(i, j)
If i = j Then
mtr3(i, j + n) = 1
Else
mtr3(i, j + n) = 0
End If
Next
Next
'diagonal inferior
For k = 1 To 2 * n - 1
For i = k + 1 To n
q = mtr3(i, k) / mtr3(k, k)
mtr3(i, k) = 0
For j = k + 1 To 2 * n
mtr3(i, j) = q * mtr3(k, j) - mtr3(i, j)
Next
Next
Next

'diagonal superior

For k = n To 2 Step -1
For i = k - 1 To 1 Step -1
If mtr3(k, k) <> 0 Then
q = mtr3(i, k) / mtr3(k, k)
End If
mtr3(i, k) = 0
For j = k + 1 To 2 * n
mtr3(i, j) = -mtr3(k, j) * q + mtr3(i, j)
Next
Next
Next
'diagonal principal a 1
For i = 1 To n
q = mtr3(i, i)
For j = 1 To 2 * n
mtr3(i, j) = mtr3(i, j) / q
Next
Next

n=n+1

'producto 3
71

For j = 1 To 3
For k = 1 To 3
mtr5(j, 1) = mtr5(j, 1) + mtr3(j, 3 + k) * mtr4(k, 1)
Next
Next

Text2.Text = Str(mtr5(1, 1)) & "+" & Str(mtr5(2, 1)) & "x" & "+" & Str(mtr5(3, 1)) &
"x^2"

'grafica

Dim xmax, xmin, ymax, ymin, xpixeles, sep As Double


xmax = Val(x(n))
xmin = Val(x(1)) * -1
ymax = Val(y(n))
ymin = Val(y(1)) * -1
'sep =

Picturebox1.Cls
Picturebox1.ScaleMode = 3
xpixeles = dibujo.ScaleWidth
Picturebox1.Scale (xmin, ymin)-(xmax, ymax)

'dibujar funcion
For i = 1 To xpixeles
varx = xmin + (xmax - xmin) * i / xpixeles
Picturebox1.PSet (varx, (ymax + ymin) / 2 - (Val(mtr5(1, 1)) + Val(mtr5(2, 1)) *
varx + Val(mtr5(3, 1)) * varx ^ 2))
Next i
End Sub

Private Sub Option2_Click()


End
End Sub

19.Programas Hp (Aplicacin Mtodos Numricos)

INTRODUCCIN

Esta parte del texto, est dirigido al lenguaje de programacin de la calculadora


cientfica Hewlett Packard 50G.

La razn por la cual se aadi esta herramienta de programacin es debido a la gran


versatilidad que tiene, el fcil manejo de LISTAS, y la posibilidad de simplificacin y
factorizacin.

En los siguientes programas se observar con frecuencia el siguiente encabezado:

<< a b n

<<
72

Esto quiere decir, que en la pila de la calculadora se introducen las constantes a,b,c y
al ejecutar el programa, estas constantes se cargarn al programa que empieza
desde el segundo par de comillas (<< ).

Ntese tambin que existen algunos programas que tienen esta variante:

<< 0 0 a b n cont1 cont2

<<

En este caso, se introducen las constantes a, b y n por teclado; al ejecutarse el


programa se cargarn tambin los dos ceros designando as los valores a a, b, n y 0s
a los contadores cont1 y cont2; esta forma de nomenclatura dar las condiciones
inciales requeridas.

Otro detalle que es necesario aclarar, es que este lenguaje es conocido con el nombre
de RPL y el modo de trabajo de la calculadora es el RNP que tiene una manera de
enfoque diferente al habitualmente usado algebraico. Obsrvese el siguiente ejemplo:

Algebraico: 2*a+3*COS() ENTER

RPN: 2 ENTER a * 3 ENTER COS( ) * +

Este ejemplo muestra que la calculadora tiene una memoria temporal conocida con el
nombre de PILA donde se van almacenando los resultados parciales.

Algunas de las funciones especiales que se usaron para los programas son:

f(x) ENTER DERVX ; saca la derivada respecto de x de la funcin

SIMPLIFY ; simplifica una funcin algebraica

SORT ; ordena en orden ascendente una LISTA

DEFINE ;sirve para definir funciones

19.1 RAICES DE UNA ECUACIN

Para todos los mtodos de esta parte se usa la siguiente definicin de funcin:

<< X 'f(x)'>> f DEFINE

Es decir, cuando el programa necesite evaluar una funcin, automticamente la


calculadora llamar a la funcin.

19.1.1 MTODO DE LA BISECCIN


73

<< a b n // a y b son lo intervalos y n es el nmero de iteraciones

<<

IF 'f(a)*f(b)<0.'

THEN 1. n

FOR i '(a+b)/2.' EVAL 'c' STO

IF 'f(a)*f(c)<0.'

THEN c 'b' STO

ELSE c 'a' STO

END 1.

STEP c 'c' PURGE

ELSE "no existe raiz o existe un numero par de raices" MSGBOX

END

>>

>>

19.1.2 MTODO DE LA FALSA POSICIN

<< a b n // a y b son lo intervalos y n es el nmero de iteraciones

<<

IF 'f(a)*f(b)<0.'

THEN 1. n

FOR i '(a*f(b)-b*f(a))/(f(b)-f(a))' EVAL 'c' STO

IF 'f(a)*f(c)<0.'

THEN c 'b' STO

ELSE c 'a' STO

END 1.

STEP c 'c' PURGE

ELSE "no existe raiz o existe un numero par de raices" MSGBOX

END
74

>>

>>

19.1.2 MTODO DE NEWTON RAPHSON

<< x n //x es el valor inicial y n el nmero de iteraciones

<< 'df(X)' 'f(X)' EVAL DERVX = DEFINE 1. n

FOR i 'x-f(x)/df(x)' EVAL 'x1' STO x1 'x' STO 1.

STEP x1 { x1 df } PURGE

>>

>>

19.1.3 MTODO DE LA SECANTE

Para este caso considrese a b slo como el intervalo inicial ya que ste se modificar
en el transcurso del programa.

<< a b n //a y b son las condiciones iniciales y n el nmeros de iteraciones

<<

IF 'f(a)*f(b)<0.'

THEN 1. n

FOR i '(a*f(b)-b*f(a))/(f(b)-f(a))' EVAL 'c' STO b 'a' STO c 'b' STO 1

STEP c 'c' PURGE

ELSE "no existe raiz o existe un numero par de raices" MSGBOX

END

>>

>>

19.2 INTEGRACIN
75

19.2.1 CASO CONTINUO

19.2.1.1 INTEGRACIN POR RECTNGULOS

<< 0. a b n S //la funcin est previamente definida

<< '(b-a)/n' EVAL 'h' STO 0. 'n-1.'

FOR i 'S+f(a+i*h)' EVAL 'S' STO 1.

STEP '(b-a)/n*S' EVAL

>>

>>

19.2.1.2 INTEGRACIN POR TRAPECIOS

<< 0. a b n S //la funcin est previamente definida

<< '(b-a)/n' EVAL 'h' STO 1. 'n-1.'

FOR i 'S+f(a+i*h)' EVAL 'S' STO 1.

STEP 'h/2.*(2.*S+f(a)+f(b))' EVAL

>>

>>

19.2.1.3 INTEGRACIN POR SIMPSON

<< 0. 0. a b n S1 S2 //la funcin est previamente definida

<<

IF 'n MOD 2.==0.'

THEN '(b-a)/n' EVAL 'h' STO 1. 'n/2.'

FOR i 'S1+f(a+(2.*i-1.)*h)' EVAL 'S1' STO 1.

STEP 1. 'n/2.-1.'

FOR i 'S2+f(a+2.*i*h)' EVAL 'S2' STO 1.

STEP 'h/3.*(4.*S1+2.*S2+f(a)+f(b))' EVAL

ELSE "n debe ser par" MSGBOX


76

END

>>

>>

19.2.2 CASO DISCRETO

19.2.2.1 INTEGRACIN NEWTON COTES n = 1

//En este mtodo previamente se almacena a modo de funciones dos vectors X[] y Y[]
de dimensin n

<< 0. n S

<< 'X(2.)-X(1.)' EVAL 'h' STO 2. 'n-1.'

FOR i 'S+Y(i)' EVAL 'S' STO 1.

STEP 'h/2.*(2.*S+Y(1.)+Y(n))' EVAL

>>

>>

19.2.2.2 INTEGRACIN SIMPSON 1/3 NEWTON COTES n = 2

//En este mtodo previamente se almacena a modo de funciones dos vectors U[] y Y[]
de dimensin n

<< 0. 0. n S1 S2

<<

IF 'n MOD 2.==0.'

THEN 'X(2.)-X(1.)' EVAL 'h' STO 2. 'n/2.'

FOR i 'S1+Y(2.*i-1.)' EVAL 'S1' STO 1.

STEP 2. 'n/2.-1.'

FOR i 'S2+Y(i)' EVAL 'S2' STO 1.

STEP 'h/3.*(4.*S1+2.*S2+Y(1.)+Y(n))' EVAL

ELSE "n debe ser par" MSGBOX

END
77

>>

>>

19.3 AJUSTE LINEAL POR MNIMOS CUADRADOS: PSEUDO INVERSA

//En este mtodo previamente se almacena a modo de funciones dos vectors X[] y Y[]
de dimensin n

<< 0. 0. 0. 0. n S S1 S2 S3 //n es el nmero de iteraciones, S S1 S2 S3 son


//condiciones iniciales

<< 1. n

FOR i 'S+X(i)' EVAL 'S' STO 'S1+SQ(X(i))' EVAL 'S1' STO 'S2+X(i)*Y(i)' EVAL 'S2'
STO 'S3+Y(i)' EVAL 'S3' STO 1.

STEP 'n*S1-SQ(S)' EVAL 'D' STO '(n*S2-S*S3)/D' EVAL 'a' STO '(S1*S3-S*S2)/D'
'b' STO 'a' NUM 'b' NUM 'D' PURGE

>>

>>

20. Bibliografa
78

-Algortmica y programacin para ingenieros. M.Isabel Gallego Fernandez

Manuel Medina Llins

-Algoritmos y diagramacin Colegio de bachilleres del


estado de Sonora Hermosillo

-Mtodos numricos. Introduccin, aplicaciones Antonio Huerta Cerezuelo

y propagacin. Josep Sarrate-Ramos

Antonio Rodrguez-Ferran

-Mtodos numricos y simulaciones. Luis Rodriguez Valencia

-Clculo diferencial e integral. William Anthony Granville

-Aprenda Visual Basic 6.0 como si estuviera en Javier Garca de Jaln

Primero. Jos Ignacio Rodriguez

Alfonso Brlez
Patxi Funes

Eduardo Carrasco
Jess Calleja

-Hp 50g Calculadora Grfica (Gua del Usuario)

Você também pode gostar