Algoritmos y Programacion Libro 1

66
UNIV VERSID Fac Au DAD AU cultad d INF uxiliar. Marc UTÓNO de Ing FORMÁ MAT-2 co Antonio V Edición 20 OMA T eniería ÁTICA 05 Velásquez Az 011 Alg Pro (Guía d OMÁS a Civil zurduy gorítm ogram de apuntes) FRÍAS mica y mació ) S y n

description

Algoritmos y todo lo que se refiere en programacion en uno

Transcript of Algoritmos y Programacion Libro 1

Page 1: Algoritmos y Programacion Libro 1

 

 

 

 

 

 

 

 

 

 

 

 

UNIVVERSID

Fac

Au

DAD AU

cultad d

INF

uxiliar. Marc

 

UTÓNO

de Ing

FORMÁ

MAT-2co Antonio V

Edición 20

OMA T

eniería

ÁTICA

05 Velásquez Az

011

AlgPro(Guía d

OMÁS

a Civil

zurduy

gorítmogram

de apuntes)

FRÍAS

mica ymació

)

S

y n

Page 2: Algoritmos y Programacion Libro 1

P á g i n a | 1

INDICE

1. Presentación……………………………………………………………..……………………….5

2. Introducción…………………………………………………………………..………….………5

3. De los problemas a los programas……………………………………………..…………5

3.1Lenguajes de Programación………………………………………………..……..6

4. Algoritmo y sus tipos……………………………………………………………………....….7

4.1 Tipos de Algoritmos……………………………………………………….…….....7

4.2 Lenguajes Algorítmicos ……………………………………….….….……....…..7

5. Metodología para la solución de problemas por medio de computadora……7

6. Diagrama de Flujo ………………………………………………………………..….........…9

7. Pseudocódigo…………………………………….……………………………………...…….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 Declaración 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 Botón de Comando (Command Button) ……………………….....………14

9. Estructuras algorítmicas y de programación……………………………......…….14

10. Estructuras Secuenciales ……………………………………….…………...…………14

10.1 Calcular el área de un círculo. ……………………………………....…..…….15

10.1.1 Algoritmo: Área de un círculo…………………………..…………...….….15

10.1.2 Diagrama de flujo: Área de un Círculo……………………….……..……16

10.1.3 Código Visual Basic: Área de un círculo……….…………………......…16

11. Estructuras de Condicionales …………………………….………………….......…..17

11.1 Condicionales Simples………………….……….………………...….…...….17

Page 3: Algoritmos y Programacion Libro 1

P á g i n a | 2

11.1.1 Determinar el máximo de tres números. …….……………………………17

11.1.2 Algoritmo: Máximo de tres números…………….…………………….….17

11.1.3 Diagrama de Flujo: Máximo de tres números .………………………..18

11.1.4 Programa Visual Basic: Máximo de tres números………………….…18

11.2 Condicionales Dobles………………………………………..……………...19

11.2.1 Indicar si un número x es par o impar………………………………………20

11.2.2 Algoritmo: ¿Número par? …………………………………………….……..20

11.2.3 Diagrama de flujo: ¿Número par? ……………………………………….20

11.2.4 Programa Visual Basic: ¿Número par? …………………………………20

11.3 Condicionales Múltiples………………………………………………..….….21

11.3.1 Ecuación de 2º grado.…………………………………………………..…....22

11.3.2 Algoritmo: Ecuación de 2º grado. ………………………………....…….22

11.3.3 Diagrama de Flujo: Ecuación de 2º grado. ………………………....…22

11.3.4 Programa Visual Basic: Ecuación de 2º grado. ………………………23

12 Estructuras Cíclicas…………………………………….………………………….………24

12.1 Sentencia PARA………………………………………………………………….24

12.1.1 Calcular el factorial de un número 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 números múltiplos de 7............27

12.2.2 Algoritmo: suma de N múltiplos de 7……………………………….....…27

12.2.3 Diagrama de Flujo: suma de N múltiplos de 7…………………...……27

12.2.4 Programa Visual Basic: suma de N múltiplos de 7………………...…..…28

12.3 Sentencia REPETIR (HASTA) ………………….…………………………...28

12.3.1 Dado el Factorial, encontrar el número más próximo que da tal valor...29

12.3.2 Algoritmo: ¿qué número da el factorial? ……………………………..…29

12.3.2 Diagrama de flujo: ¿qué número da el factorial? …………….………30

12.3.3 Programa Visual Basic: ¿qué número da el factorial?..................30

Page 4: Algoritmos y Programacion Libro 1

P á g i n a | 3

13. APLICACIÓN.…………………………………….……………………………….…………..31

13.1 Determinar la cantidad de dígitos que posee un número n.….…..….........31

13.1.1 Algoritmo: Cantidad de dígitos que posee un número n…….…………..…31

13.1.2 Diagrama de flujo: Cantidad de dígitos que posee un número n…….32

13.1.3 Código Visual Basic: Cantidad de dígitos que posee un número 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 Código Visual Basic: Cambio de base decimal a base binaria………..…34

13.3 ¿Es número primo? ………………………………………………………………...34

13.3.1 Algoritmo: ¿Es número primo? …………………………..…......…..…….34

13.3.2 Diagrama de flujo: ¿Es número primo? ……………………....…………35

13.3.3 Código Visual Basic: ¿Es número primo? ……………….…………….…35

13.4 Máximo común divisor de n números. ………………………………....……..36

13.4.1 Algoritmo: Máximo común divisor de n números. ………………..…….36

13.4.2 Diagrama de flujo: Máximo común divisor de n números. …………..…37

13.4.3 Código Visual Basic: Máximo común divisor de n números………….….38

14 Métodos Numéricos……………………………………….……….…………………..……39

14.1 Introducción. …………………………………………...…………………………39

14.1.2 Integración numérica. ………………………….…..………………………39

14.1.3 El área bajo una curva. ……………………….……..…………………..…39

14.2 Método de los rectángulos: ……………………………….……….…………40

14.2.1 Ejemplo Método de los rectángulos ……………………………….…………40

14.2.2 Algoritmo. Método de los rectángulos………………………….……..……40

14.2.3 Diagrama de flujo: Método de los rectángulos……………….…..………40

14.2.4Código Visual Basic: Método de los rectángulos…………….……..……41

14.3 Método de la suma de trapecios: ……………………..……….…………..41

14.3.1 Ejemplo Método de la suma de trapecios. ……………………….….…….42

14.3.2 Algoritmo. Método de la suma de trapecios. ……………….………...….42

14.3.3 Diagrama de flujo: Método de la suma de trapecios. ………..……..…43

14.3.4 Código Visual Basic: Método de la suma de trapecios…………….……....43

14.4 Método de Simpson 1/3 (fórmula parabólica): …………..……………43

14.4.1 Ejemplo Método de Simpson 1/3. ……………………………………….….44

14.4.2 Algoritmo: Método de Simpson 1/3. ………………………………….……44

14.4.4 Diagrama de flujo: Método de Simpson 1/3. ……………………...……43

14.4.5 Código: Método de Simpson 1/3. ………………………………..……….…45

Page 5: Algoritmos y Programacion Libro 1

P á g i n a | 4

15. Determinación de raíces de ecuaciones…………..………….………………….….45

15.1 Método de la Bisección………………………………….………………..……46

15.1.1 Ejemplo Método de la Bisección. ……………………………….……………46

15.1.2 Algoritmo: Método de la Bisección. …………………………..………….…47

15.1.3 Diagrama de flujo: Método de la Bisección. ……………….…….......…47

15.1.4 Código: Método de la Bisección. ………………………………..……………48

15.2 Método de la Secante. ………………………………………………….………49

15.2.1 Ejemplo Método de la Secante. ………………………………….….………49

15.2.2 Algoritmo: Método de la Secante. ………………………………...…….…50

15.2.3 Diagrama de flujo: Método de la Secante. …………………......………50

15.2.4 Código: Método de la Secante. ………………………………….......………51

15.3 Método de la Falsa Posición. ………………………………….........………51

15.3.1 Ejemplo Método de la Falsa Posición. ………………………..........……..51

15.3.2 Algoritmo: Método de la Falsa Posición. …………………….....…………51

15.3.3 .Diagrama de flujo: Método de la Falsa Posición. …………..….…......52

15.3.4 Código Visual Basic: Método de la Falsa Posición. …………...….……52

15.4 Método de Newton-Raphson…………………………………..…....…….…53

15.4.1 Ejemplo Método de Newton-Raphson. …………………………...........…54

15.4.2 Algoritmo: Método de Newton-Raphson. …………………….……........54

15.4.3 Diagrama de flujo: Método de Newton-Raphson. ………….....….……54

15.4.4 Código Visual Basic: Método de Newton-Raphson. ……………….……55

16. Vectores……………………………………………………………………………….....……55

16.1 Sacar el promedio de N números……………………………………………..…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 números de forma ascendente. ………………………………......…58

16.3.1 Algoritmo: Ordenar números de forma ascendente……………….........….58

16.3.2 Diagrama de Flujo: Ordenar números de forma ascendente…….………59

16.3.3 Código Visual Basic: Ordenar números 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 Código Visual Basic: Producto de 2 matrices. ….……………………….63

18. Bibliografía…………………………………………………………………………………….65

Page 6: Algoritmos y Programacion Libro 1

P á g i n a | 5

Algorítmica y Programación

1. Presentación

El siguiente Manual de Algoritmia y Programación fue creado con el propósito de que el estudiante adquiera destrezas necesarias que le permitan crear diagramas de flujo que le auxilien en la creación de programas, con la intención que el alumno realice los ejercicios de prácticas en una manera razonada y no mecánica.

2. Introducción

Debido a las que las máquinas resultan una herramienta útil resolviendo un problema o una situación al automatizar procesos, es conveniente conocer el proceso por el cual podemos lograr que las máquinas hagan las cosas que necesitamos, ese hecho simplemente se resume a lo que se llama programación, 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 más 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 diálogo con las máquinas para darle dichas ordenes mediante un lenguaje.

Por tanto esta guía está dirigida al interés de cuál es el proceso para poder adentrarnos una mínima parte en el mundo de la programación.

3. De los problemas a los programas

La computadora no solamente es una máquina que puede realizar procesos para darnos resultados, sin que tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computadora además de lo anterior también podemos diseñar soluciones a la medida, de problemas específicos que se nos presenten. Más aun, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren del manejo de un volumen muy grande de datos.

El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodología que nos enseñe de manera gradual, la forma de llegar a estas soluciones.

A las soluciones creadas por computadora se les conoce como programas y no son más que una serie de operaciones que realiza la computadora para llegar a un resultado, con un grupo de datos específicos. Lo anterior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema específico.

Para poder realizar programas, además de conocer la metodología mencionada, también debemos de conocer, de manera específica 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 electrónico utilizado para procesar información y obtener resultados. Los datos y la información se pueden introducir en la computadora como entrada (input) y a continuación se procesan para producir una salida (output).

Page 7: Algoritmos y Programacion Libro 1

P á g i n a | 6

2. Programa: Es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas secuencialmente resuelven un problema especifico.

3. Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (información) 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 (ratón), trackball (bola de ratón estacionario), joystick (palancas de juego), lápiz óptico.

4. Dispositivos de Salida: Regresan los datos procesados que sirven de información al usuario. Ejemplo: monitor, impresora.

5. La Unidad Central de Procesamiento (C.P.U) se divide en dos: o Unidad de control o Unidad Aritmético - Lógica

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 Aritmético - Lógica: Realiza operaciones aritméticas y lógicas, tales como suma, resta, multiplicación, división 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 información mientras trabaja con ella; mientras esta información 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 información solo mientras la computadora está encendida. Cuando se apaga o arranca nuevamente la computadora, la información se pierde, por lo que se dice que la memoria RAM es una memoria volátil.

o La memoria ROM (Read Only Memory): Es una memoria estática 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 están 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 comúnmente utilizados son: cintas magnéticas y discos magnéticos.

3.1Lenguajes de Programación

Es un conjunto de símbolos, caracteres y reglas (programas) que le permiten a las personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógica/comparación y almacenamiento/recuperación.

Los lenguajes de programación se clasifican en:

Page 8: Algoritmos y Programacion Libro 1

P á g i n a | 7

• Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje maquina se expresan en términos de la unidad de memoria más pequeña el bit (dígito binario 0 o 1).

• Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones simbólicas.

• Lenguaje de Alto Nivel: Los lenguajes de programación 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 comprensión del programa.

4. Algoritmo y sus tipos

La palabra algoritmo se deriva de la traducción al latín de la palabra árabe Alkhowarizmi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX.

Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico.

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 cálculos numéricos para

definir los pasos del proceso.

4.2 Lenguajes Algorítmicos

Es una serie de símbolos y reglas que se utilizan para describir de manera explícita un proceso. De los cuales se encuentran los siguientes tipos de Lenguajes Algorítmicos:

• Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo).

• No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudocódigo).

5. Metodología para la solución de problemas por medio de computadora

Definición del Problema: Esta fase está dada por el enunciado del problema, el cual requiere una definición 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.

Análisis del Problema: Una vez que se ha comprendido lo que se desea de la computadora, es necesario definir:

• Los datos de entrada.

Page 9: Algoritmos y Programacion Libro 1

P á g i n a | 8

• Cuál es la información que se desea producir (salida) • Los métodos y fórmulas que se necesitan para procesar los datos.

Una recomendación 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.

Diseño del Algoritmo: Las características 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 mayoría de las variantes que se puedan

presentar en la definición del problema. • Debe ser finito en tamaño y tiempo de ejecución.

Codificación: La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la computadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un lenguaje de programación o lenguaje de alto nivel.

Prueba y Depuración: Los errores humanos dentro de la programación de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proceso de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración. La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se debe considerar con el mismo interés y entusiasmo. Resulta conveniente observar los siguientes principios al realizar una depuración, ya que de este trabajo depende el éxito de nuestra solución.

Documentación: Es la guía o comunicación 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 documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). La documentación se divide en tres partes:

• Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer más claro el entendimiento de un proceso.

• Documentación Externa : Se define en un documento escrito los siguientes puntos:

o Descripción del Problema o Nombre del Autor o Algoritmo (diagrama de flujo o pseudocódigo) o Diccionario de Datos o Código 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 después de terminado el programa, cuando se detecta que es necesario hacer algún cambio, ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar este trabajo se requiere que el programa este correctamente documentado.

Page 10: Algoritmos y Programacion Libro 1

P á g i n a | 9

6. Diagrama de Flujo

Un diagrama de flujo es la representación gráfica de un algoritmo. También se puede decir que es la representación detallada en forma gráfica de cómo deben realizarse los pasos en la computadora para producir resultados.

Esta representación gráfica se da cuando varios símbolos (que indican diferentes procesos en la computadora), se relacionan entre si mediante líneas que indican el orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido normalizados por el instituto norteamericano de normalización (ANSI).

SÍMBOLO DESCRIPCIÓN

Indica el inicio u el final de nuestro diagrama de flujo.

Se utiliza para representar los subprogramas.

Indica la entrada y salida de datos.

Símbolo de proceso y nos indica la asignación de un valor en la memoria y/o la ejecución de una operación

aritmética.

Símbolo de decisión indica la realización de una comparación de valores.

Símbolo de bucle con rangos para un ciclo definido

Conector dentro de página.

Conector fuera de página.

Indica la salida de información.

Líneas de flujo o dirección.

Page 11: Algoritmos y Programacion Libro 1

P á g i n a | 10

Recomendaciones para el diseño de Diagramas de Flujo

• Se deben se usar solamente líneas de flujo horizontal y/o vertical. • Se debe evitar el cruce de líneas utilizando los conectores. • Se deben usar conectores solo cuando sea necesario. • No deben quedar líneas de flujo son conectar. • Se deben trazar los símbolos de manera que se puedan leer de arriba hacia

abajo y de izquierda a derecha. • Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando

el uso de muchas palabras.

7. Pseudocódigo

Mezcla de lenguaje de programación y español (o inglés o cualquier otro idioma) que se emplea, dentro de la programación estructurada, para realizar el diseño de un programa. En esencial, el pseudocódigo se puede definir como un lenguaje de especificaciones de algoritmos. Es la representación narrativa de los pasos que debe seguir un algoritmo para dar solución a un problema determinado. El pseudocódigo utiliza palabras que indican el proceso a realizar.

Ventajas de utilizar un Pseudocódigo a un Diagrama de Flujo

• Ocupa menos espacio en una hoja de papel • Permite representar en forma fácil operaciones repetitivas complejas • Es muy fácil pasar de pseudocódigo a un programa en algún lenguaje de

programación. • Si se siguen las reglas se puede observar claramente los niveles que tiene cada

operación.

8. Lenguaje Visual Basic

Como se menciono anteriormente es necesario el manejo de un lenguaje el cual nos ayude a la codificación de los programas, por tanto nuestro lenguaje de programación será el Visual Basic, el cual trabaja en un entorno visual y de fácil manejo, lo cual nos llevará seguidamente a la manipulación 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 cálculos, usar información, procesarla y mostrarla. En la mayoría de los casos, necesitamos un lugar temporal en el cual guardar parte de esa información, 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.

Page 12: Algoritmos y Programacion Libro 1

P á g i n a | 11

La memoria es el lugar donde el ordenador almacena de forma temporal los programas y parte de la información que necesita o utiliza. Esas posiciones o lugares de la memoria donde los programas pueden almacenar información son las variables.

Es una ubicación de almacenamiento temporal con nombre que se encuentra en memoria, siendo capaz de contener cierto tipo de datos que pueden modificarse durante la ejecución del programa.

En VB los nombres de las variables deben limitarse a 255 caracteres, empezar con un carácter alfabético y no pueden obtener un punto

Utilización temporal de almacenamiento de datos dentro de un programa. Permiten asignar nombres cortos y fáciles de recordar. Son para manejar cualquier tipo de información.

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 sería accesible desde los demás procedimientos o formularios.

Ej: Dim suma

Public: Las variables declaradas serán publicas y podrán estar accesibles desde todos los formularios de la aplicación. Para conseguirlo tendremos que declararlas en un módulo de código, no en la sección declarations de cualquier formulario de los que conste la aplicación.

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 ejecución de la aplicación. De esta forma a entrar en algún procedimiento las variables recuerdan el valor que tenían cuando se salió de él.

Ej: Static suma

TIPOS DE VARIABLES  

TIPO COMENTARIO

BOOLEAN Sólo admite 2 valores TRUE o FALSE

BYTE admite valores entre 0 y 255

INTEGER admite valores entre -32768 y 32767

Page 13: Algoritmos y Programacion Libro 1

P á g i n a | 12

LONG admite valores entre -2.147.483.648 y 2.147.483.647

SINGLE admite valores decimales con precisión simple

DOUBLE admite valores decimales de doble precisión

CURRENCY válido para valores de tipo moneda

STRING cadenas de caracteres

Variant Admite cualquier tipo de datos

DATE fechas, permite operar con ellas

8.3 Declaración de Constantes

Como su palabra lo dice es Información que no varía hace más fácil la comprensión del código y permite modificar un valor en un solo lugar no ocupa espacio extra, Ejemplo:

Mínimo = 1, Máximo = 10

3 Entradas y salidas con Texbox

Texbox() Se introduce en este cuadro la información, que puede ser usada como de entrada de datos o de salida.

Page 14: Algoritmos y Programacion Libro 1

P á g i n a | 13

En la escritura del código, 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 código 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 botón 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 botón. 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)

Page 15: Algoritmos y Programacion Libro 1

P á g i n a | 14

Para manipular el número 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 Botón 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 más 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 programación donde podrá ser escrito el lenguaje o código de programación.

9. Estructuras algorítmicas y de programación

Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas, resumiendo a tres simples pero importantes tipos de estructuras:

- Estructura Secuencial - Estructura de Condicionales - Estructuras Cíclicas

10. Estructuras Secuenciales

La estructura secuencial es aquella en la que una acción (instrucción) 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

Page 16: Algoritmos y Programacion Libro 1

P á g i n a | 15

Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operación se representa en un pseudocódigo como sigue: Leer a, b. Donde “a” y “b” son las variables que recibirán los valores

Asignación: La asignación 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 asignación 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 número 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 operación

matemática que involucre muchas variables (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 pseudocódigo 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 círculo.

10.1.1 Algoritmo: Área de un círculo

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

a, b 

a=c+b*2/4

R

Page 17: Algoritmos y Programacion Libro 1

P á g i n a | 16

10.1.2 Diagrama de flujo: Área de un Círculo

10.1.3 Código Visual Basic: Área de un círculo

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 aplicación.

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

b) Convertir un número complejo de su forma polar a cartesiana.

Page 18: Algoritmos y Programacion Libro 1

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 comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la comparación se puede hacer contra otra variable o contra una constante, según se necesite. Existen dos tipos básicos, las simples y las múltiples.

11.1 Condicionales Simples

Las estructuras condicionales simples se les conocen como “Tomas de decisión”. Estas tomas de decisión tienen la siguiente forma: Si <condición> entonces Acción(es) Fin-decisión

Ejemplo.-

11.1.1 Determinar el máximo de tres números.

11.1.2 Algoritmo: Máximo de tres números

1. Inicio 2. Leer I, J, K 3. MAX= I 4. SI J>MAX ENTONCES 5. MAX=J 6. Fin condición 7. SI K>MAX ENTONCES 8. MAX=K 9. Fin decisión 10. Escribir MAX 11. Fin.

<Condición> Tareas 

Page 19: Algoritmos y Programacion Libro 1

P á g i n a | 18

11.1.2 Diagrama de Flujo: Máximo de tres números

11.1.3 Programa Visual Basic: Máximo de tres números

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)

Page 20: Algoritmos y Programacion Libro 1

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 aplicación

a) Determinar el mínimo de tres números.

b) Obtener el valor absoluto de un número x.

11.2 Condicionales Dobles

Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma:

Si <condición> entonces Acción(es) si no Acción(es) Fin-si - <condición>, indica la condición a evaluar

- <acción(es)>, son las acciones a realizar cuando se cumple o no la condición

   Condición 

V F 

Tareas Tareas 

Page 21: Algoritmos y Programacion Libro 1

P á g i n a | 20

Ejemplo.-

11.2.1 Indicar si un número x es par o impar

11.2.2 Algoritmo: ¿Número 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 decisión 8. Fin

11.2.3 Diagrama de flujo: ¿Número par?

11.2.4 Programa Visual Basic: ¿Número 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"

Page 22: Algoritmos y Programacion Libro 1

P á g i n a | 21

Else

Text2.Text = "es impar"

End If

End Sub

………………………………………………………..

11.2.5 Ejercicios de aplicación

a) Determinar si un número N es múltiplo de un número n.

b) Determinar si un número es entero o es un número con parte decimal.

11.3 Condicionales Múltiples

Las estructuras de comparación múltiples, son tomas de decisión especializada que permiten comparar unas variables con otras distintas posibles resultados, ejecutando para cada caso una serie de instrucciones específicas.

Seleccionar Caso <expresión_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 

ó

Page 23: Algoritmos y Programacion Libro 1

P á g i n a | 22

Ejemplo.-

11.3.1 Hacer un programa que “resuelva cualquier ecuación de 2º grado ax2 + bx + c = 0, con “a” diferente de 0”.

11.3.2 Algoritmo: Ecuación 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 √

7. Caso es =0 8. Mostrar: X =

ab

2−

9. Caso es < 0 10. Mostrar La ecuación no tiene soluciones “reales” 11. Fin caso 12. Fin

11.3.3 Diagrama de Flujo: Ecuación de 2º grado.

Page 24: Algoritmos y Programacion Libro 1

P á g i n a | 23

11.3.4 Programa Visual Basic: Ecuación 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

………………………………………………………..

Page 25: Algoritmos y Programacion Libro 1

P á g i n a | 24

11.3.5 Ejercicios de aplicación

a) Determinar si un número es mayor, menor o igual a un número b.

b) Dada tres longitudes de un triángulo, determinar qué tipo de triangulo es.

12 Estructuras Cíclicas

Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una cantidad específica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa).Los ciclos se clasifican en:

12.1 Sentencia PARA

La sentencia Para es la más sencilla de utilizar de las sentencias iterativas. La emplearemos cuando el número de iteraciones del bucle se conozca antes de iniciarse la ejecución 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 evaluación determina el valor inicial, de contador, es decir, el valor con el que se ejecutara por primera vez.

- <final>, el resultado de su evaluación 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 ejecución del bucle. Su valor se sumara o se restará a contador, según hayamos usado la palabra reservada Hasta antes de <final>, respectivamente. La indicación 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 más de una sentencia simple, aunque puede ser una sola acción, o incluso no existir(acción nula).

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

 <Sentencias>

Page 26: Algoritmos y Programacion Libro 1

P á g i n a | 25

Ejemplo.-

12.1.1 Calcular el factorial de un número 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

Page 27: Algoritmos y Programacion Libro 1

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 aplicación

a) Calcular la sumatoria de un número n.

b) Calcular el número de combinaciones de n elementos tomados de m en m.

12.2 Sentencia Mientras

En la sentencia PARA, debemos conocer el número 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 número de iteraciones depende de la evaluación de una condición.

MIENTRAS < condición ejecución > HACER <sentencia> CICLO

<condición ejecución>, es una expresión 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 evaluación de <condición ejecución> sea cierto. Puede ser una sentencia compuesta.

“el CICLO indica que debe volver al punto donde se realiza la pregunta de <condición de ejecución> hasta que el valor sea falso”

Page 28: Algoritmos y Programacion Libro 1

P á g i n a | 27

Ejemplo.

12.2.1 Calcular la suma de los N primeros números múltiplos de 7

12.2.2 Algoritmo: suma de N múltiplos de 7

1. Inicio 2. Leer N 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 múltiplos de 7

condición ejecución

sentencia bucle 

F

V

Page 29: Algoritmos y Programacion Libro 1

P á g i n a | 28

12.2.4 Programa Visual Basic: suma de N múltiplos 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 aplicación

a) Obtener el máximo común divisor por resta reiterada de 2 números.

b) Imprimir los términos de la serie Fibonacci menores que N.

12.3 Sentencia REPETIR (HASTA)

En la sentencia MIENTRAS, la condición de ejecución del bucle se verifica antes de haber ejecutado este por primera vez. Por tanto, es necesario inicializar las variables empleadas para determinar su ejecución 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 número de interacciones depende de la evaluación de una condición, como en la de MIENTRAS, pero esta evaluación se realiza después de cada ejecución del bucle.

Hacer <sentencia de bucle> Hasta <condición>

Page 30: Algoritmos y Programacion Libro 1

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 evaluación de <condición> sea falso. Puede ser una sentencia compuesta.

<condición>, es una expresión que puede tomas los valores cierto o falso.

Ejemplo.

12.3.1 Dado el Factorial, encontrar el número más próximo que da tal valor.

12.3.2 Algoritmo: ¿qué número 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 decisión 13. Fin

Page 31: Algoritmos y Programacion Libro 1

P á g i n a | 30

12.3.2 Diagrama de flujo: ¿qué número da el factorial?

12.3.3 Programa Visual Basic: ¿qué número da el factorial?

Nota.- Se necesita: 2 TextBox, 1 CommandButton

…………………………………………………..

Private Sub Command1_Click()

Dim Factorial As Single

Factorial = Val(Text1.Text)

Page 32: Algoritmos y Programacion Libro 1

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 aplicación

a) Convertir un número de base octal a base decimal.

b) Imprimir los términos de la serie Fibonacci menores que N.

13. APLICACIÓN.-

Ejemplo.-

13.1 Determinar la cantidad de dígitos que posee un número n.

13.1.1 Algoritmo: Cantidad de dígitos que posee un número n.

1. Inicio 2. Leer n 3. dígitos=0 4. Hacer 5. dígitos=dígitos+1 6. n=(n Cociente 10) 7. Hasta n=0 8. Mostrar: dígitos 9. Fin

Page 33: Algoritmos y Programacion Libro 1

P á g i n a | 32

13.1.2 Diagrama de flujo: Cantidad de dígitos que posee un número n.

13.1.3 Código Visual Basic: Cantidad de dígitos que posee un número 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

…………………………………

Page 34: Algoritmos y Programacion Libro 1

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

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

Page 35: Algoritmos y Programacion Libro 1

P á g i n a | 34

13.2.3 Código Visual Basic: Cambio de base decimal a base binaria.

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 código para mostrar si un número es primo no.

13.3.1 Algoritmo: ¿Es número 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 condición 7. Siguiente i 8. Si temp > 2 Entonces 9. Mostrar “No es primo”

Page 36: Algoritmos y Programacion Libro 1

P á g i n a | 35

10. Caso contrario: Mostrar “Es primo” 11. Fin condición 12. Fin

13.3.2 Diagrama de flujo: ¿Es número primo?

13.3.3 Código Visual Basic: ¿Es número primo?

Nota.- Se necesita: 1 TextBox, 1 CommandButton

…………………………………………………

Private Sub Command1_Click()

Dim n As Single

n = Val(Text1.Text)

Page 37: Algoritmos y Programacion Libro 1

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 código para determinar el máximo común divisor de “n” números.

13.4.1 Algoritmo: Máximo común divisor de n números.

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 condición 12. Siguiente j 13. Si cont=n-1 Entonces 14. MCD=i 15. Fin condición 16. cont=0 17. Siguiente i 18. Mostrar MCD 19. Fin

Page 38: Algoritmos y Programacion Libro 1

P á g i n a | 37

13.4.2 Diagrama de flujo: Máximo común divisor de n números.

Page 39: Algoritmos y Programacion Libro 1

P á g i n a | 38

13.4.3 Código Visual Basic: Máximo común divisor de n números.

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 Números")

Next i

For i = 1 To a(1)

For j = 2 To n

If a(j) Mod i = 0 Then

cont = cont + 1

End If

Next j

If cont = n - 1 Then

MCD = i

End If

cont = 0

Next i

Text2.Text = MCD

End Sub

……………………………………………………………….

Page 40: Algoritmos y Programacion Libro 1

P á g i n a | 39

14 Métodos Numéricos

14.1 Introducción. Se presentan algunas de las tecinas comunes para realizar cálculos numéricos

sin mayor rigor matemático, con el objetivo de hacer referencias a ellas en el resto de los capítulos donde ello sea necesario, y para que el lector interesado tenga conocimiento de la existencia de estos métodos. 14.1.2 Integración numérica. 14.1.3 El área bajo una curva.

Si se tiene una función y = f(x), el problema de determinar el ¶área entre la curva representativa de la función y el eje X, entre los valores x1 y x2 conduce al concepto de integral. Una aproximación a la solución de este problema consiste en aproximar el área por una suma de rectángulos como se indica en la figura.

Si el intervalo de x1 a x2 lo llenamos con N rectángulos que lleguen hasta la curva, entonces los anchos de los rectángulos serán

2 1

las abscisas de sus vértices inferiores izquierdos serán 1 1 ; 1, 2, . . . ,

Figura 1.1: Área bajo la curva. o

1 ; 1, 2, . . . , Entonces el área A será aproximadamente

Page 41: Algoritmos y Programacion Libro 1

P á g i n a | 40

14.2 Método de los rectángulos:

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

Ejemplo: 14.2.1 Realizar el algoritmo, diagrama de flujo y código del método de rectángulos 14.2.2 Algoritmo. Método de los rectángulos

1. Inicio 2. Definir función 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: Método de los rectángulos

Page 42: Algoritmos y Programacion Libro 1

P á g i n a | 41

14.2.4Código Visual Basic: Método de los rectángulos

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 Método de la suma de trapecios:

Sea f(x) una función en [a, b], con n subintervalos [xi , x i 1 ], entonces el área aproximada A de f(x) es:

f x dx∆x2

f x 2f x 2f x 2f x f x

∆x y x a i∆x

Page 43: Algoritmos y Programacion Libro 1

P á g i n a | 42

Ejemplo: 14.3.1 Realizar el algoritmo, diagrama de flujo y código del método de la suma de trapecios 14.3.2 Algoritmo. Método de la suma de trapecios.

1. Inicio 2. Definir función 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: Método de la suma de trapecios.

Page 44: Algoritmos y Programacion Libro 1

P á g i n a | 43

14.3.4 Código Visual Basic: Método 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 Método de Simpson 1/3 (fórmula parabólica):

Sea f(x) una función continua en [a, b], una vez generada éste intervalo como unión de subintervalos con la misma longitud h, esta vez se considerará el ajuste a la función mediante parábolas, dando el área total la suma de dichas parábolas, tomando siempre n par.

∆ 4 2 4 Donde n es par ∆

Page 45: Algoritmos y Programacion Libro 1

P á g i n a | 44

Ejemplo 14.4.1Realizar el algoritmo, diagrama de flujo y código del método de Simpson1/3. 14.4.2 Algoritmo: Método de Simpson 1/3.

1. Inicio 2. Definir función 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: Método de Simpson 1/3.

Page 46: Algoritmos y Programacion Libro 1

P á g i n a | 45

14.4.5 Código: Método de Simpson 1/3.

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. Determinación de raíces de ecuaciones.

Muchos problemas en ciencia e ingeniería conducen a un problema de determinar las raíces de una ecuación de la forma f(x) = 0 donde f es una función diferenciable. Para una ecuación cuadrática ax2 +bx +c = 0 es bien conocido que:

Para ecuaciones de tercer y cuarto orden hay también fórmulas, pero que son complicadas. Si f es un polinomio de grado 5 o superior no existe tal fórmula. Asimismo no hay fórmulas que nos permitan encontrar raíces exactas de ecuaciones trascendentales tales como cos x = x. Métodos que permitan encontrar aproximaciones para las raíces de ecuaciones se han desarrollado.

Page 47: Algoritmos y Programacion Libro 1

P á g i n a | 46

15.1 Método de la Bisección Sea f(x) una función (ecuación) con raíz en (a, b), esto significa que f(a)>0 y

f(b)<0 ó f(a)<0 y f(b)>0, además f(x) continuo. Bajo esta hipótesis, se considera reiterativa la mitad del intervalo con las condiciones ya mencionadas.

Figura: Método de la bisección Donde y debe cumplir que <0 Ejemplo 15.1.1 Realizar el algoritmo, diagrama de flujo, código del método de la Bisección. 15.1.2 Algoritmo: Método de la Bisección.

1. Inicio 2. Definir función 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 condición 12. Siguiente i 13. Mostrar c 14. Caso contrario: No existe raíz o hay más de una raíz 15. Fin condición 16. Fin

Page 48: Algoritmos y Programacion Libro 1

P á g i n a | 47

15.1.3 Diagrama de flujo: Método de la Bisección.

15.1.4 Código: Método de la Bisección. 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

Page 49: Algoritmos y Programacion Libro 1

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 raíz en ese intervalo" End If End Sub ……………………………………………………………….. 15.2 Método de la Secante.

La idea de este método es muy simple. Si se conocen do puntos tales que en ellos las función f(x) tiene diferente signo, por ejemplo f(a) < 0 y f(b) > 0, entonces (para funciones continuas) en algún punto intermedio la función debe anularse. La recta que va desde el punto (1) al punto (2) corta el eje x más cerca de la raíz buscada, como se ilustra en la figura siguiente: Como la recta pasa por los puntos (1) y (2) su ecuación es (verifíquelo)

y el punto donde ella corta el eje x (la aproximación) satisface

0

Page 50: Algoritmos y Programacion Libro 1

P á g i n a | 49

Figura 1.4: Método de la secante. de donde

1

Este proceso debe ser repetido hasta alcanzar la precisión deseada, eligiendo entre nuevos valores iníciales, (a, c) o (c, b) según en cual pareja hay cambio de signo de la función. Ejemplo.- 15.2.1 Realizar el algoritmo, diagrama de flujo, código del método de la Secante. 15.2.2 Algoritmo: Método de la Secante.

1. Inicio 2. Definir función Y=x^2-2 3. Leer a, b, n 4. Si Y(a)*Y(b)<0 Entonces 5. Para i= 1 Hasta n

6. )()(

)(*)(*aYbY

aYbbYac−−

=

7. a=b, b=c 8. Siguiente i 9. Mostrar c 10. Caso contrario: No existe raíz o hay más de una raíz 11. Fin condición 12. Fin

Page 51: Algoritmos y Programacion Libro 1

P á g i n a | 50

15.2.3 Diagrama de flujo: Método de la Secante.

15.2.4 Código: Método 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

Page 52: Algoritmos y Programacion Libro 1

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 Método de la Falsa Posición.

Para encontrar la raíz aproximada de f(x) continua y con presencia de una raíz

se itera como con el método de la bisección, usando la regla de f(a) * f(b)<0, y utilizando la iteración del método de la Secante.

. y en cada iteración 0.

Ejemplo 15.3.1 Realizar el algoritmo, diagrama de flujo, código del método de la Falsa Posición. 15.3.2 Algoritmo: Método de la Falsa Posición.

1. Inicio 2. Definir función Y=x^2-2 3. Leer a, b, n 4. Si Y(a)*Y(b)<0 Entonces 5. Para i= 1 Hasta n

6. )()(

)(*)(*aYbY

aYbbYac−−

=

7. Si Y(a)*Y(c)<0 Entonces 8. a=c 9. Caso contrario 10. b=c 11. Fin condición 12. Siguiente i 13. Mostrar c 14. Caso contrario: No existe raíz o hay más de una raíz 15. Fin condición 16. Fin

Page 53: Algoritmos y Programacion Libro 1

P á g i n a | 52

15.3.3 Diagrama de flujo: Método de la Falsa Posición.

15.3.4 Código Visual Basic: Método de la Falsa Posición.

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)

Y(a)*^Y(c)<0

INICIO

FIN

Y=x^2-2

a, b, n

Y(a)*Y(b)<0No existe raíz o hay mas de una

raíz

Para i= 1 Hasta n

b=ca=c

Mostrarc

Si

No

SiNo

A

A

Page 54: Algoritmos y Programacion Libro 1

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 Método de Newton-Raphson

El método de Newton se basa en la observación de que la línea tangente es una

buena aproximación local a una función. Sea (x0; f(x0)) un punto de la curva. La línea tangente en ese punto será

0 ′ 0 0 . Esta línea cruza el eje-x donde y = 0. El valor de x será

00

′ 0.

En general, dada una aproximación xn a una raíz de la función f(x), la línea tangente cruza el eje x donde

n 1 ′

.

Dado x0, el método de Newton produce una lista x1, x2, …, xn de aproximaciones al cero de f. En los gráficos que siguen, f(x) = x - x3, x0 = 0.44, x1 -0.41,x2 0.27, y x3 -0.048.

Page 55: Algoritmos y Programacion Libro 1

P á g i n a | 54

Ejemplo: 15.4.1 Realizar el algoritmo, diagrama de flujo, código del método de Newton-Raphson. 15.4.2 Algoritmo: Método de Newton-Raphson.

1. Inicio 2. Definir función Y=x^2-2 3. Leer x, n 4. Para i = 1 Hasta n

5. )(

)(xdY

xYxx −=

6. Siguiente i 7. Mostrar x 8. Fin

15.4.3 Diagrama de flujo: Método de Newton-Raphson.

Page 56: Algoritmos y Programacion Libro 1

P á g i n a | 55

15.4.4 Código Visual Basic: Método 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 número de datos, todos ellos del mismo tipo, ordenados en una sola dimensión.

<nombrevector>(<tipoíndice>)

<nombre>, es el nombre de la variable tipo vector.

Page 57: Algoritmos y Programacion Libro 1

P á g i n a | 56

  INICIO

x(i)

Para i= 1 Hasta N

Suma= Suma + x(i)

Promedio

Promedio = Suma/N

N

Suma=0

  FIN

(<tipoíndice>), indica el elemento concreto del vector con el que queremos operar.

Con los elementos de un vector podemos realizar cualquier operación permitida con la variable de su tipo, es decir, del tipo básico del vector.

Ejemplo.

16.1 Sacar el promedio de N números

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

Page 58: Algoritmos y Programacion Libro 1

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 número")

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 vacía")

Else

Do

i = i + 1

suma = suma + Cells(1, i)

Loop Until Cells(1, i) = ""

Range("B3") = suma / (i - 2)

Page 59: Algoritmos y Programacion Libro 1

P á g i n a | 58

End If

Cells(1, i) = ">"

End Sub

………………………………………………………………………………………………………..

Ejemplo.

16.3 Realizar el algoritmo, diagrama de flujo, y código para ordenar números de forma ascendente.

16.3.1 Algoritmo: Ordenar números 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 condición 13. Siguiente j 14. Siguiente i 15. Para i= 1 Hasta n 16. Mostrar a(i) 17. Siguiente i 18. Fin

Page 60: Algoritmos y Programacion Libro 1

P á g i n a | 59

16.3.2 Diagrama de Flujo: Ordenar números de forma ascendente.

Page 61: Algoritmos y Programacion Libro 1

P á g i n a | 60

16.3.3 Código Visual Basic: Ordenar números 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 aplicación

a) Descomponer en sus factores primos un número n y mostrarlos en una lista. b) Normalizar un vector de reales con el criterio de hacer su módulo igual a 1.

Page 62: Algoritmos y Programacion Libro 1

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 básico, ordenados en cualquier número de dimensiones, podemos decir que es una generalización del tipo vector, aunque, como veremos, es mucho más lógico 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, añadiendo 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

Page 63: Algoritmos y Programacion Libro 1

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 condición 28. FIN

17.1.2 Diagrama de flujo: Producto de 2 matrices.

Page 64: Algoritmos y Programacion Libro 1

P á g i n a | 63

17.1.3 Código 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

Page 65: Algoritmos y Programacion Libro 1

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

………………………………………………………………………………………………………………………………………

17.2 Ejercicios de aplicación

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

b) Programa para resolver un sistema de ecuaciones lineales.

Page 66: Algoritmos y Programacion Libro 1

P á g i n a | 65

18. Bibliografía

-Algorítmica y programación para ingenieros. M.Isabel Gallego Fernandez

Manuel Medina Llinàs

-Algoritmos y diagramación Colegio de bachilleres del estado de Sonora Hermosillo

-Métodos numéricos. Introducción, aplicaciones Antonio Huerta Cerezuelo

y propagación. Josep Sarrate-Ramos

Antonio Rodríguez-Ferran

-Métodos numéricos y simulaciones. Luis Rodriguez Valencia

-Cálculo diferencial e integral. William Anthony Granville

-Aprenda Visual Basic 6.0 como si estuviera en Javier García de Jalón

Primero. José Ignacio Rodriguez

Alfonso Brález

Patxi Funes

Eduardo Carrasco

Jesús Calleja