Sunteți pe pagina 1din 189

2007

Notas de clase

Programacin
para
Topografa
Gonzalo Jimnez C.
Julin Garzn B.

Facultad de Ingeniera
Programa de Topografa
Armenia, 2007
2007
Notas de clase

Programacin
para
Topografa
Primer borrador

Gonzalo Jimnez Cleves


Topgrafo.
Esp. Computacin para la docencia.
Msc. Ingeniera de Sistemas.
Docente Universidad del Quindo.

Julin Garzn Barrero


Tecnlogo en Topografa.
Ingeniero de Sistemas.
Docente Universidad del Quindo.

Universidad del Quindo


Facultad de Ingeniera - Programa de Topografa
Programacin
para
Gonzalo Jimnez Cleves

Julin Garzn Barrero

Topografa
Este documento es una gua de enseanza bsica para aquellos estudiantes
de Topografa que se inician en el asombroso mundo de la programacin y
que desean tener una visin estructurada para analizar y solucionar Algoritmos,
problemas, desarrollando la capacidad de pensar racionalmente a cerca de
soluciones alternativas y los resultados de aplicarlas, es decir de hacer
diagramas de flujo
elecciones inteligentes. El lenguaje que se utiliza es seudocdigo, lo cual es de datos, y
una caracterstica muy importante porque facilita al alumno concentrarse
en las estructuras de datos y algoritmos asociados a ella sin necesidad de
programas
relacionarlas a un complejo lenguaje de programacin.
Tabla de contenido Geomtica

Tabla de contenido
1. Algoritmos, su representacin, y programas .................... 7
1.1 Conceptos bsicos de programacin ................................... 7
1.1.1 Programar .................................................................................. 7
1.1.2 Dato............................................................................................ 7
1.1.3 Informacin ................................................................................ 7
1.1.4 Procesamiento de datos ............................................................ 7
1.2 Algoritmos y programas ..................................................... 8
1.3 Caractersticas de los algoritmos ........................................ 8
1.4 Pasos del desarrollo de un programa .................................. 9
1.4.1 Anlisis del problema ................................................................. 9
1.4.2 Diseo del algoritmo .................................................................. 9
1.4.3 Codificacin.............................................................................. 10
1.4.4 Implementacin y depuracin ................................................. 10
1.4.5 Pruebas .................................................................................... 12
1.4.5.1 Prueba de escritorio .................................................................... 12
1.4.5.2 Prueba manual de datos de muestra .......................................... 12
1.4.5.3 Prueba por un grupo selecto de usuarios potenciales................ 12
1.4.6 Documentacin del programa ................................................. 14
1.4.6.1 Manual de usuario y manual del analista ................................... 14
1.4.7 Mantenimiento del programa ................................................. 15
1.5 La lgica como aspecto fundamental de la programacin . 15
1.5.1 Argumentos ............................................................................. 16
1.5.2 Premisas y conclusin .............................................................. 16
1.6 Tipos de datos .................................................................. 18
1.6.1 Datos simples ........................................................................... 19
1.6.1.1 Enteros ........................................................................................ 19
1.6.1.2 Reales .......................................................................................... 19
1.6.1.3 Caracteres ................................................................................... 20
1.6.1.4 Cadenas ....................................................................................... 20
1.6.1.5 Datos lgicos ............................................................................... 21
1.7 Identificadores, constantes, variables y operadores ......... 21
1.7.1 Identificadores ......................................................................... 21
1.7.2 Constantes ............................................................................... 22
Geomtica Programacin para Topografa

1.7.3 Variables .................................................................................. 22


1.7.4 Operadores .............................................................................. 22
1.7.4.1 Operadores aritmticos .............................................................. 22
1.7.4.2 Operadores relacionales ............................................................. 26
1.7.4.3 Operadores lgicos ..................................................................... 27
1.7.5 Asignaciones ............................................................................ 29
1.8 Tcnicas de representacin de algoritmos ........................ 32
1.8.1 Descripcin narrada ................................................................. 32
1.8.2 Diagramas de flujo ................................................................... 34
1.8.2.1 Inicio Fin ................................................................................... 34
1.8.2.2 Entrada ....................................................................................... .35
1.8.2.3 Proceso ........................................................................................ 35
1.8.2.4 Decisin ....................................................................................... 35
1.8.2.5 Decisin doble ............................................................................. 36
1.8.2.6 Decisin mltiple ........................................................................ 36
1.8.2.7 Salida ........................................................................................... 37
1.8.2.8 Flujos ........................................................................................... 37
1.8.2.9 Conector ...................................................................................... 38
1.8.2.10 Conector .................................................................................... 38
1.8.2.11 Procedimiento ........................................................................... 38
1.8.3 Mtodo para construir un diagrama de flujo .......................... 39
1.8.4 Reglas para construir un diagrama de flujo ............................. 32
1.8.5 Seudocdigo ............................................................................ 37
1.9 Ejercicios propuestos ........................................................ 50

2. Estructuras algortmicas de seleccin ........................... 57


2.1 Introduccin ...................................................................... 57
2.2 Estructura selectiva simple si entonces ............................. 58
2.3 Estructura selectiva doble si entonces / sino..................... 60
2.4 Estructura selectiva mltiple si mltiple ........................... 63
2.5 Estructuras selectivas anidadas ........................................ 65
2.6 Ejercicios propuestos ........................................................ 75
Tabla de contenido Geomtica

3. Estructuras algortmicas de repeticin ......................... 81


3.1 Introduccin ..................................................................... 81
3.2 Estructura Mientras .......................................................... 82
3.2.1 Ciclo Mientras .......................................................................... 82
3.2.2 Ejecucin de un bucle cero veces ............................................ 83
3.2.3 Bucles infinitos ......................................................................... 84
3.2.4 Terminacin de bucles con datos de entrada ......................... 84
3.3 Estructura repetir ............................................................. 84
3.3.1 Ciclo Repetir ............................................................................. 85
3.4 Estructura Desde .............................................................. 87
3.4.1 Ciclo Desde............................................................................... 87
3.5 Estructuras repetitivas anidadas ....................................... 91
3.6 Ejercicios propuestos ........................................................ 91

4. Estructuras de datos ................................................... 97


4.1 Introduccin ..................................................................... 97
4.2 Datos estructurados ......................................................... 97
4.2.1 Estructuras de datos estticas ................................................. 98
4.2.2 Estructuras de datos dinmicas ............................................... 98
4.3 Arreglos............................................................................ 98
4.3.1 Vectores .................................................................................. 100
4.3.1.1 Definicin de arreglos .............................................................. 100
4.4 Operaciones bsicas con vectores ................................... 101
4.4.1 Lectura ................................................................................... 102
4.4.2 Bsqueda ............................................................................... 103
4.4.3 Modificacin .......................................................................... 105
4.4.4 Eliminacin ............................................................................. 109
4.5 Arreglos ordenados ........................................................ 115
4.5.1 Insercin................................................................................. 115
4.5.2 Bsqueda ............................................................................... 116
4.5.3 Eliminacin ............................................................................. 121
4.6 Arreglos bidimensionales (matrices) ............................... 126
4.6.1 Declaracin de arreglos bidimensionales .............................. 127
Geomtica Programacin para Topografa

4.6.2 Lectura ................................................................................... 127


4.7 Caractersticas avanzadas de los arreglos........................ 130
4.7.1 Creacin dinmica de arreglos .............................................. 131
4.7.2 Combinaciones de arreglos abiertos y de tamao fijo .......... 132
4.8 Ejercicios propuestos ...................................................... 136

5. Subrutinas ............................................................... 143


5.1 Introduccin ................................................................... 143
5.2 Identificadores ............................................................... 143
5.3 Funciones ....................................................................... 146
5.3 Procedimientos .............................................................. 150
5.4 Definicin de parmetros formales ................................. 151
5.4.1 Paso de parmetros ............................................................... 151
5.4.1.1 Por valor .................................................................................... 151
5.4.1.2 Por referencia............................................................................ 151

6. Introduccin a Visual Basic ........................................ 159


6.1 Introduccin ................................................................... 159
6.2 Variables ........................................................................ 159
6.2.1 Nombre de las variables ....................................................... 160
6.2.2 Tipos de datos ....................................................................... 160
6.3 Constantes .................................................................... 162
6.4 Operadores .................................................................... 163
6.5 Entada y salida de datos ................................................. 164
6.5.1 Entrada de datos ................................................................... 164
6.5.2 Entada y salida de datos usando controles ......................... 169
6.5.2.1 El formulario, los controles y sus propiedades ........................ 170
6.5.3 Escribir el cdigo .................................................................. 172
6.6 Sentencias de control .................................................... 179
6.6.1 Sentencia If ............................................................................ 179
6.6.2 Sentencia IfThen...Else ....................................................... 180
Tabla de contenido Geomtica

6.6.3 Sentencia Select Case ........................................................... 182


6.6.4 Sentencia ForNext ............................................................... 184
6.6.5 Sentencia WhileWend ........................................................ 185
6.6.6 Sentencia DoLoop ............................................................... 186

Bibliografa................................................................... 191
Captulo 1

Algoritmos, su
representacin, y
programas

Objetivo general:

Proveer al estudiante de las tcnicas de programacin bsicas que le permitan abordar


el desarrollo de algoritmos correctos y eficientes para resolver problemas.

Objetivos especficos:

Representar mediante diagramas de flujo la formulacin de un algoritmo que


pueda ser escrito en cualquier lenguaje de programacin.

Utilizar el seudocdigo como una tcnica bsica para disear programas.

3
Programacin para Topografa Geomtica

Tabla de contenido

1. Algoritmos, su representacin, y programas .................... 7


1.1 Conceptos bsicos de programacin ................................... 7
1.1.1 Programar .................................................................................. 7
1.1.2 Dato............................................................................................ 7
1.1.3 Informacin ................................................................................ 7
1.1.4 Procesamiento de datos ............................................................ 7
1.2 Algoritmos y programas ..................................................... 8
1.3 Caractersticas de los algoritmos ........................................ 8
1.4 Pasos del desarrollo de un programa .................................. 9
1.4.1 Anlisis del problema ................................................................. 9
1.4.2 Diseo del algoritmo .................................................................. 9
1.4.3 Codificacin.............................................................................. 10
1.4.4 Implementacin y depuracin ................................................. 10
1.4.5 Pruebas .................................................................................... 12
1.4.5.1 Prueba de escritorio .................................................................... 12
1.4.5.2 Prueba manual de datos de muestra .......................................... 12
1.4.5.3 Prueba por un grupo selecto de usuarios potenciales................ 12
1.4.6 Documentacin del programa ................................................. 14
1.4.6.1 Manual de usuario y manual del analista ................................... 14
1.4.7 Mantenimiento del programa ................................................. 15
1.5 La lgica como aspecto fundamental de la programacin . 15
1.5.1 Argumentos ............................................................................. 16
1.5.2 Premisas y conclusin .............................................................. 16
1.6 Tipos de datos .................................................................. 18

Universidad del Quindo 5


Geomtica Programacin para Topografa

1.6.1 Datos simples ........................................................................... 19


1.6.1.1 Enteros ........................................................................................ 19
1.6.1.2 Reales .......................................................................................... 19
1.6.1.3 Caracteres ................................................................................... 20
1.6.1.4 Cadenas ....................................................................................... 20
1.6.1.5 Datos lgicos ............................................................................... 21
1.7 Identificadores, constantes, variables y operadores ......... 21
1.7.1 Identificadores ......................................................................... 21
1.7.2 Constantes ............................................................................... 22
1.7.3 Variables .................................................................................. 22
1.7.4 Operadores .............................................................................. 22
1.7.4.1 Operadores aritmticos .............................................................. 22
1.7.4.2 Operadores relacionales ............................................................. 26
1.7.4.3 Operadores lgicos ..................................................................... 27
1.7.5 Asignaciones ............................................................................ 29
1.8 Tcnicas de representacin de algoritmos ........................ 32
1.8.1 Descripcin narrada ................................................................. 32
1.8.2 Diagramas de flujo ................................................................... 34
1.8.2.1 Inicio Fin ................................................................................... 34
1.8.2.2 Entrada ........................................................................................ 35
1.8.2.3 Proceso ........................................................................................ 35
1.8.2.4 Decisin ....................................................................................... 35
1.8.2.5 Decisin doble ............................................................................. 36
1.8.2.6 Decisin mltiple ........................................................................ 36
1.8.2.7 Salida ........................................................................................... 37
1.8.2.8 Flujos ........................................................................................... 37
1.8.2.9 Conector ...................................................................................... 38
1.8.2.10 Conector .................................................................................... 38
1.8.2.11 Procedimiento ........................................................................... 38
1.8.3 Mtodo para construir un diagrama de flujo .......................... 39
1.8.4 Reglas para construir un diagrama de flujo ............................. 40
1.8.5 Seudocdigo ............................................................................ 45
1.9 Ejercicios propuestos ........................................................ 50

6 Universidad del Quindo


Programacin para Topografa Geomtica

1. Algoritmos, su
representacin, y
programas

1.1 Conceptos bsicos de


programacin

1.1.1 Programar: Es un proceso para convertir


especificaciones generales de un sistema en instrucciones utilizables por
un computador, que produzcan los resultados deseados.

1.1.2 Dato: Es la cantidad mnima de informacin no elaborada,


sin sentido en s misma, un dato no dice nada del porqu del las cosas, y
por si mismo tiene poca importancia.

1.1.3 Informacin: Es un conjunto organizado de datos,


que constituyen un mensaje sobre un determinado fenmeno.

1.1.4 Procesamiento de datos: Consiste en la


recoleccin de datos de entrada que son evaluados y ordenados para ser
colocados de manera que produzcan informacin til.

Universidad del Quindo 7


Geomtica Programacin para Topografa

1.2 Algoritmos y programas


La necesidad del manejo de informacin que hoy se caracteriza por
cantidad y velocidad de cambio, hace que en todas las profesiones se
tenga la necesidad de interactuar con algn lenguaje de programacin
para desarrollar aplicaciones tiles y seguras que permitan resolver
problemas con rapidez.

Un algoritmo es un mtodo para resolver un problema, presentado


como una secuencia ordenada de instrucciones lgicas y finitas que
conllevan a la solucin del mismo.

La palabra algoritmo viene de un matemtico Persa llamado Mohammed


Al-Kowarizmi, quien introdujo este trmino al mundo, su apellido fue
traducido al latn como Algorismus, el que posteriormente se conoci
como Algoritmo.

Programar es planificar, concebir, escribir, articular y probar las


instrucciones especficas que mediante los cdigos de un lenguaje de
programacin generan una aplicacin ejecutable para resolver o aligerar
procesos con la ayuda del computador.

1.3 Caractersticas de los algoritmos


Debe ser preciso indicando la realizacin de cada paso de forma
ordenada.

Debe estar bien definido. Si se sigue un algoritmo ms de una vez, los


resultados deben ser los mismos.

8 Universidad del Quindo


Programacin para Topografa Geomtica

Debe ser finito. Si se sigue un algoritmo, es decir debe tener un nmero


determinado de pasos.

1.4 Pasos del desarrollo de un


programa

1.4.1 Anlisis del problema

Esta fase requiere una clara definicin donde se contemple exactamente


lo que debe hacer el programa y el resultado o solucin deseada.

Dado que se busca una solucin se precisan especificaciones de entrada


y salida.
Para poder definir bien un problema es conveniente responder a las
siguientes preguntas:

Qu entradas se requieren? (cantidad y tipo)


Cul es la salida deseada? (cantidad y tipo)
Qu mtodo produce la salida deseada?

1.4.2 Diseo del algoritmo

En la fase de anlisis en el proceso de programacin, se determina que


hace el programa, es decir, se plantea como hace el programa la tarea
solicitada.

Los mtodos utilizados para el proceso del diseo se basan en el


conocido divide y vencers. Es decir la resolucin de un problema

Universidad del Quindo 9


Geomtica Programacin para Topografa

complejo se realiza dividiendo el problema en sub-problemas y a


continuacin dividir estos sub-problemas en otros de nivel ms bajo,
hasta que sea implementada una solucin en el computador. Este
mtodo se conoce tcnicamente como diseo descendente (top-down) o
modular.

Cada programa bien diseado consta de un programa principal (el


mdulo de nivel ms alto) que llama a subprogramas (mdulos) de nivel
ms bajo, que a su vez pueden llamar a otros subprogramas.

Los mdulos pueden ser planeados, codificados, comprobados y


depurados independientemente y luego ser combinados entre s. Este
proceso implica la ejecucin de estos pasos hasta que el programa se ha
terminado: programar un mdulo, comprobarlo y depurarlo; adems
combinar el mdulo con los otros mdulos.

El diseo del algoritmo es independiente del lenguaje de programacin


en el que se vaya a codificar.

1.4.3 Codificacin

Es la generacin real del programa con un lenguaje de programacin. En


esta etapa se hace uso de la lgica que se desarroll en el paso del
diseo del algoritmo para generar el programa. Se debe seleccionar el
lenguaje apropiado para resolver el problema.

1.4.4 Implementacin y depuracin

Compilacin y ejecucin: Una vez que el algoritmo se ha convertido en


un programa fuente, es preciso introducirlo en memoria mediante el

10 Universidad del Quindo


Programacin para Topografa Geomtica

teclado y almacenarlo posteriormente en un dispositivo de


almacenamiento. Esta operacin se realiza con un editor de texto,
posteriormente el programa fuente se convierte en un archivo de
programa.

Figura 1-1 Esquema general de creacin de un programa

El programa fuente debe ser traducido a lenguaje mquina. Este proceso


se realiza con el compilador y el sistema operativo que se encarga
prcticamente de la compilacin. Si al compilar el programa fuente se
presentan errores (errores de compilacin), es necesario volver a editar
el programa, corregir los errores y compilar de nuevo. Esto se repite
hasta que ya no se presenten ms errores, obtenindose el programa
objeto, el cual todava no es ejecutable directamente. Al ya no existir
errores en el programa fuente se debe instruir al sistema operativo para
que efecte la fase de montaje o enlace, del programa fuente con las
libreras del programa del compilador. Este proceso de montaje produce
un programa ejecutable.

Suponiendo que no existen errores durante la ejecucin (errores en


tiempo de ejecucin), se obtendr la salida de resultados correctos del
programa.

Universidad del Quindo 11


Geomtica Programacin para Topografa

1.4.5 Pruebas

Probar el programa consiste en verificar su funcionalidad a travs de


varios mtodos para detectar errores posibles.

1.4.5.1 Prueba de escritorio: El programador se


sienta frente a un escritorio y corrige una impresin del programa.
Revisa el listado lnea por lnea en busca de errores de sintaxis y lgica.

1.4.5.2 Prueba manual de datos de


muestra: Se corre el programa en forma manual aplicando datos
tanto correctos como incorrectos para comprobar que funciona
correctamente.

1.4.5.3 Prueba por un grupo selecto de


usuarios potenciales: Esto se conoce como prueba beta.
Se trata por lo general del paso final en la prueba de un programa.
Usuarios potenciales ponen a prueba el programa y ofrecen
retroalimentacin.

Depurar es correr el programa en una computadora y corregir las partes


que no funcionan. En esta fase se comprueba el funcionamiento de cada
programa y esto se hace con datos reales o ficticios. Cuando los
programas estn depurados, se prueban. Cuando los programas se
depuran, se pueden encontrar los siguientes errores:

12 Universidad del Quindo


Programacin para Topografa Geomtica

Errores de sintaxis o de compilacin

Son errores del programa fuente, puede deberse a palabras reservadas


del lenguaje mal escritas, expresiones erradas o incompletas, o variables
que no estn definidas. Estos errores se detectan en la fase de
compilacin. El compilador adems de generar el cdigo objeto genera
un reporte con los errores de sintaxis; el compilador slo entrega el
reporte de errores el cdigo objeto, puesto que no se puede generar el
objeto teniendo errores de sintaxis.

Errores de ejecucin

se pueden presentar incluso luego de obtener un archivo ejecutable,


normalmente no se obtiene mensajes de error, sino que el programa se
termina de manera brusca, se deben generalmente a operaciones no
permitidas como dividir por cero, leer un dato no numrico en una
variable numrica, o exceder un rango de valores permitidos. Existen
programas auxiliares para detectar estos errores son los llamados
depuradores (Debuggers), estos permiten detener la ejecucin de un
programa y ejecutarlos paso a paso, esto resulta til para detectar
excepciones, errores sutiles y fallos que se presentan dependiendo de
distintas circunstancias.

Errores de diseo

Corresponden a la obtencin de resultados que no son correctos y la


nica manera de detectarlos es realizando suficientes pruebas del
programa. Son los ms difciles de corregir, no slo por la dificultad de
detectarlos, sino porque se deben a la propia concepcin y diseo del
programa, contra estos errores solo cabe replantear nuevamente el
algoritmo.

Universidad del Quindo 13


Geomtica Programacin para Topografa

Errores de especificacin

Es el peor tipo de error y el ms difcil de corregir. Se deben a mal diseo


del programa posiblemente por mala comunicacin usuario
programador y se detectan cuando ya se ha concluido el diseo e
instalacin del programa, lo cual puede implicar repetir gran parte del
trabajo realizado.

1.4.6 Documentacin del programa

Consiste en describir por escrito a nivel tcnico los procedimientos


relacionados con el programa y su modo de uso. Tambin se debe
documentar el programa para que sea ms entendible.

Documentos que se elaboran:

1.4.6.1 Manual de usuario y manual del


analista: a los usuarios se les elabora un manual de referencia para
que aprendan a utilizar el programa. Esto se hace a travs de
capacitaciones y revisin de la documentacin del manual de usuario. El
manual del usuario no est escrito a nivel tcnico sino al de los distintos
usuarios previstos y explica en detalle cmo usar el programa:
descripcin de las tareas que realiza el programa, instrucciones
necesarias para su instalacin puesta en marcha y funcionamiento,
recomendaciones de uso, mens de opciones, mtodo de entrada y
salida de datos.

A los programadores a travs del manual del analista para que recuerden
aspectos de la elaboracin del programa o en caso que otras personas
puedan actualizarlo o modificarlo (darle mantenimiento) y no son

14 Universidad del Quindo


Programacin para Topografa Geomtica

necesariamente las personas que lo disearon. Es por ello, que la


documentacin debe contener algoritmos y diagramas de flujo de los
diferentes mdulos que lo constituyen y las relaciones que se establecen
entre ellos; listados del programa, corridas, descripcin de variables que
se emplean en cada mdulo, cules son comunes a diferentes mdulos y
cules locales; descripcin de los ficheros de cada mdulo y todo lo que
sea de importancia para un programador.

1.4.7 Mantenimiento del programa

Es el paso final del desarrollo del software. Alrededor del 75% del costo
total del ciclo de vida de un programa se destina al mantenimiento. El
propsito del mantenimiento es garantizar que los programas en uso
estn libres de errores de operacin y sean eficientes y efectivos.

1.5 La lgica como aspecto


fundamental de la programacin
Lgica es la capacidad de pensar racionalmente acerca de soluciones
alternativas y los resultados de aplicarlas, y por lo tanto, de hacer
elecciones inteligentes. La lgica es la encargada de determinar la validez
o invalidez de los argumentos; adems permite proporcionar la
simbologa que servir para facilitar el desarrollo de la capacidad de
anlisis de problemas, para obtener una solucin posible.

Universidad del Quindo 15


Geomtica Programacin para Topografa

1.5.1 Argumentos
Cuando el razonamiento se expresa con palabras, recibe el nombre de
"argumento". Un argumento es un grupo cualquiera de proposiciones o
enunciados que forman premisas y conclusiones. Este puede constar de
varias premisas pero de una sola conclusin.

1.5.2 Premisas y conclusin

Las premisas de un argumento son proposiciones afirmadas como


fundamento o razones para aceptar una conclusin. La conclusin es la
proposicin afirmada que se basa en las otras proposiciones o premisas.
Una proposicin puede ser premisa en un argumento y conclusin en
otro.

Ejemplo No 1:

Todos los ngulos internos de un polgono suman (n-2)*180 aparece


como premisa en el siguiente argumento:

Todos los ngulos internos de un polgono suman (n-2)*180

Las poligonales se deben ajustar

Por lo tanto, en todas las poligonales ajustadas la sumatoria de sus


ngulos internos es igual a (n-2)*180

Y como conclusin en el siguiente argumento:

16 Universidad del Quindo


Programacin para Topografa Geomtica

Todas las poligonales cerradas se deben ajustar

En un mismo vrtice la suma de los ngulos interno y externo es igual a


360
La sumatoria terica de ngulos externos de una poligonal cerrada es
igual a (n+2)*180
Por lo tanto, todos los ngulos internos de un polgono suman (n-
2)*180

Expresiones como por tanto, por lo cual, de ello se deduce, sirven


para introducir la conclusin de un argumento, en tanto que pues y
porque se usan para introducir las premisas.

Enunciado Simple: Es el que no contiene otro enunciado como parte


componente.

Ejemplo No 2:

"Los azimutes no pueden ser mayores a 360"

Enunciado compuesto: Es el que se compone de varios enunciados.

Ejemplo No 3:

Los azimutes no pueden ser mayores a 360 y las deflexiones no pueden


ser mayores que 180.

Universidad del Quindo 17


Geomtica Programacin para Topografa

Cuando los enunciados se unen por la conjuncin Y, se denominan


Enunciados conyuntos. Cuando se unen por el conector O, se denominan
enunciados disyuntos. De aqu surgen las tablas de verdad. (Tema que
ser tratado en Operadores lgicos).

1.6 Tipos de datos


Los diferentes objetos de informacin con los que un programa trabaja
se denominan datos.

Todos los datos tienen un tipo asociado a ellos, que sirve para poder
conocer con qu tipo de informacin se va a trabajar.

Enteros
Reales
Simples Caracteres
Booleanos

Datos
Unidimensionales
Arreglos
Bidimensionales
Estructurados

Cadena de caracteres

Registros

18 Universidad del Quindo


Programacin para Topografa Geomtica

1.6.1 Datos simples

Su principal caracterstica es que ocupan solo una casilla de memoria,


por esto se hace referencia a un nico valor a la vez, dentro de este
grupo se encuentran los enteros, reales, caracteres y booleanos.

1.6.1.1 Enteros
Es un subconjunto finito de los nmeros, su caracterstica principal es
que no tienen punto decimal, su rango depender del lenguaje en el que
se vaya a codificar el algoritmo. El rango depende de cuantos bits utilice
para codificar el nmero, normalmente 2 bytes, Para nmeros positivos,
con 16 bits se pueden almacenar:

216= 65536 nmeros enteros diferentes: de 0 al 65535, y de -32768 al


32767 para nmeros con signo.

Ejemplo No 4:

2 , -152 , 14 , 1587 , -98

1.6.1.2 Reales
Estos nmeros siempre tienen un punto decimal y pueden ser positivos o
negativos. Un nmero real consiste de un nmero entero y una parte
decimal.

Ejemplo No 5:

2.125 , -152. 587 , 14.0 , 158.7 , -98,002

Universidad del Quindo 19


Geomtica Programacin para Topografa

1.6.1.3 Caracteres
Es un conjunto finito y ordenado de caracteres que el computador
reconoce. Un dato de este tipo contiene solo un carcter.

Ejemplo No 6:

Caracteres alfabticos: (A,B,C,Z, a,b,cz)

Caracteres numricos: (0,1,2,9)

Caracteres especiales: (+, -, *, /, ^, . , ;, <, >, $, .)

1.6.1.4 Cadenas
Es una sucesin de caracteres que se encuentran delimitados por una
comilla (apstrofe). La longitud de una cadena de caracteres es el
nmero de ellos comprendidos entre los separadores o delimitadores,
por lo general en todos los lenguajes de programacin la mxima
longitud que puede tomar una cadena es de 255 caracteres.

Ejemplo No 7:

Topografa

Ingeniera Geomtica

7-46-01-48

20 Universidad del Quindo


Programacin para Topografa Geomtica

1.6.1.5 Datos lgicos


Tambin se le denomina Booleano, es aqul dato que solo puede tomar
uno de dos valores: Falso o Verdadero.

Se utilizan para representar las alternativas (si/no) a determinadas


condiciones. Por ejemplo, cuando se pide si un valor entero es primo, la
respuesta ser verdadera o falsa, segn sea.

1.7 Identificadores, constantes,


variables y operadores

1.7.1 Identificadores

Todos los datos que procesa el computador, sean estos, simples o


estructurados, deben ser almacenados en celdas de memoria para su
utilizacin, estas celdas tienen un nombre que permite su identificacin.
Un identificador se forma de acuerdo a las siguientes normas:

El primer caracter debe ser una letra.

Los dems caracteres pueden ser letras, dgitos el smbolo


especial:_

Universidad del Quindo 21


Geomtica Programacin para Topografa

1.7.2 Constantes

Una constante es aquella que no cambia de valor durante la ejecucin de


un programa. Existen tantos tipos de constantes como tipos de datos,
por lo tanto puede haber constantes de tipo entero, real, carcter, etc.

1.7.3 Variables

Son objetos que pueden cambiar su valor durante la ejecucin del


programa. Al igual que las constantes, pueden existir tipos de variables
como tipos de datos.

1.7.4 Operadores

Un operador es el smbolo que determina el tipo de relacin que habr


de establecerse entre los operandos para alcanzar un resultado.

Los operadores pueden ser aritmticos, relacionales o lgicos.

1.7.4.1 Operadores aritmticos


Estos operadores permiten realizar operaciones aritmticas entre
operandos: nmeros, constantes o variables, el resultado de una
operacin aritmtica siempre ser un nmero.

22 Universidad del Quindo


Programacin para Topografa Geomtica

Operador Operacin Ejemplo Resultado


aritmtico

** Potencia 2**8 256

* Multiplicacin 8.15*5 40.75

/ Divisin 45/10 4.5

+ Suma 12+7 19

- Resta 45.97-87.54 -41.57

mod Mdulo 15 mod 2 1

div Divisin entera 17 div 3 5

Tabla 1-1 Operadores aritmticos

Cuando se evalan expresiones que contienen operadores aritmticos se


debe respetar su jerarqua, es importante sealar que el operador () es
asociativo y tiene la prioridad ms alta en cualquier lenguaje de
programacin.

Si una expresin contiene sub-expresiones entre parntesis, estas se


evalan primero, respetando la jerarqua de operadores en cada sub-
expresin. Si las sub-expresiones se encuentran anidadas por parntesis
se evalan primero las que estn en ltimo nivel de anidamiento.

Universidad del Quindo 23


Geomtica Programacin para Topografa

Operador Jerarqua Operacin


aritmtico

** (Mayor) Potencia

Multiplicacin,
*, /, mod, div divisin, mdulo,
divisin entera

+, - Suma, resta
(Menor)

Tabla 1-2 Jerarqua de operadores aritmticos

Si existen dos operadores con igual jerarqua dentro de una sub-


expresin se le da prioridad a aquel que est ms a la izquierda.

Ejemplo No 8:

a 10 / 2 7 68 15 33 45 2 / 16 / 3 / 15 1

a 10 / 2 7 68 15 33 2025 / 16 / 3 / 15 1

a 10 / 2 7 68 15 33 126.5625 / 3 / 15 1

a 10 / 2 7 68 495 126.5625 / 3 / 15 1

a 10 / 2 7 68 495 42.1875 / 15 1

a 10 / 2 7 427 42.1875 / 15 1

a 10 / 2 7 384.8125 / 15 1

24 Universidad del Quindo


Programacin para Topografa Geomtica

a 10 / 2 7 25.6541 1

a 10 / 2 18.6541 1

a 5 18.6541 1

a 93.2705 1

a 92.2705

Ejemplo No 9:

b 7 2 160 mod 3 3 10div5 13 6

b 7 2 160 mod 27 10div5 13 6

b 7 2 25 10div5 13 6

b 14 25 10div5 13 6

b 350 10div5 13 6

b 350 2 13 6

b 350 26 6

b 376 6

b 370

Universidad del Quindo 25


Geomtica Programacin para Topografa

1.7.4.2 Operadores relacionales


Son los que permiten comparar dos operandos, una caracterstica
imprescindible de cualquier lenguaje de programacin es la de
considerar alternativas, es decir, proceder de una determinada manera
si se cumplen o no las condiciones fijadas, con este tipo de operadores
se puede determinar si se cumplen o no dichas condiciones.

En un programa si una condicin se cumple, el resultado es cierto; en


caso contrario, el resultado es falso. Un 0 representa la condicin de
falso, y cualquier nmero distinto de 0 equivale a la condicin cierto.

Operador Operacin Ejemplo Resultado


relacional

= Igual que azimut = azimuth Falso

<> Diferente a angulo <> distancia Verdadero

< Menor que 58 < 1 Falso

> Mayor que 38 > 10 Verdadero

<= Menor o igual que 15 <= 15 Verdadero

>= Mayor o igual que 5 >= 21 Falso

Tabla 1-3 Operadores relacionales

26 Universidad del Quindo


Programacin para Topografa Geomtica

Ejemplo No 10:

A 10 B 4

( A 5 B 2 / 2) ( B 2div 2)

( A 5 100 / 2) ( B 2div 2)

( A 5 50) ( B 2div 2)

(50 50) ( B 2div 2)

100 ( B 2div 2)

100 (16div 2)

100 4

Falso

1.7.4.3 Operadores lgicos


Son operadores binarios que permiten combinar los resultados de los
operadores relacionales comprobando que se cumplan las condiciones
necesarias.

Los operadores son de conjuncin (y), disyuncin (o), y negacin (no)

Universidad del Quindo 27


Geomtica Programacin para Topografa

Operador Jerarqua Expresin lgica Significado


lgico

(Mayor)
No No P No es cierto que P

Y PyQ P sin embargo Q

O (Menor) PoQ o P o Q o ambas

Tabla 1-4 Jerarqua de operadores lgicos

P Q P Q PoQ P^Q

Verdadero Verdadero Falso Falso Verdadero Verdadero

Verdadero Falso Falso Verdadero Verdadero Falso

Falso Verdadero Verdadero Falso Verdadero Falso

Falso Falso Verdadero Verdadero Falso Falso

Tabla 1-5 Tabla de verdad de los operadores lgicos

O: el resultado es verdadero si al menos una de las dos conjunciones es


verdadera.

Y: para que el resultado sea verdadero, las dos condiciones deben ser
verdaderas.

28 Universidad del Quindo


Programacin para Topografa Geomtica

Operadores Jerarqua

() (Mayor)

**

*, /, div, mod

=, <>, <, >, <=, >=

No

O (Menor)

Tabla 1-6 Tabla de verdad jerarqua de todos los operadores (aritmticos, relacionales y lgicos)

Nota: El operador () es de tipo asociativo que tiene la prioridad ms alta


en cualquier lenguaje de programacin.

1.7.5 Asignaciones

Las asignaciones son acciones que permiten darle o asignarle a una


variable un valor determinado, la asignacin es una operacin de tipo
destructivo, significa que si la variable tena asignado un valor, este se
destruye consignando ahora el nuevo valor. Los valores asignados a la
variable deben ser del mismo tipo de la variable.

En una asignacin se resuelve primero la expresin (lado derecho del


smbolo de asignacin), y se almacena el resultado en la variable.
Formato de la asignacin:

Universidad del Quindo 29


Geomtica Programacin para Topografa

Variable expresin o valor

Donde la expresin puede ser aritmtica o lgica, o una constante o


variable.

A una variable le puede ser asignado:

El valor de otra variable


Un valor constante
El resultado de evaluar una expresin que pueda contener otras
variables.

Ejemplo No 11:

Variables

I, TOPO, J : entero
DIR, INV : real
CAR : caracter
BAND : booleano

1. I0
2. I I+1
3. TOPO 0
4. J 5**2 div 3
5. CAR a
6. TOPO J div I
7. DIR TOPO/3
8. BAND (8>5) y (15<2**3)
9. INV TOPO*5/J**2
10. I I*3
11. DIR DIR/5
12. BAND BAND o (I=J)
13. I DIR
14. CAR J

30 Universidad del Quindo


Programacin para Topografa Geomtica

Nmero de I J TOPO DIR INV CAR BAND


asignacin

1 0

2 1

3 0

4 8

5 a

6 8

7 2.66

8 Falso

9 0.625

10 3

11 0.532

12 Falso

13 Error

14 Error

Tabla 1-7 Valores en memoria proceso de asignacin

Universidad del Quindo 31


Geomtica Programacin para Topografa

1.8 Tcnicas de representacin de


algoritmos

1.8.1 Descripcin narrada

Este algoritmo se caracteriza porque sigue un proceso de ejecucin


comn y lgico, describiendo textualmente paso a paso cada una de las
actividades a realizar dentro de una actividad determinada.

Ejemplo No 12:

Nombre del algoritmo: Reiteraciones

Descripcin: Protocolo para la medicin de un ngulo


por reiteracin (entre dos seales) tres
veces, (tres posiciones)

Autor: GGG - GJC - JGB

Fecha: Marzo 2007

Pasos:

1 - Visar la seal de la izquierda y colocar en el limbo 00 00' +


una lectura en segundos superior a cero.

2 - Barrer el ngulo en sentido horario, puntear la segunda seal


y registrar en cartera el valor ledo en el crculo horizontal.

32 Universidad del Quindo


Programacin para Topografa Geomtica

3 - Transitar, volver a puntear la misma seal, registrar en cartera


el valor que se lee en el crculo (debe diferir en 180 con el valor
ledo en el paso 2.)

4 - Barrer el ngulo en sentido contra-horario hasta la primera


seal, puntearla y registrar la lectura del crculo. {Hasta este punto
el ngulo se ha medido dos veces, una en directa y sentido horario, otra
en inversa y sentido contra-horario.}
5 - Estando el instrumento punteando la seal de la izquierda en
posicin inversa, colocar en el crculo el valor correspondiente al
2do. origen (en inversa) de manera que al transitar el instrumento
quede en posicin directa, y en el crculo pueda leerse
directamente el origen correspondiente.

6 - Barrer el ngulo en sentido horario hasta la segunda seal,


puntearla y registrar la lectura correspondiente.

7 - Transitar, volver a visar la segunda seal, registrar la lectura.

8 - Barrer el ngulo en sentido contra-horario hasta la primera


seal, puntearla y registrar la lectura correspondiente.{ En este
punto se han hecho dos posiciones del ngulo, es decir se ha medido
dos veces en sentido horario y dos en sentido contra-horario, tanto en
directa como en inversa. }

{Para iniciar la tercera posicin:}

9 Igual al numeral uno pero teniendo en el crculo horizontal


como origen el valor de 120 (tabla 1-8), y continuar con el
procedimiento mencionado. {El procedimiento descrito se repite
hasta completar el nmero de posiciones requerido (mnimo dos), debe
notarse que 1a., 3a., 5a., etc. empiezan en directa y 2a., 4a. etc.
empiezan en inversa.}

Universidad del Quindo 33


Geomtica Programacin para Topografa

Tel D I D I D I

2 00 270 (90)

3 00 240 (60) 120

4 00 225 (45) 90 315 135)

5 00 216 (36) 72 288(108) 144

6 00 210 (30) 60 270 (90) 120 330(150)

Tabla 1-8 Orgenes para reiteraciones

1.8.2 Diagramas de flujo

Es una representacin grfica del flujo lgico de datos que se utilizarn


en la formulacin de un problema como ayuda en el desarrollo de un
algoritmo. Un diagrama de flujo es til para determinar cmo funciona el
proceso para producir un resultado. Su correcta construccin es de gran
importancia porque a partir del mismo se escribe un programa en algn
lenguaje de programacin. Si el diagrama de flujo est completo y
correcto, el paso del mismo a un lenguaje de programacin es
relativamente simple y directo.

1.8.2.1 Inicio Fin


Es un smbolo utilizado para indicar el comienzo o el punto final del
diagrama.

Figura 1-2 Inicio - Fin (Diagrama de flujo)

34 Universidad del Quindo


Programacin para Topografa Geomtica

1.8.2.2 Entrada
Se utiliza para introducir datos de entrada. Expresa lectura.

Figura 1-3 Entrada (Diagrama de flujo)

1.8.2.3 Proceso
Representa cualquier serie de transferencia de datos u operaciones
aritmticas internas del computador. En su interior se expresan
asignaciones.

Figura 1-4 Proceso (Diagrama de flujo)

1.8.2.4 Decisin
Sirve para verificar el resultado de una expresin, en su interior se
almacena una condicin, y dependiendo del resultado de evaluacin de
la misma se sigue solo por uno de los caminos alternativos. Este smbolo
se utiliza en la estructura selectiva si entonces y en las estructuras
repetitivas repetir y mientras.

Universidad del Quindo 35


Geomtica Programacin para Topografa

No

Si

Figura 1-5 Decisin (Diagrama de flujo)

1.8.2.5 Decisin doble


Smbolo utilizado para representar la estructura selectiva doble si
entonces/sino. En su interior se almacena una condicin. Si el resultado
es verdadero se contina por el camino de la izquierda, y si es falso por
el camino de la derecha.

Si No

Figura 1-6 Decisin doble (Diagrama de flujo)

1.8.2.6 Decisin mltiple


En su interior se almacena un selector, y dependiendo del valor de dicho
selector se sigue por una de las ramas o caminos alternativos. Este
smbolo se utiliza en la estructura selectiva si mltiple.

36 Universidad del Quindo


Programacin para Topografa Geomtica

Figura 1-7 Decisin mltiple (Diagrama de flujo)

1.8.2.7 Salida
Smbolo utilizado para representar la impresin de un resultado. Expresa
escritura.

Figura 1-8 Salida (Diagrama de flujo)

1.8.2.8 Flujos
Son utilizadas para representar el progreso de los pasos en la secuencia;
la punta de la flecha indica la direccin del flujo del proceso.

Figura 1-9 Flujos (Diagrama de flujo)

Universidad del Quindo 37


Geomtica Programacin para Topografa

1.8.2.9 Conector
Es un punto de referencia que indica donde debe continuar el diagrama
de flujo. Se utiliza para indicar un cambio en el flujo normal de datos
dentro de una misma pgina.

Figura 1-10 Conector (Diagrama de flujo)

1.8.2.10 Conector
Es un punto de referencia que se usa como conexin entre pginas
diferentes.

Figura 1-11 Conector pginas diferentes (Diagrama de flujo)

1.8.2.11 Procedimiento
Este smbolo sustituye a todo un sub-programa. Para continuar con el
flujo normal del programa se debe resolver el sub-problema que se
enuncia en su interior.

Figura 1-12 Procedimiento (Diagrama de flujo)

38 Universidad del Quindo


Programacin para Topografa Geomtica

1.8.3 Mtodo para construir un


diagrama de flujo

1. Propsito: Analizar cmo se pretende utilizar el diagrama de


flujo.

2. Determinar el nivel de detalle requerido.

3. Definir los lmites del proceso, y enumerar los resultados.

4. Utilizar los smbolos apropiados para el diagrama de flujo.

5. Hacer preguntas como:

Qu produce este paso?

Quin recibe ste resultado?

Algunos de los pasos requieren entradas que no se han


realizado?

6. Documentar cada paso de la secuencia del algoritmo.

7. Revisar todo el diagrama, fijndose que todos los flujos de


informacin encajen en las entradas y salidas del proceso. El
diagrama debe mostrar la forma exacta de lo que se desea que
ocurra.

Universidad del Quindo 39


Geomtica Programacin para Topografa

1.8.4 Reglas para construir un diagrama


de flujo

1. Todo diagrama de flujo debe tener un inicio y un fin.

Inicio

Fin

Figura 1-13 Inicio fin

2. Las lneas utilizadas para indicar la direccin del flujo del


diagrama deben ser rectas, verticales y horizontales.

No deben ser inclinadas

No se deben cruzar

Figura 1-14 Direccin de flujos

40 Universidad del Quindo


Programacin para Topografa Geomtica

3. Todas las lneas utilizadas para indicar la direccin del flujo del
diagrama deben estar conectadas. La conexin puede ser a un
smbolo que exprese lectura, proceso, decisin, conexin,
impresin o fin de diagrama.

Figura 1-15 Conexiones

4. Cada smbolo significa un tipo de operacin

Entrada/Salida
Proceso
Decisin
Transferencia
Final.

5. La notacin utilizada en el diagrama de flujo debe ser


independiente del lenguaje de programacin.

Los diagramas de flujo se leen de arriba hacia abajo y de izquierda a


derecha.

Universidad del Quindo 41


Geomtica Programacin para Topografa

Una secuencia de operaciones se ejecuta hasta que un smbolo terminal


muestra el final de la ejecucin del proceso o un conector de bifurcacin
transfiere el control a otro punto del programa.

Ejemplo No 13:

Construir el diagrama de flujo para un algoritmo donde dada una


magnitud angular como dato, imprimir posible si es menor que 360 e
imposible si es mayor.

Inicio

Magnitud angular

Magnitud No Imposible
Angular
<360

Si

Posible

Fin

42 Universidad del Quindo


Programacin para Topografa Geomtica

Ejemplo No 14:

Dibujar un diagrama de flujo con el que se pueda representar el trabajo


necesario (campo y oficina) para determinar si se puede o no ajustar una
poligonal.
Inicio

Trabajo de campo

Medicin ngulos,
distancias (campo)

No
Error
Angular
aceptable

Si

GP. No
aceptable

Si

Ajuste poligonal

Datos ajustados

Fin

Universidad del Quindo 43


Geomtica Programacin para Topografa

Ejemplo No 15:

Dados los datos A, B y C que representan nmeros enteros diferentes,


construir un algoritmo para escribir estos nmeros en forma ascendente.
Este es un ejemplo de los algoritmos conocidos como de Lgica Pura, ya
que poseen muchas decisiones y muchas bifurcaciones.

Salidas: A, B y C ordenados ascendentemente.


Entradas: A, B y C.
La dinmica del problema es comparar dos nmeros a la vez
Inicio para conocer cul es el mayor.

A,B,C

Si Si
A>B B>C A,B,C

No No

Si Si
A>C B,A,C A>C A,C,B

No No

Si C,A,B
B>C B,C,A

No

C,B,A

Fin

44 Universidad del Quindo


Programacin para Topografa Geomtica

1.8.5 Seudocdigo

Seudo significa falso, por lo que se considera que seudocdigo no es


realmente un cdigo sino una versin abreviada de instrucciones reales
para los computadores.

Se considera un primer borrador, dado que el seudocdigo tiene que


traducirse a un lenguaje de programacin.

Esta tcnica es para diseo de programas y permite definir las


estructuras de datos, las operaciones que se aplicarn a los datos y la
lgica que tendr el programa para solucionar un determinado
problema. Lo ideal es utilizar un seudo-lenguaje muy parecido a nuestro
idioma, pero que respeta las directrices y los elementos de los lenguajes
de programacin.

La ventaja del seudocdigo es que su uso en la planificacin de un


programa, el programador se puede concentrar en la lgica y en las
estructuras de control y no preocuparse de las reglas de un lenguaje
especfico.

Ejemplo No 16:

/*
Cod: T-001

Nombre: area_triangulo

Fecha: marzo 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: calcula el rea de un tringulo rectngulo,


teniendo como datos de entrada la base y la
altura.

*/

Universidad del Quindo 45


Geomtica Programacin para Topografa

variables base: numerico


altura: numerico
area: numerico

inicio

imprimir("\n Entre la base: ")


leer (base)

imprimir("\n Entre la altura: ")


leer (altura)

area=(base*altura)/2

imprimir ("\n El area del tringulo es: ", area)

fin

Ejemplo No 17:

/*

Cod: T-002

Nombre: area_triangulo_heron

Fecha: marzo 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: calcula el rea de un tringulo, teniendo


como datos de entrada sus tres lados.

*/

variables
L1: numerico // lado 1
L2: numerico // lado 2
L3: numerico // lado 3
S: numerico // semiperimetro
area: numerico // area

46 Universidad del Quindo


Programacin para Topografa Geomtica

inicio

cls()

imprimir("\n Entre el lado 1: ")


leer (L1)

imprimir("\n Entre el lado 2: ")


leer (L2)

imprimir("\n Entre el lado 3: ")


leer (L3)

area = sqrt(S*(S-L1)*(S-L2)*(S-L3))

imprimir ("\n El area del trinagulo es: ", area)

fin

Ejemplo No 18:

/*

Cod: T-003

Nombre: distancia_entre_dos_puntos

Fecha: marzo 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: calcula la distancia horizontal entre


dos puntos, teniendo como datos de entrada
sus coordenadas Norte y Este.

*/

variables
N1: numerico // Norte punto 1
E1: numerico // Este punto 1
N2: numerico // Norte punto 2
E2: numerico // Este punto 2
d: numerico // distancia

Universidad del Quindo 47


Geomtica Programacin para Topografa

inicio

cls()

imprimir("\n Entre la Norte del punto 1: ")


leer (N1)

imprimir("\n Entre la Este del punto 1: ")


leer (E1)

imprimir("\n Entre la Norte del punto 2: ")


leer (N2)

imprimir("\n Entre la Este del punto 2: ")


leer (E2)

d = sqrt(((E2-E1)^2)+((N2-N1)^2))

imprimir ("\n La distancia horizontal es: ", d)

fin

Ejemplo No 19:

/*

Cod: T-004

Nombre: proyecciones

Fecha: marzo 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: calcula las proyecciones meridiana y


paralela teniendo como datos de
entrada el azimut y la distancia de
un punto a otro.
*/

variables

angulo : numerico
grados : numerico
minutos : numerico

48 Universidad del Quindo


Programacin para Topografa Geomtica

segundos : numerico
angulo_radianes: numerico
pm : numerico // proyeccion meridiana
pp : numerico // proyeccion paralela
dh : numerico // distancia horizontal

constantes

PI = 3.141592654

inicio

cls()

imprimir("\n Entre el angulo con formato GG.MMSS : ")


leer (angulo)

imprimir("\n Entre la distancia horizontal : ")


leer (dh)

grados = int(angulo)
minutos = (int((angulo-int(angulo))*100))/60
segundos = ((angulo*100-(int(angulo*100)))*100)/3600

angulo_radianes = (grados+minutos+segundos)*PI/180

pm = dh*cos(angulo_radianes)
pp = dh*sin(angulo_radianes)

imprimir ("\n\n PM: ",pm ,"\t PP: ",pp)

fin

Universidad del Quindo 49


Geomtica Programacin para Topografa

1.9 Ejercicios propuestos


1. Realice la siguiente asignacin teniendo en cuenta la jerarqua de
operadores

a 10 /(5 (((54 mod 4) **2) / 2) / 2) 78div 2 (4 7 mod 4))

2. Encuentre el resultado del operador relacional luego de procesar


la siguiente informacin:

A = 2 ; B = -2 ; C = 4

( A A 5 B 21 / 2) ( B (12div 2) 4 C mod 7)

3. Realice la tabla de asignacin correspondiente al siguiente


algoritmo para cada una de las variables.

Variables

I, CONT, J : entero
POS1, POS2 : real
TEXT : caracter
BAND : booleano
1. I0
2. I I+4 mod 3
3. CONT 4
4. J 5**2 div 3
5. TEXT topo
6. POS1 J div I
7. POS2 J/3
8. CONT (84>5) o (15<2**3)

50 Universidad del Quindo


Programacin para Topografa Geomtica

9. I POS2*5/J**2
10. I I*3
11. CONT POS1+POS2/5
12. BAND BAND o (I=J)
13. I CONT
14. TEXT J

4. Desarrolle un algoritmo en seudocdigo que calcule el punto de


cero, teniendo como datos de entrada la altura de corte, de
lleno, y la distancia entre dichas alturas.

5. Dado un ngulo en grados, minutos y segundos, dibuje un


diagrama de flujo que permita convertir dicho ngulo a radianes.

6. Realice un diagrama de flujo que permita calcular la distancia


horizontal por el mtodo exacto y el aproximado, teniendo como
datos de entrada la distancia geomtrica y la diferencia de nivel
entre los dos puntos en cuestin.

7. Realice un algoritmo mediante descripcin narrada que muestre


el protocolo para medir un ngulo por reiteracin.

8. Dibuje un diagrama de flujo que permita calcular la distancia


horizontal teniendo como datos de entrada HS, HM, lectura del
crculo vertical, y K.

9. Desarrolle un algoritmo en seudocdigo que permita calcular las


coordenadas de un punto teniendo como datos de entrada la
distancia inclinada y la lectura de los crculos horizontal y vertical.

10. Dibuje un diagrama de flujo que permita conocer el rumbo de


una lnea si se tiene como dato de entrada el azimut de la misma.

Universidad del Quindo 51


Captulo 2

Estructuras
algortmicas de
seleccin

Objetivo general:

Evaluar una o ms condiciones que permitan una serie de acciones que se deben
cumplir en el momento de tomar una decisin.

Objetivos especficos:

Identificar las diferencias entre las tres estructuras bsicas de decisin.

Utilizar las estructuras de decisin para solucionar problemas algortmicos.

53
Programacin para Topografa Geomtica

Tabla de contenido

2. Estructuras algortmicas de seleccin ........................... 57


2.1 Introduccin ...................................................................... 57
2.2 Estructura selectiva simple si entonces ............................. 58
2.3 Estructura selectiva doble si entonces / sino ..................... 60
2.4 Estructura selectiva mltiple si mltiple ........................... 63
2.5 Estructuras selectivas anidadas ........................................ 65
2.6 Ejercicios propuestos ........................................................ 75

Universidad del Quindo 55


Geomtica Programacin para Topografa

56 Universidad del Quindo


Programacin para Topografa Geomtica

2. Estructuras
algortmicas de
seleccin

2.1 Introduccin
La especificacin formal de algoritmos tiene utilidad cuando el algoritmo
requiere una descripcin ms complicada que una lista sencilla de
instrucciones. Este es el caso cuando existen un nmero de posibles
alternativas resultantes de la evaluacin de una determinada condicin
llamadas estructuras lgicas selectivas, esta toma de decisiones se basa
en la evaluacin de una o ms condiciones que sealarn el camino a
tomar. Hay situaciones en las que dicho camino se realiza en cascada; es
decir se toma una decisin, se marca el camino a seguir, se vuele a tomar
otra decisin y as sucesivamente, por este motivo para lograr la solucin
de un problema se debe aplicar un rbol de decisin.

Las estructuras algortmicas selectivas para la toma de decisiones son:

SI ENTONCES (estructura selectiva simple)


SI ENTONCES / SINO (estructura selectiva doble)
SI MULTIPLE (estructura selectiva mltiple)

Universidad del Quindo 57


Geomtica Programacin para Topografa

Cuando se aplican estructuras selectivas en cascada se pueden utilizar


combinaciones entre las estructuras sealadas.

2.2 Estructura selectiva simple si


entonces
Se identifica porque est compuesta solo de una condicin, si la
condicin es verdadera entonces ejecuta la accin SI (o acciones si son
varias), si la condicin es falsa entonces no hace nada.

No
Condicin

Si

Accin

Figura 2-1 Estructura selectiva si entonces

Donde:

Condicin expresa la condicin a evaluar.

Accin expresa la accin o el conjunto de ellas que se debe realizar si la


condicin resulta verdadera.

58 Universidad del Quindo


Programacin para Topografa Geomtica

Ejemplo No 20:

/*
Cod: T-005

Nombre: azimut

Fecha: marzo 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de decisin


simple si-entonces.
*/

variables

azimut: numerico

inicio

cls()

imprimir ("\n Entre el azimut: ")


leer (azimut)

si (azimut<=360)

{
imprimir ("\n se encuentra en el rango permitido")
}
fin

Representacin en diagrama de flujo:

Universidad del Quindo 59


Geomtica Programacin para Topografa

Inicio

azimut

Azimut<360 No

Si

Se encuentra en el
rango permitido

Fin

Figura 2-2 Diagrama de flujo seleccin simple

2.3 Estructura selectiva doble si


entonces / sino
Es una estructura lgica que permite controlar la ejecucin de varias
acciones y se utilizan cuando se tienen dos opciones de accin, por la
naturaleza de estas se debe ejecutar una o la otra, pero no ambas a la
vez, es decir, son mutuamente excluyentes.

Si No

Condicin

Accin1 Accin2

Figura 2-3 Estructura selectiva si entonces/ sino

60 Universidad del Quindo


Programacin para Topografa Geomtica

Donde:

Condicin expresa la condicin a evaluar.

Accin1 expresa la accin o el conjunto de ellas que se debe realizar si la


condicin resulta verdadera.

Accin2 expresa la accin o el conjunto de ellas que se debe realizar si la


condicin resulta falsa.

Ejemplo No 21:

/*
Cod: T-006

Nombre: azimut_2

Fecha: marzo 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de decisin


simple si-entonces / sino

*/

variables
azimut: numerico

inicio

cls()

imprimir ("\n Entre el azimut: ")


leer (azimut)

si (azimut<=360)

{
imprimir ("\n se encuentra en el rango permitido")

Universidad del Quindo 61


Geomtica Programacin para Topografa

sino
imprimir ("\n el valor se encuentra por fuera del
rango")
}

fin

Representacin en diagrama de flujo del ejemplo No 21:

Inicio

azimut

Si No
Azimut<360

Se encuentra en Se encuentra
el rango fuera del rango
permitido

Fin

Figura 2-4 Estructura selectiva doble

62 Universidad del Quindo


Programacin para Topografa Geomtica

2.4 Estructura selectiva mltiple si


mltiple
Con frecuencia es necesario que existan ms de dos elecciones posibles.
Este problema se puede resolver por estructuras selectivas simples o
dobles, anidadas, pero si el nmero de alternativas es grande puede
plantear serios problemas de escritura.

Usando la estructura de decisin mltiple se evaluar una expresin que


podr tomar N valores distintos, 1, 2 , 3, ....,N y segn que elija uno de
estos valores en la condicin, se realizar una de las N acciones o lo que
es igual, el flujo del algoritmo seguir slo un determinado camino entre
los N posibles. Esta estructura se representa por un selector el cual si
toma el valor 1 ejecutar la accin 1, si toma el valor 2 ejecutar la
accin 2, si toma el valor N realizar la accin N, se continuar con el
flujo normal del diagrama realizndose la accin N+1

Selector

Valor 1 Valor 2 Valor 3 (de otra forma)


Accin 1 Accin 2 Accin N

Accin N+1

Figura 2-5 Estructura selectiva si mltiple

Universidad del Quindo 63


Geomtica Programacin para Topografa

Donde:

Selector es la variable o expresin a evaluarse, y segn la cual se tomar


una de las mltiples decisiones.

Accin 1 expresa la operacin o conjunto de operaciones que se van a


realizar si el selector toma el Valor 1.

Accin 2 expresa la operacin o conjunto de operaciones que se van a


realizar si el selector toma el Valor 2.

Accin N expresa la operacin o conjunto de operaciones que se van a


realizar si el selector toma el Valor N.

Accin N+1 expresa la operacin que se va a realizar cuando se contine


con el flujo normal del diagrama.

Ejemplo No 22:

/*
Cod: T-007

Nombre: rumbo

Fecha: marzo 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de decisin


si_multiple. Calcula el azimut de
una lnea teniendo como dato de
entrada el rumbo de la misma

*/

Variables

azimut: numerico
rumbo: numerico
opcion: numerico

64 Universidad del Quindo


Programacin para Topografa Geomtica

inicio

cls()

imprimir ("\nElija el nmero de la opcin \n\n1.N-E (cuandrante 1)


\n\n 2.S-E (cuadrante 2) \n\n 3.S-W (cuadrante 3) \n\n 4.N-W
(cuadrante 4) \n\n Opcion? ")
leer (opcion)

eval
{
caso(opcion==1)
imprimir("\n Ingrese el valor del rumbo (NE): ")
leer (rumbo)
azimut=rumbo
imprimir("\n\n El valor del azimut es: ",azimut)

caso(opcion==2)
imprimir("\n Ingrese el valor del rumbo (SE): ")
leer (rumbo)
azimut=180-rumbo
imprimir("\n\n El valor del azimut es: ",azimut)

caso(opcion==3)
imprimir("\n Ingrese el valor del rumbo (SW): ")
leer (rumbo)
azimut=180+rumbo
imprimir("\n\n El valor del azimut es: ",azimut)

caso(opcion==4)
imprimir("\n Ingrese el valor del rumbo (NW): ")
leer (rumbo)
azimut=360-rumbo
imprimir("\n\n El valor del azimut es: ",azimut)

sino
imprimir("\n Opcion errada...")
}
Fin

2.5 Estructuras selectivas anidadas


En el desarrollo de la solucin de problemas mediante algoritmos, luego
de tomar una decisin y marcar el camino a seguir, es necesario tomar
otra decisin. Se seala el nuevo camino a seguir luego de evaluar la

Universidad del Quindo 65


Geomtica Programacin para Topografa

condicin, y nuevamente se debe tomar otra decisin. Este proceso


puede repetirse numerosas veces; en este caso para resolver el
problema, se estn aplicando estructuras selectivas anidadas o tambin
llamadas en cascada. Estas estructuras no son ms que la combinacin
de las estructuras ya vistas.

Si No

Condicion1

No
Selector
Condicion5

Si

Valor1 valor2 De otra forma

No Si No
Accin21 Accin 51
Condicion3 Condicion4

Si

Accin31 Accin41 Accin42

Figura 2-6 Estructuras selectivas anidadas

Expresando el anterior diagrama de flujo en seudocdigo se tiene que:

66 Universidad del Quindo


Programacin para Topografa Geomtica

.
.
.
Si condicin1
entonces
Si selector1 igual
Valor1: Hacer accin21
Valor2:
Si condicion3 entonces
Hacer accin31
{ fin condicional si }
De otra forma:
Si condicin4
entonces
Hacer accin41
sino
Hacer accin42
{ fin condicional si}
{ fin condicional si }
sino
si condicin5 entonces
Hacer accin51
{ fin condicional si }
{ fin condicional si }
.
.
.

Ejemplo No 23:

Dibujar un diagrama de flujo y su equivalente en seudocdigo que


permita determinar si un nmero, es positivo, negativo o nulo, teniendo
como dato de entrada un nmero entero.

Universidad del Quindo 67


Geomtica Programacin para Topografa

Inicio

Num

Si No

Num=0

Nulo Si No
Num>0

Positivo Negativo

Fin

Figura 2-7 Estructura selectiva anidada

/*
Cod: T-008

Nombre: nulo_positivo_negativo

Fecha: abril 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de decisin


anidadas. determina si un numero es
nulo, positivo o negativo.

*/

68 Universidad del Quindo


Programacin para Topografa Geomtica

variables num: numerico

inicio

cls()

imprimir ("\n Entre un nmero entero: ")


leer (num)

si (num==0)
{
imprimir ("\n El nmero es cero")
sino
si (num>0)
{
imprimir ("\n El nmero es positivo")
sino
imprimir ("\n El nmero es negativo")
}
}
fin

Ejemplo No 24:

Dado un nmero entero, escriba en seudocdigo, un algoritmo para


determinar si es par, impar o nulo; adems de determinar cuntos
dgitos tiene.

/*
Cod: T-009

Nombre: nulo_positivo_negativo_2

Fecha: abril 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de decisin


anidadas. Determina si un nmero es
nulo, positivo o negativo, y cuenta
el numero de dgitos que tiene.

*/

Universidad del Quindo 69


Geomtica Programacin para Topografa

variables

entero: numerico // numero entrado por el usuario

inicio

imprimir ("\n Entre un numero: ")


leer (entero)

si(entero>0)
{
si(entero>=1 and entero<=9)
{
imprimir("\n El numero es positivo, y tiene una
cifra")
}
si (entero>=10 and entero<=99)
{
imprimir("\n El numero es positivo, y
tiene dos cifras")
}
}

si (entero<0)
{
si(entero>=-9 and entero<=-1)
{
imprimir("\n El numero es negativo y tiene una
cifra")
}
si (entero>=-99 and entero<=-10)
{
imprimir("\n El numero es negativo y
tiene dos cifras")
}
}
si(entero==0)
{
imprimir("\n El numero es cero")
}

fin

70 Universidad del Quindo


Programacin para Topografa Geomtica

Ejemplo No 25:

Dado un nmero entero A, disee un diagrama de flujo y su equivalente


en seudocdigo, para determinar si es par, impar o nulo.

Inicio

Si No
A=0

Nulo Si No
-1**A > 0

Par Impar

Fin

Figura 2-8 Estructura selectiva anidada

/*
Cod: T-010

Nombre: nulo_par_impar

Fecha: abril 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de decisin


anidadas. Determina si un nmero es
nulo, par o impar.
*/

Universidad del Quindo 71


Geomtica Programacin para Topografa

variables

num: numerico

inicio

cls()

imprimir ("\n Entre un nmero entero: ")


leer (num)

si (num==0)
{
imprimir ("\n El nmero es neutro")
sino
si ((-1)^num>0) // ... otra opcin sera con
el mdulo de la divisin: si
(num%2==0)
{
imprimir ("\n El nmero es par")
sino
imprimir ("\n El nmero es impar")
}
}
fin

Ejemplo No 26:

Realice en seudocdigo un programa que calcule el rumbo de una lnea y


la distancia entre sus extremos, teniendo como datos de entrada las
coordenadas de los extremos de la lnea.

/*
Cod: T-011

Nombre: rumbo_distancia

Fecha: abril 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcin: programa que calcula el rumbo de una lnea


y la distancia entre sus extremos, teniendo
como datos de entrada las coordenadas de los
extremos de la lnea.
*/

72 Universidad del Quindo


Programacin para Topografa Geomtica

constantes
PI: 3.14159265358979

variables

N1, N2, E1, E2, DH, RBO: numerico


aux, grados, minutos, segundos: numerico

inicio

cls()

/* Entrada de coordenadas */

imprimir ("\n N1= ")


leer (N1)

imprimir ("\n E1= ")


leer (E1)

imprimir ("\n N2= ")


leer (N2)

imprimir ("\n E2= ")


leer (E2)

/* Clculo de distancia horizontal */

DH=sqrt((N2-N1)^2+(E2-E1)^2)

/* Clculo del rumbo */

si (E2-E1==0 and N2>N1)


{
imprimir ("\n\n El rumbo es Norte")
imprimir ("\n\n La distancia horizontal es: ", DH)
terminar()

sino
si(E2-E1==0 and N2<N1)
{
imprimir("\n\n El rumbo es
Sur")
imprimir ("\n\n La distancia
horizontal es: ", DH)
terminar()
sino
si(N2-N1==0 and E2>E1)
{

Universidad del Quindo 73


Geomtica Programacin para Topografa

imprimir("\n\n El Rumbo es
Este")
imprimir ("\n\n La distancia
horizontal es: ", DH)
terminar()

sino
si (N2-N1==0and E2<E1)

{
imprimir("\n\nEl rumbo
es Oeste")
imprimir ("\n\n La
distancia horizontal
es: ", DH)
terminar()
}
}
}
}

si (N2-N1>0)
{
imprimir("\n\n El rumbo de la lnea es: ")
imprimir ("\r N ")
sino
imprimir ("\r S")
}

RBO = arctan((E2-E1)/(N2-N1))

aux=abs(RBO)*(180/PI) //valor del rumbo en radianes almacenado en


la variable aux

/* Proceso que convierte el valor en radianes a una magnitud angular */

grados=int(aux)
minutos=int((aux-grados)*60)
segundos=(((aux-grados)*60)-(int((aux-grados)*60)))*60

/* Esta estructura permite hacer el redondeo de los segundos */

si (segundos-int(segundos)>=0.50)
{
segundos=int(segundos)+1
sino
segundos=int(segundos)
}

74 Universidad del Quindo


Programacin para Topografa Geomtica

imprimir(grados,"\r")
imprimir(minutos,"\r'")
imprimir(segundos,"\r''")

si (E2-E1>0)
{
imprimir ("\rE")
sino
imprimir ("\r W")
}

imprimir ("\n\n La distancia horizontal es: ", DH)

fin

2.6 Ejercicios propuestos

1. Realice un programa en seudocdigo que permita calcular las


proyecciones meridiana y paralela, y la distancia horizontal a
partir de los datos de lectura taquimtrica.

2. Elabore un algoritmo que calcule la cota de un punto mediante


nivelacin taquimtrica, y que tenga como datos de entrada:
altura instrumental, HS, HM, HI, y lectura del ngulo cenital. Se
bebe tener en cuenta que: si al momento de registrar el ngulo
cenital no se pudo proyectar la altura instrumental con el hilo
medio [por un obstculo en la visual], se debe aplicar la
correccin al ngulo =[(T-O) cos ]/D* sen 1; donde D es la
distancia inclinada, T es la altura del instrumento, y O es la altura
del punto visado.

3. Escriba un programa que haga una conversin de azimut a


rumbo.

Universidad del Quindo 75


Geomtica Programacin para Topografa

4. Dibuje un diagrama de flujo que permita calcular las coordenadas


de N nmero de puntos en un levantamiento radial, teniendo
como datos de entrada azimut y distancia horizontal.

5. Realice un algoritmo en seudocdigo que permita hacer


conversin de ngulos horarios en deflexiones.

6. Elabore un algoritmo que permita calcular las coordenadas de los


vrtices de una poligonal abierta, teniendo como datos de
entrada deflexin y distancia horizontal.

76 Universidad del Quindo


Captulo 3

Estructuras
algortmicas de
repeticin

Objetivo general:

Utilizar una estructura para hacer que una parte el cdigo se repita un nmero finito
de veces ahorrando tiempo y lneas de cdigo.

Objetivos especficos:

Identificar los ciclos como un elemento fundamental de la programacin


estructurada.

Proponer estructuras cclicas a soluciones que tengan lneas de cdigo que se


repiten una y otra vez.

77
Programacin para Topografa Geomtica

Tabla de contenido

3. Estructuras algortmicas de repeticin ......................... 81


3.1 Introduccin ..................................................................... 81
3.2 Estructura Mientras .......................................................... 82
3.2.1 Ciclo Mientras .......................................................................... 82
3.2.2 Ejecucin de un bucle cero veces ............................................ 83
3.2.3 Bucles infinitos ......................................................................... 84
3.2.4 Terminacin de bucles con datos de entrada ......................... 84
3.3 Estructura repetir ............................................................. 84
3.3.1 Ciclo Repetir ............................................................................. 85
3.4 Estructura Desde .............................................................. 87
3.4.1 Ciclo Desde............................................................................... 87
3.5 Estructuras repetitivas anidadas ....................................... 91
3.6 Ejercicios propuestos ........................................................ 91

Universidad del Quindo 79


Geomtica Programacin para Topografa

80 Universidad del Quindo


Programacin para Topografa Geomtica

3. Estructuras
algortmicas de
repeticin

3.1 Introduccin
El diseo de los computadores est hecho especialmente para aquellas
aplicaciones en las que una operacin o conjunto de operaciones deben
repetirse muchas veces.

Las estructuras repetitivas se utilizan cuando se quiere que un conjunto


de instrucciones se ejecuten un cierto nmero finito de veces.

Las estructuras que repiten una secuencia de instrucciones un nmero


determinado de veces se denominan bucles y, al hecho de repetir la
ejecucin de una secuencia de acciones se denomina iteracin.

Universidad del Quindo 81


Geomtica Programacin para Topografa

3.2 Estructura Mientras


Esta estructura repetitiva mientras, es en la que el cuerpo del bucle se
repite cuando se cumple una determinada condicin.

Los ciclos son estructuras de control que permiten ejecutar varias veces
una operacin. Existen varios tipos de ciclos:

3.2.1 Ciclo Mientras


En este ciclo se repite una operacin, mientras se cumpla una cierta
condicin.

No
Condicion1

Si

Accin1

Figura 3-1 Estructura repetitiva Mientras

Ejemplo No 27:

Realice en seudocdigo un programa que permita mediante la estructura


de repeticin mientras el ingreso a un sistema o negarlo.

82 Universidad del Quindo


Programacin para Topografa Geomtica

/*
Cod: T-012

Nombre: mientras

Fecha: abril 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de repeticin mientras

*/
variables clave: cadena
geomatica: cadena
inicio

cls()

imprimir ("\n Por favor ingrese la calve de acceso ")


leer (clave)

mientras (clave <> "geomatica")


{
imprimir ("\n La clave es
incorrecta....ACCESO DENEGADO")
terminar()
}

imprimir("\n La calve es vlida...puede ingresar al sistema !!")

fin

3.2.2 Ejecucin de un bucle cero veces

Si se observa en una estructura mientras, lo primero que se da es la


evaluacin de una expresin booleana. Si es falsa, entonces las acciones
del bucle no se ejecutan nunca. Esta accin puede parecer intil,
afectar a ningn valor o salida. Sin embargo puede ser la accin
deseada.

Universidad del Quindo 83


Geomtica Programacin para Topografa

3.2.3 Bucles infinitos

En algunas ocasiones los bucles no exigen final y en otras, no tienen fin


por errores en su diseo. Los programas o bucles corrern siempre o
mientras la mquina est encendida, e incluso habrn situaciones en las
que nunca se cumpla la condicin, eso significa que el bucle no se
detendr nunca. A estos bucles se les llama bucles sin fin o infinito, y por
su condicin deben evitarse siempre, por que afectan en forma
perjudicial a la programacin.

3.2.4 Terminacin de bucles con datos


de entrada

Si un algoritmo lee una lista de valores con un bucle mientras, se debe


incluir algn tipo de mecanismo para terminar el bucle. Para llevar esto a
cabo, existen cuatro mtodos tpicos para terminar un bucle de entrada:

1. Preguntas antes de la iteracin


2. Encabezar la lista de datos con su tamao
3. Finalizar la lista con su valor de entrada
4. Agotar los datos de entrada

3.3 Estructura repetir


Generalmente se quiere que un bucle se ejecute, mnimo una vez, antes
de que la condicin de repeticin sea cumplida o se compruebe. En la
estructura mientras, si la condicin es falsa, no se dar ninguna
ejecucin. Esta estructura se ejecutar mientras se cumpla una condicin
determinada, la cual es comprobada al final del bucle.

84 Universidad del Quindo


Programacin para Topografa Geomtica

3.3.1 Ciclo Repetir

En este ciclo se ejecuta una operacin hasta que se cumpla una


condicin. Ahora se ejecuta primero la operacin y se verifica la
condicin despus.

Accin1

No
Condicion1

Si

Figura 3-2 Estructura repetitiva Repetir

Ejemplo No 28:

Escribir un programa en seudocdigo que dado como datos de entrada n


nmeros enteros se obtenga el nmero de ceros (0) que hay entre estos
nmeros.

/*
Cod: T-013

Nombre: repetir

Fecha: abril 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de repeticin Repetir.


El usuario ingresa "n" nmeros enteros, y el
programa debe obtener la cantidad de ceros
que existen entre estos nmeros.

*/

Universidad del Quindo 85


Geomtica Programacin para Topografa

variables

i: numerico // auxiliar del ciclo


n: numerico // nmero total de datos que se ingresan
num: numerico // representa al nmero que se ingresa
cont: numerico // contador de ceros

inicio

cls()

imprimir ("\n Entre el nmero total de datos: ")


leer (n)

repetir
imprimir ("\n Entre el valor : ")
leer (num)
si (num==0)
{
cont=cont+1
}
i=i+1
hasta (i==n)

imprimir("\n existen ",cont," ceros")

fin

Repetir es opuesta a la estructura mientras. Repetir se ejecuta hasta que


se cumpla una condicin que se comprueba al final del bucle. Esto
implica que las instrucciones que forman el cuerpo del bucle se ejecutan
por lo menos una vez. Con la estructura mientras el bucle puede
ejecutarse 0 o ms veces.

Lo que el procesador hace al ejecutar la estructura repetir es:

Se ejecutan: instruccin 1, instruccin 2, instruccin 3,......

Se evala la condicin. Si esta es FALSA se vuelve a repetir el ciclo


y se ejecutan instruccin 1, instruccin 2, instruccin 3,......

Si la condicin es VERDADERA se sale del ciclo y se ejecuta instruccin X.

86 Universidad del Quindo


Programacin para Topografa Geomtica

Mientras Repetir

Comprobacin de la condicin al inicio, Comprobacin de la condicin al


antes de entrar al ciclo final, despus de haber ingresado
una vez al ciclo

Las instrucciones del cuerpo del ciclo se Las instrucciones del cuerpo del ciclo
ejecutan en forma repetitiva si la se ejecutan si la condicin es falsa
condicin es verdadera

Las acciones del ciclo se pueden ejecutar Las acciones del ciclo se ejecutan por
cero o ms veces lo menos una vez

Tabla 3-1 Diferencias entre estructuras Mientras y Repetir

3.4 Estructura Desde


Muchas veces ya se conoce el nmero de veces que se deben ejecutar
las acciones de un bucle. Pero cuando se quiere que el nmero de
iteraciones sea un nmero determinado, los programadores utilizan el
tipo de estructura desde.

3.4.1 Ciclo Desde

En este ciclo se ejecuta una operacin un cierto nmero de veces,


especificando en un contador el incremento unitario, desde un Valor
Inicial hasta un Valor Final que marcar la condicin de salida del ciclo.

Universidad del Quindo 87


Geomtica Programacin para Topografa

Valor Inicial

Accin1

Incremento

No
Valor Final

Si

Figura 3-3 Estructura repetitiva Desde

Esta estructura accionar el ciclo las veces que sea necesario, llevando
de manera automtica un control sobre el nmero de iteraciones o
pasos a travs del cuerpo del bucle.

Ejemplo No 29:

Elabore un programa con la estructura desde que permita imprimir los


nmeros del 1 hasta el 100 en forma continua, y que tambin imprima
los nmeros pares que existen en el mismo rango.

/*
Cod: T-014

Nombre: desde

Fecha: abril 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de repeticin desde

*/

88 Universidad del Quindo


Programacin para Topografa Geomtica

variables i: numerico

inicio

cls()

imprimir ("\n\n numeracion continua 1-100 \n\n")

desde i=1 hasta 100 paso 1


{
imprimir("\t",i)
}

imprimir ("\n\n numeracion de dos en dos 2-100 \n\n")

desde i=2 hasta 100 paso 2


{
imprimir ("\t",i)
}

fin

Ejemplo No 30:

Escribir un programa en seudocdigo que imprima los n primeros


trminos de la sucesin de Fibonacci.

Anlisis:

La serie Fibonacci es:


0, 1, 1, 2, 3, 5, 8, 13, 21, 35, 56

La serie se inicia en cero (0), luego sigue uno (1), y el siguiente trmino
ser la suma de los dos anteriores.

0, 1, 0+1 = 0, 1, 1

Luego
0, 1, 1, 1+1 = 0, 1, 1, 2

Y as sucesivamente
0, 1, 1, 2, 2+1 = 0, 1, 1, 2, 3

Universidad del Quindo 89


Geomtica Programacin para Topografa

Los dos primeros trminos (0 y 1) sern introducidos en dos variables a y


b, en cada iteracin se suman los dos trminos anteriores y se deben
reasignar los valores de las variables.

/*
Cod: T-015

Nombre: Fibonacci

Fecha: abril 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: ejemplo de estructura de repeticin desde.


Imprime los nmeros de la serie Fibonacci
hasta un valor tope indicado por el usuario

*/

variables

a: numerico
b: numerico
n: numerico // nmero de elementos de la serie
i: numerico // auxiliar del ciclo
fibo: numerico // almacena el nuevo valor de la serie

inicio

cls()

imprimir ("\n\n Entre el nmero de elementos que desea imprimir de


la serie FIBONACCI: \n\n")
leer (n)

a=0
b=1

imprimir ("\n La serie es: ")

desde i=1 hasta n paso 1


{
imprimir("\t",a)

fibo=a+b
a=b
b=fibo
}

fin

90 Universidad del Quindo


Programacin para Topografa Geomtica

3.5 Estructuras repetitivas anidadas


As como las estructuras de seleccin pueden ser anidadas, es posible
que un ciclo pueda ser insertado dentro de otro. Para los dos casos, las
reglas de construccin de estructuras repetitivas anidadas son iguales: la
estructura interna deber estar totalmente dentro de la externa no
pudiendo existir traslapos.

Las variables ndices o de control de los bucles toman valores, de modo


tal que por cada valor de la variable ndice del ciclo externo se debe
ejecutar totalmente en el bucle interno.

3.6 Ejercicios propuestos


1. Escriba un programa en seudocdigo que calcule las
proyecciones y coordenadas de un polgono abierto sin control, a
partir de ngulos horarios y distancias calculadas
taquimtricamente.

2. Elabore un programa en seudocdigo que calcule la sumatoria de


ngulos internos y externos de una poligonal.

3. Escriba un programa de forma tal que dado como datos de


entrada 20 magnitudes angulares con formato GG.MMSS,
obtenga el promedio de todos aquellos que sean 18030

4. Escriba un programa que calcule desniveles taquimtricamente


entre un BM1 y un BM2.

5. Dibuje un diagrama de flujo que obtenga la suma e imprima los


trminos de la siguiente serie: 2, 5, 7, 10, 12, 15, 17, , 1800

Universidad del Quindo 91


Geomtica Programacin para Topografa

6. Escriba un diagrama de flujo que lea un nmero entero N y


calcule el resultado de la siguiente serie:

1 1 1 1
1 + +
2 3 4

92 Universidad del Quindo


Captulo 4

Estructuras de datos

Objetivo general:

Agrupar informacin de un mismo tipo en una estructura que permita realizar


procesos, bsquedas, inserciones y modificaciones de forma ordenada.

Objetivos especficos:

Realizar operaciones bsicas con matrices.

Definir y asociar algoritmos a estructuras de datos.

Tabular informacin en matrices y vectores de forma tal que puedan ser


analizadas.

93
Programacin para Topografa Geomtica

Tabla de contenido

4. Estructuras de datos .................................................. 97


4.1 Introduccin ..................................................................... 97
4.2 Datos estructurados ......................................................... 97
4.2.1 Estructuras de datos estticas ................................................. 98
4.2.2 Estructuras de datos dinmicas ............................................... 98
4.3 Arreglos............................................................................ 98
4.3.1 Vectores .................................................................................. 100
4.3.1.1 Definicin de arreglos .............................................................. 100

4.4 Operaciones bsicas con vectores ................................... 101


4.4.1 Lectura ................................................................................... 102
4.4.2 Bsqueda ............................................................................... 103
4.4.3 Modificacin .......................................................................... 105
4.4.4 Eliminacin ............................................................................. 109
4.5 Arreglos ordenados ........................................................ 115
4.5.1 Insercin................................................................................. 115
4.5.2 Bsqueda ............................................................................... 116
4.5.3 Eliminacin ............................................................................. 121
4.6 Arreglos bidimensionales (matrices) ............................... 126
4.6.1 Declaracin de arreglos bidimensionales .............................. 127
4.6.2 Lectura ................................................................................... 127
4.7 Caractersticas avanzadas de los arreglos........................ 130

Universidad del Quindo 95


Geomtica Programacin para Topografa

4.7.1 Creacin dinmica de arreglos .............................................. 131


4.7.2 Combinaciones de arreglos abiertos y de tamao fijo .......... 132
4.8 Ejercicios propuestos ...................................................... 136

96 Universidad del Quindo


Programacin para Topografa Geomtica

4. Estructuras
de datos

4.1 Introduccin
Todas las variables que se han considerado hasta ahora son de tipo
simple. Una variable de tipo simple consiste de una sola caja de memoria
y slo puede contener un valor cada vez. Una variable de tipo
estructurado consiste en toda una coleccin de casillas de memoria. Los
tipos de datos estudiados: entero, real, caracter, son considerados como
datos de tipo simple, puesto que una variable que se define con alguno
de estos tipos slo puede almacenar un valor a la vez, es decir, existe
una relacin de uno a uno entre la variable y el nmero de elementos
(valores) que es capaz de almacenar. En cambio un dato de tipo
estructurado, como el arreglo, puede almacenar ms de un elemento
(valor) a la vez, con la condicin de que todos los elementos deben ser
del mismo tipo, es decir, que se puede tener un conjunto de datos
enteros, reales, etc.

4.2 Datos estructurados


Estructura de Datos es una coleccin de datos que se caracterizan por su
organizacin y las operaciones que se definen en ella. Los datos de tipo

Universidad del Quindo 97


Geomtica Programacin para Topografa

estndar pueden ser organizados en diferentes estructuras de datos:


estticas y dinmicas.

4.2.1 Estructuras de datos estticas

Son aquellas en las que el espacio ocupado en memoria se define en


tiempo de compilacin y no puede ser modificado durante la ejecucin
del programa. Corresponden a este tipo los arreglos y registros.

4.2.2 Estructuras de datos dinmicas

Son aquellas en las que el espacio ocupado en memoria puede ser


modificado en tiempo de ejecucin. Corresponden a este tipo las listas,
rboles y grafos. Estas estructuras no son soportadas en todos los
lenguajes. La eleccin de la estructura de datos idnea depender de la
naturaleza del problema a resolver y, en menor medida, del lenguaje. Las
estructuras de datos tienen en comn que un identificador, nombre,
puede representar a mltiples datos individuales.

4.3 Arreglos
Un arreglo es una coleccin de datos del mismo tipo, que se almacenan
en posiciones consecutivas de memoria y reciben un nombre comn.
Para referirse a un determinado elemento de un arreglo se deber
utilizar un ndice, que especifique su posicin relativa.

Un arreglo es una coleccin finita, homognea y ordenada de elementos.

98 Universidad del Quindo


Programacin para Topografa Geomtica

Finita: Todo arreglo tiene un lmite; es decir, debe determinarse cul


ser el nmero mximo de elementos que podrn formar parte del
arreglo.

Homognea: Todos los elementos del arreglo deben ser del mismo tipo.

Ordenada: Se puede determinar cul es el primer elemento, el segundo,


el tercero,.... y el n-simo elemento.

Los arreglos se clasifican de acuerdo con el nmero de dimensiones que


tienen. As se tienen:

Unidimensionales (vectores)
Bidimensionales (matrices)
Tridimensionales

Elemento 1 Elemento 2 Elemento Elemento n


1111nto 1111nto

Figura 4-1 Representacin grfica arreglo unidimensional (vector)

Elemento 1, 1 Elemento 1, 2 Elemento Elemento 1, n

Elemento 2,1 Elemento 2, 2 Elemento


1111nto Elemento 2, n

Elemento Elemento Elemento Elemento

Elemento m, 1 Elemento m, 2 Elemento Elemento m, n


to

Figura 4-2 Representacin grfica arreglo bidimensional (matriz)

Universidad del Quindo 99


Geomtica Programacin para Topografa

Figura 4-3 Representacin grfica arreglo tridimensional

4.3.1 Vectores

Un vector se define como una coleccin finita, homognea y ordenada


de elementos, tiene la caracterstica de que se puede almacenar a n
elementos distinguindose as dos partes en los vectores: los ndices y
los componentes.

Los componentes hacen referencia a los elementos que componen o


forman el arreglo. Es decir son los valores que se almacenan en cada una
de sus casillas.

Los ndices son los que permiten acceso a los componentes del arreglo
en forma individual, para hacer referencia a un componente de un
arreglo se necesitan el nombre del arreglo y el ndice del elemento.

4.3.1.1 Definicin de arreglos

De manera general se define un vector as:

100 Universidad del Quindo


Programacin para Topografa Geomtica

Nombre_vector: vector[lim_inf-limi_sup] tipo

Con tipo se declara el tipo de dato para todos los elementos del arreglo.
El tipo de los elementos no tiene que ser necesariamente el mismo que
el de los ndices.

Importante:

El tipo del ndice puede ser cualquier tipo ordinal (carcter,


entro)

El tipo de componentes puede ser cualquier tipo (entero, real,


carcter, registro, arreglo,)

Se utilizan corchetes [] para indicar el ndice de un arreglo. Entre


los corchetes se debe escribir un valor ordinal (puede ser una
variable, una constante, o una expresin tan compleja como se
quiera, pero que de cmo resultado un valor ordinal.

4.4 Operaciones bsicas con vectores


Las operaciones ms comunes que se presentan en el trabajo con
vectores son:

Lectura
Bsqueda
Modificacin
Eliminacin

Universidad del Quindo 101


Geomtica Programacin para Topografa

Como los vectores son datos estructurados, muchas de estas


operaciones no pueden llevarse a cabo de manera global, sino que se
debe trabajar sobre cada elemento.

4.4.1 Lectura

El proceso de lectura en un vector consiste en leer y asignar un valor a


cada uno de sus elementos.

Ejemplo No 31

Definir un vector con capacidad mxima de 10 elementos, en el cual se


puedan almacenar distintos valores numricos. Adicional a esto se desea
imprimir el vector.

/*

Cod: T-016

Nombre: vector_1 (inserta elementos desordenado)

Fecha: mayo 2006

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Este programa inserta elementos de forma


desordenada dentro de un arreglo, una vez
leidos los elementos, imprime el vector.
*/

variables

a:vector[10] numerico // arreglo con capacidad maxima de 10 elementos


n:numerico // almacena el nmero actual de elementos del vector
y:numerico // representa al elemento que se va a ingresar
i:numrico // ndice del ciclo

102 Universidad del Quindo


Programacin para Topografa Geomtica

inicio

cls()

imprimir ("\n Entre el nmero de elementos del vector: ")


leer (n)

si (n<10)
{
desde i=1 hasta n paso 1 // ciclo que permite
leer el vector
{
imprimir ("\n Entre el elemento: ", i,": ")
leer (y)

a[i]=y
}

sino
imprimir ("\n No hay espacio para insertar
los elementos...")
}

imprimir("\n\n El vector es :", "{")

desde i=1 hasta n paso 1 // ciclo que permite imprimir


el vector
{

imprimir( "\t " ,a[i])


}

imprimir("\t }")

fin

4.4.2 Bsqueda

El proceso de bsqueda en un vector consiste en hallar un valor deseado


dentro de los elementos del vector.

Universidad del Quindo 103


Geomtica Programacin para Topografa

Ejemplo No 32

Definir un vector con capacidad mxima de 10 elementos, en el cual se


pueda identificar el mayor de sus elementos y la posicin que ocupa
dentro del arreglo.
/*

Cod: T-016

Nombre: vector_1 (inserta elementos desordenado)

Fecha: mayo 2006

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Este programa inserta elementos de forma


desordenada dentro de un arreglo, una vez
leidos los elementos, imprime el vector.
*/

variables

a:vector[10] numerico // arreglo con capacidad mxima de 10 elementos


n:numerico // almacena el nmero actual de elementos del
arreglo
y:numerico // representa al elemento que se va a ingresar
i:numerico // ndice del ciclo

inicio

cls()

imprimir ("\n Entre el nmero de elementos del vector: ")


leer (n)

si (n<10)
{
desde i=1 hasta n paso 1 // ciclo que permite
leer el vector
{
imprimir ("\n Entre el elemento: ", i,": ")
leer (y)

a[i]=y
}

104 Universidad del Quindo


Programacin para Topografa Geomtica

sino
imprimir ("\n No hay espacio para insertar
los elementos...")
}

imprimir("\n\n El vector es :", "{")

desde i=1 hasta n paso 1 // ciclo que permite imprimir


el vector
{

imprimir( "\t " ,a[i])


}

imprimir("\t }")

fin

4.4.3 Modificacin

Para modificar un elemento X por un elemento Y de un arreglo A que se


encuentra con elementos desordenados debe verificarse que el vector
no se encuentre vaco, y que X se encuentre en el vector. Si se cumplen
estas condiciones entonces se proceder a hacer la actualizacin.

Universidad del Quindo 105


Geomtica Programacin para Topografa

inicio

Si No
n>=1

i=1
band =falso El vector se
encuentra vaco

No
i<=n
Band=falso

Si

Si A[i]=x No

y i=i+1

A[i]=y
Band=verdadero

No
Band=falso

Si

El elemento x
no est en el
vector

fin

Figura 4-4 Diagrama de flujo modificacin

106 Universidad del Quindo


Programacin para Topografa Geomtica

/*

Cod: T-018

Nombre: vector_3 (modifica elemento desordenado)

Fecha: mayo 2006

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Este programa lee un vector definido por el


usuario, busca un elemento y la cambia por
otro que es ingresado por el usuario; si el
elemento existe en ms de una posicin
dentro del vector ste ser eliminado solo
de la primera de sus posiciones.

*/

variables

a:vector[10] numerico
i:numerico //variable de control del ciclo e ndice del arreglo
n:numerico //almacena el nmero actual de elementos del arreglo
p:numerico //almacena el elemento en el vector
x:numerico //representa el elemento que se va a modificar
y:numerico //representa al elemento que se introduce y modifica
al elemento x
band: logico //cambia su valor a verdadero si encuentra el
elemento a modificar

inicio

cls()

imprimir ("\n Entre el nmero de elementos del vector: ")


leer (n)

si (n<10)
{
desde i=1 hasta n paso 1 // ciclo que permite
leer el vector
{
imprimir ("\n Entre el elemento: ", i,":")
leer (p)

a[i]=p
}

sino

Universidad del Quindo 107


Geomtica Programacin para Topografa

imprimir ("\n No hay espacio para insertar


el elemento")
}

i=1

si (n>=1)
{
imprimir ("\n Entre el elemento que se va a
modificar: ")
leer (x)

mientras (i<=n and band==FALSE)


{
si (a[i]==x)
{
imprimir("\n Entre el
el nuevo elemento: ")
leer (y)

a[i]=y
band=TRUE
sino
i=i+1
}
}

si (band==FALSE)
{
imprimir("\n El
elemento no est en el
arreglo")
}
sino
imprimir ("\n El arreglo est vaco")
}

imprimir("\n\n El nuevo vector es : ", "[")

desde i=1 hasta n paso 1 // ciclo que permite imprimir el vector


{

imprimir( "\t " ,a[i])


}

imprimir("\t ]")

fin

108 Universidad del Quindo


Programacin para Topografa Geomtica

4.4.4 Eliminacin

Para eliminar un elemento X por un elemento Y de un arreglo A


desordenado debe verificarse que el vector no est vaco y que X se
encuentre en el vector. Si se cumplen estas condiciones entonces se
proceder a recorrer todos los elementos que estn a la derecha a una
posicin a la izquierda, decrementando el nmero de elementos del
vector.

Universidad del Quindo 109


Geomtica Programacin para Topografa

inicio

Si n>=1 No

i=1
El elemento x
band =falso
no est en el
vector

i<=n
No
Band=falso

Si

Si No
A[i]=x

band =verdadero i=i+1


n = n-1

k=i

K<=n No

Si

A[k]=a[k+1]
k = k+1

No
Band=falso

Si

El elemento x
no est en el
vector Figura 4-5 Diagrama de flujo
Eliminacin

fin

110 Universidad del Quindo


Programacin para Topografa Geomtica

/*

Cod: T-019

Nombre: vector_4 (elimina desordenado)

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: lee un vector, una vez termina de hacerlo,


pregunta por elemento a eliminar; si el
elemento buscado se encuentra ms de una vez
en el vector solo ser eliminado de la
primera de las posiciones donde se encuentre
*/

variables

a:vector[10] numerico
i:numerico // variable de control del ciclo e ndice del arreglo
n:numerico // almacena el nmero actual de elementos del arreglo
x: numerico // almacena la variable que se ha de eliminar
y: numerico // indice que almacena el elemento cuando se lee el vector
k: numerico // variable de control del ciclo interno
band: logico // cambia su valor si encuentra el elemento a eliminar

inicio

cls()

imprimir ("\n Entre el nmero de elementos del vector: ")


leer (n)

/* inicia proceso que lee vector */

si (n<10)
{
desde i=1 hasta n paso 1
{
imprimir ("\n\n Entre el elemento: ", i,": ")
leer (y)

a[i]=y
}

sino
imprimir ("\n No hay espacio para insertar
el elemento...")
}

/* finaliza proceso que lee vector */

Universidad del Quindo 111


Geomtica Programacin para Topografa

/* inicia proceso que elimina elemento */

si (n>=1)
{
imprimir ("\n Entre el elemento a eliminar: ")
leer (x)

i=1
band=FALSE

mientras (i<=n and band==FALSE)


{
si (a[i]==x)
{
band=TRUE
n=n-1
k=i

mientras(k<=n)
{
a[k]=a[k+1]
k=k+1
}
sino
i=i+1
}
}
si (band==FALSE)
{
imprimir ("\n El elemento ",x, " no est en
el arreglo...")
}
sino
imprimir ("\n El arreglo est vaco...")
}

/* finaliza proceso que elimina elemento */

/* inicia proceso que imprime el nuevo vector */

imprimir("\n\n El vector resultante es :", "{")

desde i=1 hasta n paso 1


{
imprimir( "\t " ,a[i])
}

imprimir("\t }")

/* finaliza proceso que imprime el nuevo vector */

fin

112 Universidad del Quindo


Programacin para Topografa Geomtica

Ejemplo No 35

Elaborar un programa en seudocdigo que permita calcular el rea de un


predio por coordenadas, utilizando vectores.

/*

Cod: T-020

Nombre: vector_5 (area coordenadas)

Fecha: Junio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Este programa lee un vector donde almacena


la posicin Norte y otro donde se almacena
la posicin Este de una cantidad de puntos
definida por el usuario, luego calcula el
area que delimitan dichos puntos.

*/

variables

norte:vector[100] numerico //arreglo donde se almacena la posicin


Norte
este: vector[100] numerico // arreglo donde se almacena la posicin
Este
n:numerico // almacena el nmero de vrtices
x:numerico //representa al elemento que se va a
ingresar en el vector Norte
y:numerico //representa al elemento que se va a
ingresar en el vector Este
i:numerico // auxiliar del contador de ciclos
p1:numerico //producto de las coordenadas que descienden
p2:numerico // producto de las coordenadas que ascienden
acu1: numerico // acumulador de p1
acu2: numerico // acumulador de p2
area: numrico

inicio

cls()

imprimir ("\n Entre el nmero de vertices: ")


leer (n)

Universidad del Quindo 113


Geomtica Programacin para Topografa

si (n<=100)
{

/* inicio ciclo que permite leer las coordenadas */

desde i=1 hasta n paso 1


{
imprimir ("\n NORTE ", i ,": ")
leer (x)
norte[i]=x

imprimir ("\n ESTE ", i ,": ")


leer (y)
este[i]=y
}
/* finaliza ciclo que permite leer las coordenadas */

imprimir ("\n Entre la Norte del punto 1: ")


leer (x)
norte[i]=x

imprimir ("\n Entre la Este del punto 1: ")


leer (y)
este[i]=y

sino
imprimir ("\n No hay espacio para insertar
las coordenadas...")
}

cls()

imprimir ("\n\n\t\t", "PUNTO", "\t\t","NORTE", " \t\t",


"ESTE")

/* inicio ciclo que permite imprimir el listado de coordenadas */

desde i=1 hasta n paso 1


{

imprimir ("\n\n\t\t",i, "\t\t", norte[i], "\t\t",


este[i])
}
/* finaliza ciclo que permite imprimir el listado de coordenadas */

/* inicio ciclo que hace el clculo de los productos */

desde i=1 hasta n+1 paso 1


{
p1=(norte[i]*este[i+1])
acu1=acu1+p1

114 Universidad del Quindo


Programacin para Topografa Geomtica

p2=(este[i]*norte[i+1])
acu2=acu2+p2
}
/* finaliza ciclo que hace el clculo de los productos */

area = abs(acu1-acu2)/2

imprimir ("\n\n\t\t\AREA: ",area, " m2")

fin

4.5 Arreglos ordenados


Considere un arreglo A de 100 elementos, del cual los primeros N
elementos tienen un valor asignado. Bajo esta condicin se trabajar con
un vector ordenado de manera creciente as:

A[1]A[2] A[3] A[N]

Cuando se trabaja con vectores ordenados no se debe alterar el orden al


insertar nuevos elementos o al modificar los existentes.

4.5.1 Insercin

Para insertar un elemento X en un arreglo A que se encuentra ordenado,


debe verificarse primero que exista el espacio. Luego tendr que
encontrarse la posicin en la que debera estar el nuevo valor para no
alterar el orden del vector. Una vez encontrada la posicin se proceder
a correr todos los elementos desde su posicin hasta la N-sima
posicin, un lugar a la derecha. Finalmente se asignar el valor X en la
posicin encontrada.

Universidad del Quindo 115


Geomtica Programacin para Topografa

Generalmente cuando se quiere hacer una insercin debe verificarse que


el elemento no se encuentre en el vector. En la mayora de los casos
prcticos no interesa tener informacin duplicada, por lo tanto si el valor
a insertar ya existiera en el vector, la operacin no se llevara a cabo.

4.5.2 Bsqueda

Es de anotar que tanto en los procesos de insercin y de eliminacin en


vectores ordenados es recomendable tener un procedimiento que
busque el elemento X en el arreglo ordenado. Este procedimiento dar
como resultado la posicin en la que se encuentra el elemento X (en
cuyo caso elemento ya pertenece al vector y por lo tanto no debe ser
insertado) o el negativo de la posicin en la que debera estar.

inicio

Si No
n<=100

Busca No hay espacio en


el vector para
nuevas inserciones
Inserta

fin

Figura 4-6 a) Diagrama de flujo mdulos bsqueda-Insercin ordenado

116 Universidad del Quindo


Programacin para Topografa Geomtica

Busca

i=1

No
i n and a[i]<x

Si
i=i+1

Si i>n or a[i]>x No

pos=-i pos=i

Fin mdulo
Busca

Figura 4-6 b) Diagrama de flujo mdulo bsqueda ordenado

Universidad del Quindo 117


Geomtica Programacin para Topografa

Inserta

Si pos>0 No

El elemento ya n=n+1
existe pos=pos*(-1)

i=n

No
i(pos+1)

Si

a[i]=a[i-1]

i=i-1

a[pos]=x

Fin mdulo
Inserta

Figura 4-6 c) Diagrama de flujo mdulo inserta ordenado

118 Universidad del Quindo


Programacin para Topografa Geomtica

Ejemplo No 36

Elaborar un programa en seudocdigo que permita buscar un elemento


dentro de un vector ordenado, si dicho elemento no se encuentra debe
ser insertado de tal forma que vector contine ordenado.

/*

Cod: T-021

Nombre: vector_6 (busca inserta ordenado)

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: lee un vector, una vez termina de hacerlo,


pregunta por un nuevo elemento a insertar,
si este existe ser informado al usuario,
de lo contrario ser insertado en el vector.

*/

variables

a:vector[10] numerico
i:numerico // variable de control del ciclo e ndice del arreglo
n:numerico // almacena el nmero actual de elementos del arreglo
x: numerico // almacena el elemento en el nuevo vector
pos: numerico // determina la posicin del elemento a buscar
y: numerico // indice que almacena el elemento cuando se lee el vector

inicio

cls()

imprimir ("\n Entre el nmero de elementos del vector: ")


leer (n)

/* inicia rutina que lee vector*/

si (n<10)
{

Universidad del Quindo 119


Geomtica Programacin para Topografa

imprimir ("\n importante....entre los elemetos del


vector en forma ordenada...")

desde i=1 hasta n paso 1


{
imprimir ("\n\n Entre el elemento: ", i,": ")
leer (y)

a[i]=y
}

sino
imprimir ("\n No hay espacio para insertar
el elemento...")
}

/* finaliza proceso que lee vector */

si (n<10)
{
/* inicia proceso que busca el nuevo elemento del vector */

imprimir ("\n Entre el nuevo elemento insertar en el


vector: ")
leer (x)

i=1

mientras (i<=n and a[i]<x)


{
i=i+1
}

si (i>n or a[i]>x)
{
pos=i*-1

sino
pos=i
}

sino
imprimir ("\n No hay espacio para insertar
el elemento...")
}

/* termina proceso que busca el nuevo elemento del vector*/

/* inicia proceso que inserta el nuevo elemento del vector */

si (pos>0)
{

120 Universidad del Quindo


Programacin para Topografa Geomtica

imprimir("\n El elemento ya existe...")

sino
n=n+1
pos=pos*-1
i=n
mientras (i>=(pos+1))
{
a[i]=a[i-1]
i=i-1
}

a[pos]=x
}
/* termina proceso que inserta el nuevo elemento del vector */

/* inicia proceso que imprime el nuevo vector */

imprimir("\n\n El vector resultante es :", "{")

desde i=1 hasta n paso 1


{
imprimir( "\t " ,a[i])
}

imprimir("\t }")

fin

4.5.3 Eliminacin

Para eliminar un elemento X de un vector ordenado de elementos A,


primero debe verificarse que el arreglo no est vaco. Si se cumple esta
condicin, entonces tendr que buscarse la posicin del elemento a
eliminar. Si el resultado del mdulo BUSCA es un valor positivo, quiere
decir que elemento se encuentra en el vector y por lo tanto puede ser
eliminado; de lo contrario no se puede ejecutar la operacin.

Es de anotar que si el vector no est vaco, se modulariza el problema


BUSCANDO primero si se encuentra el elemento y posteriormente, si el
resultado del mdulo es positivo, ser eliminado.

Universidad del Quindo 121


Geomtica Programacin para Topografa

inicio

Si No
n>0

Busca El vector se
encuentra vaco

Elimina

fin

Figura 4-7 Diagrama de flujo Bsqueda-Eliminacin ordenado

Busca

i=1

No
i n and a[i]<x

Si
i=i+1

Si No
i>n or a[i]>x

pos=-i pos=i

Fin mdulo
Busca

122 Universidad del Quindo


Programacin para Topografa Geomtica

Elimina

Si No
pos 0

El elemento no n=n-1
existe

i=pos

In No

Si
a[i]=a[i+1]
i=i+1

Fin mdulo
elimina

Figura 4-8 Diagrama de flujo mdulos Busca-Elimina

Ejemplo No 37:

Realice en seudocdigo un programa que permita eliminar un elemento


de un vector ordenado, luego de verificar su existencia.

/*

Cod: T-022

Nombre: vector_7 (busca elimina ordenado)

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Universidad del Quindo 123


Geomtica Programacin para Topografa

Descripcion: lee un vector, una vez termina de hacerlo,


pregunta por el elemento a eliminar, si este
existe en ms de una posicin dentro del vector,
ser eliminado solamente de la primera de sus
posiciones; si el elemento no existe le ser
informado al usuario.

*/

variables

a:vector[10] numerico
i:numerico // variable de control del ciclo e ndice del arreglo
n:numerico // almacena el nmero actual de elementos del arreglo
x: numerico // almacena el elemento en el nuevo vector
pos: numerico // determina la posicin del elemento a buscar
y: numerico // indice que almacena el elemento cuando se lee el vector

inicio

cls()

imprimir ("\n Entre el nmero de elementos del vector: ")


leer (n)

/* inicia proceso que lee vector*/

si (n<10)
{
imprimir ("\n importante....entre los elementos del
vector en forma ordenada...")

desde i=1 hasta n paso 1


{
imprimir ("\n\n Entre el elemento: ", i,": ")
leer (y)

a[i]=y
}

sino
imprimir ("\n No hay espacio para insertar
el elemento...")
}

/* finaliza proceso que lee vector */

si (n<10)
{
/* inicia proceso que busca el nuevo elemento del vector */

124 Universidad del Quindo


Programacin para Topografa Geomtica

imprimir ("\n Entre el elemento a eliminar en el


vector: ")

leer (x)

i=1

mientras (i<=n and a[i]<x)


{
i=i+1
}

si (i>n or a[i]>x)
{
pos=i*-1

sino
pos=i
}

sino
imprimir ("\n No hay espacio para insertar
el elemento...")
}

/* termina proceso que busca el nuevo elemento del vector */

/* inicia proceso que borra el elemento del vector */

si (pos<=0)
{
imprimir("\n El elemento NO existe...")

sino
n=n-1
i=pos
mientras (i<=n)
{
a[i]=a[i+1]
i=i+1
}
}

/* termina proceso que borra el elemento del vector */

/* proceso que imprime el nuevo vector */

imprimir("\n\n El vector resultante es :", "{")

Universidad del Quindo 125


Geomtica Programacin para Topografa

desde i=1 hasta n paso 1


{
imprimir( "\t " ,a[i])
}

imprimir("\t }")

fin

4.6 Arreglos bidimensionales


(matrices)
Una matriz es un conjunto de datos homogneos, finitos y organizados,
que comparten un nombre en comn y que se encuentran organizados
en forma de filas y columnas en donde para referenciar cada dato es
necesario establecer claramente en qu fila y en qu columna se
encuentra. Tomemos la siguiente matriz de datos enteros como ejemplo.

[C-1] [C-2] [C-3] [C-4] [C-5] [C-6]


[F-1] 89 0 0 7 5 17
[F-2] 41 9 3 5 5 55
[F-3] 10 20 30 40 50 60
[F-4] -2 14 28 74 14 36

Figura 4-9 Arreglo bidimensional - matriz

La anterior es una matriz de nmeros enteros cuyos datos estn


organizados en 4 filas y 6 columnas. De esta manera para ubicar
exactamente un dato solo se tendr que referenciar su posicin en la fila
y en la columna.

Para referenciar un dato dentro de una matriz no se puede hacer


solamente con el subndice de la fila o de la columna, por ejemplo qu

126 Universidad del Quindo


Programacin para Topografa Geomtica

dato queda en la fila 1? Esta referencia no se puede hacer porque en la


fila 1 se encuentran 5 datos que son:
89 0 0 7 5 17 Por lo cual se debe notar que las
referencias deben ser hechas de manera individual para una posicin
exacta dentro de la retcula. Si la pregunta es: qu dato se encuentra en
la fila 2, columna 5? En este caso la referencia se encuentra
correctamente hecha y su nica respuesta es 50.

4.6.1 Declaracin de arreglos


bidimensionales

Las matrices son declaradas exactamente igual que los vectores, excepto
que se especifica ms de una dimensin entre los corchetes:

Nombre_arreglo : matriz [num_fil, num_col] tipo

Con num_fil se declara el nmero de filas que tendr la matriz, con


num_col se declara el nmero de columnas. Con tipo se declara el tipo
de datos de todos los componentes del arreglo.

Al igual que en los arreglos unidimensionales (vectores), los ndices


pueden ser de cualquier tipo de dato ordinal (entero, caracter), mientras
que sus componentes pueden ser de cualquier tipo (reales, enteros,
cadena de caracteres).

4.6.2 Lectura
Cuando se introdujo la lectura en vectores se iban asignando valores a
cada uno de los componentes. Lo mismo sucede con los arreglos
bidimensionales, sin embargo como sus elementos deben referenciarse

Universidad del Quindo 127


Geomtica Programacin para Topografa

con dos ndices, se deben utilizar dos ciclos para lograr la lectura de
elementos consecutivos.

Supngase que se desean leer todos los elementos de una matriz de 4


filas por 3 columnas, el diagrama de flujo de datos sera el siguiente:

inicio

i=1

i4 No

Si

j=1

No
i3

Si

Elemento [i,j]

mat[i,j] = elemento

j = j+1

i = i+1

Fin

Figura 4-10 Diagrama de flujo - Lectura de datos de una matriz

128 Universidad del Quindo


Programacin para Topografa Geomtica

Ejemplo No 38:

Disear en seudocdigo un programa que lea y muestre por pantalla una


matriz de 4 filas y 3 columnas.

/*

Cod: T-023

Nombre: matriz_1 (lectura)

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Programa que lee una matriz de 4 filas, 3 columnas

*/

constantes

MAX_FIL=4
MAX_COL=3

variables

mat:matriz[MAX_FIL,MAX_COL] numerico
i:numerico // variable de control del ciclo e ndice de la matriz para
leer filas
j: numerico // variable de control del ciclo e ndice de la matriz para
leer columnas
e: numerico // variable que almacena el elemento ingresado por el
usuario

inicio

cls()

i=1

mientras (i<=4)
{
j=1
mientras (j<=3)
{
imprimir ("\n Entre el elemento de la
posicin ",i,",",j, ": ")

Universidad del Quindo 129


Geomtica Programacin para Topografa

leer (e)
mat[i,j]=e
j=j+1
}
i=i+1
}

imprimir_matriz()

fin

subrutina imprimir_matriz()

variables
f, c : numerico

inicio

imprimir ("\n\n La matriz es : ")

desde f=1 hasta MAX_FIL paso 1


{
imprimir ("\n\n")

desde c=1 hasta MAX_COL paso 1


{
imprimir (str (mat [f,c], 5,0)) // 5: ancho ; 0:
precisin decimal
}
}
fin

4.7 Caractersticas avanzadas de los


arreglos
En lneas anteriores ya se ha explicado cmo declarar vectores y
matrices. Ahora se describir con mayor detalle otros aspectos

130 Universidad del Quindo


Programacin para Topografa Geomtica

particularmente interesantes: creacin dinmica de arreglos, y


combinacin de arreglos abiertos y de tamao fijo.

4.7.1 Creacin dinmica de arreglos


Como ya se ha explicado, la siguiente declaracin habilita un vector de
100 elementos numricos:

v : vector [100] numerico

En este caso el tamao del vector ya est definido al momento de la


compilacin. Sin embargo existen algunos problemas de la vida real en
los que no es posible conocer o no es conveniente predefinir la cantidad
mxima de elementos que se requerirn. Puede incluso que el valor
mximo vare de tiempo en tiempo. En estas situaciones se pueden usar
arreglos cuya creacin sea dinmica, que se declaran as:

v : vector [*] numerico

es decir, en vez del tamao se coloca un asterisco para indicar que dicho
valor an no se conoce.

Ya en el cuerpo del programa, cuando se sepa la cantidad de elementos


que se necesitan, se usa la subrutina predefinida dim() que posibilita
asignar efectivamente la memoria necesaria:

leer (n)
dim (v, n)

Esta posibilidad existe tambin para las matrices, sin importar la


cantidad de dimensiones. Por ejemplo, lo que sigue declarara una matriz
en las que la cantidad de filas y columnas no son conocidas al momento
de la compilacin:

M : matriz [*, *] numerico

Universidad del Quindo 131


Geomtica Programacin para Topografa

inicio
leer (cant_fil, cant_col)
dim (M, cant_fil, cant_col)

A los vectores y matrices creables dinmicamente se les llama


genricamente arreglos abiertos.

4.7.2 Combinaciones de arreglos


abiertos y de tamao fijo
La definicin de un arreglo puede incluir una mezcla de tamao fijo con
tamao abierto. Por ejemplo, si al momento de escribir un algoritmo se
necesita una matriz que tiene 8 columnas pero no est definida la
cantidad de filas, se puede escribir:

M : matriz [*, 8] numerico

inicio
leer (cant_fil)
dim (M, cant_fil)

En este caso dim() solo requiere dos parmetros: la matriz M y la


cantidad de filas. La cantidad de columnas es tomada de la definicin.
Sin embargo es de recordar que, una vez especificado un valor concreto
para una dimensin, ya no es posible usar asterisco para las siguientes
dimensiones. Por lo tanto lo que sigue dar error de compilacin:

M : matriz [5, *] numerico // !!! No es vlido !!!

Si un programa intenta usar un arreglo abierto no inicializado, se genera


un error de ejecucin y el programa se detiene.

132 Universidad del Quindo


Programacin para Topografa Geomtica

Ejemplo No 39:

Escribir un programa en seudocdigo que ajuste una poligonal cerrada


por el mtodo de la brjula utilizando una matriz dinmica.

/*

Cod: T-024

Nombre: matriz_2 (ajuste brujula)

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Programa que ajusta una poligonal


geomtricamente cerrada por el mtodo del la
brjula, a partir de los datos: azimut y
distancia, ingresados por el usuario y
levantados en campo.

*/

variables

mat:matriz[*,10] numerico // matriz que almacena datos de


entrada
cant_fil: numerico // cantidad de filas del arreglo
i: numerico // indice contador del ciclo que lee
angulos y distancias
angulo: numerico // angulo ingresado por el usuario
con formato GG.MMSS
f: numerico // indice contador de filas
c: numerico // indice contador de columnas
dist: numerico // distancia
pm: numerico // proyeccion meridiana
pp: numerico // proyeccion paralela
n: numerico // coordenada NORTE

e: numerico // coordenada ESTE


acu_per: numerico // acumulador distancias (perimetro)
acu_pm: numerico // acumulador de PM (delta PM)
acu_pp: numerico // acumulador de PP (delta PP)
ec: numerico // error de cierre
gp: numerico // grado de precisin
angulo_radianes: numerico

Universidad del Quindo 133


Geomtica Programacin para Topografa

inicio

cls()

imprimir ("\n Entre el nmero de vrtices de la poligonal : ")


leer (cant_fil)
dim (mat, cant_fil)

imprimir ("\n Entre la coordenada Norte de delta 1: ")


leer (n)

imprimir ("\n Entre la coordenada Este de delta 1: ")


leer (e)

f=1
c=1

desde i=1 hasta cant_fil paso 1


{
si(i<= cant_fil-1)
{
imprimir ("\n Entre el azimut de la lnea ", i, "-
",i+1,": " )

sino
imprimir ("\n Entre el azimut de la lnea ", i, "-
",1,": " )

}
leer (angulo)
angulo_rad()
mat[f,c]=angulo

si(i<= cant_fil-1)
{
imprimir("\n Entre la distancia de la lnea ",i, "-
", i+1, ": ")

sino
imprimir ("\n Entre la distancia de la lnea ", i,
"-",1,": " )
}

leer (dist)
mat[f,c+1]=dist
acu_per=acu_per+dist

pm=dist*cos(angulo_radianes)
mat[f,c+2]=pm
acu_pm=acu_pm+pm

pp=dist*sin(angulo_radianes)
mat[f,c+3]=pp
acu_pp=acu_pp+pp

134 Universidad del Quindo


Programacin para Topografa Geomtica

f=f+1
}

c=5
desde f=1 hasta cant_fil paso 1
{
mat[f,c]=(acu_pm/acu_per)*mat[f,2] // cpm
mat[f,c+1]=(acu_pp/acu_per)*mat[f,2] // cpp
mat[f,c+2]=(mat[f,3]-mat[f,5]) // pmc
mat[f,c+3]=(mat[f,4]-mat[f,6]) // ppc

mat[1,9]=n+mat[1,7] // Norte corregida


mat[1,10]=e+mat[1,8] // Este corregida

desde i=2 hasta cant_fil paso 1


{
mat[i,9]=mat[i-1,9]+mat[i,7]
mat[i,10]=mat[i-1,10]+mat[i,8]
}

imprimir_matriz()

ec=sqrt((acu_pm^2)+(acu_pp^2)) // error de cierre

gp=acu_per/ec // grado de precision

imprimir ("\n\n Delta PM : ",acu_pm)


imprimir ("\n Delta PP : ",acu_pp)
imprimir ("\n Perimetro: ",acu_per)
imprimir ("\n E.cierre : ",ec)
imprimir ("\n GP : ","1:",gp)

fin

/*****************************************************************/

subrutina angulo_rad()

variables

grados : numerico
minutos : numerico
segundos : numerico

constantes

PI = 3.141592654

Universidad del Quindo 135


Geomtica Programacin para Topografa

inicio
grados = int(angulo)
minutos = (int((angulo-int(angulo))*100))/60
segundos = ((angulo*100-(int(angulo*100)))*100)/3600

angulo_radianes = (grados+minutos+segundos)*PI/180
fin

/*****************************************************************/

subrutina imprimir_matriz()

variables

f, c : numerico

inicio

cls()

desde f=1 hasta cant_fil paso 1


{
imprimir ("\n\n")

desde c=1 hasta 10 paso 1


{
imprimir (str (mat [f,c], 8,2)) // 8: ancho ; 2:
precisin decimal
}
}

fin

4.8 Ejercicios propuestos


1. Elabore un algoritmo que lea un arreglo unidimensional de 20
elementos, que calcule e imprima el promedio de los elementos
de las posiciones pares.

2. Construya un algoritmo en seudocdigo que permita leer dos


vectores A y B, ambos de igual longitud, y en un tercer vector C
calcular e imprimir la suma sabiendo que C[i]=A[i]+B[i].

136 Universidad del Quindo


Programacin para Topografa Geomtica

3. Leer un vector de N componentes, y ordenarlo de manera


ascendente, imprimir el vector antes y despus de ordenarlo.

4. Construya un diagrama de flujo para almacenar en un arreglo


unidimensional los 30 primeros nmeros primos, al final imprima
el arreglo correspondiente.

5. Dada una matriz A(m,n) de tipo entero elabore el diagrama de


flujo y el algoritmo en seudocdigo que calcule la transpuesta de
dicha matriz. La traspuesta de una matriz se obtiene al escribir las
filas de la matriz A como columnas.

6. Elabore un programa que calcule una poligonal cerrada por el


Mtodo del Trnsito, utilizando un arreglo bidimensional.

7. Disee un algoritmo en seudocdigo que calcule el volumen en


corte o en relleno de una cuadrcula.

Universidad del Quindo 137


Captulo 5

Subrutinas

Objetivo general:

Modularizar programas mediantes sub-programas que los hacen ms pequeos


comprensibles y manejables.

Objetivos especficos:

Utilizar procedimientos que hagan paso de parmetros por valor.

Identificar diferencias entre funciones y procedimientos.

Utilizar procedimientos que hagan paso de parmetros por referencia.

139
Programacin para Topografa Geomtica

Tabla de contenido

5. Subrutinas ............................................................... 143


5.1 Introduccin ................................................................... 143
5.2 Identificadores ............................................................... 144
5.3 Funciones ....................................................................... 146
5.3 Procedimientos .............................................................. 150
5.4 Definicin de parmetros formales ................................. 151
5.4.1 Paso de parmetros ............................................................... 151
5.4.1.1 Por valor .................................................................................... 151
5.4.1.2 Por referencia............................................................................ 151

Universidad del Quindo 141


Geomtica Programacin para Topografa

142 Universidad del Quindo


Programacin para Topografa Geomtica

5. Subrutinas

5.1 Introduccin
Las subrutinas son un componente fundamental de programacin: ellas
permiten modularizar un programa, es decir, que un programa este
compuesto de programas ms pequeos, comprensibles y manejables.
Se puede conceptualizar como un subprograma, porque ella no solo
agrupa y da un nombre a un conjunto de sentencias lgicamente
relacionadas, sino que adems puede tener sus propias variables y
constantes, permitiendo as reutilizar el cdigo y evitar su repeticin
dentro de un programa.

Para utilizar una funcin es necesario saber el tipo de dato que devuelve,
su identificador, y los parmetros que se deben proporcionar.

Dependiendo de la funcin dentro del programa pueden existir dos


clases de subrutinas: los procedimientos y las funciones.

Universidad del Quindo 143


Geomtica Programacin para Topografa

5.2 Identificadores
La mayora de los programas tienen una estructura tipo rbol, el
programa principal es la raz y de este penden muchas ramas
(procedimientos y funciones).

Los subprogramas en los que un identificador puede ser utilizado se


conocen como mbito o alcance del identificador, dicho de otro modo,
es en esta seccin donde el identificador es vlido.
Un identificador es global si se declara por fuera de cualquier subrutina,
y por lo tanto puede ser usada por cualquier subrutina. En cambio, se
dice que es local si se declara dentro de subrutina y solo puede ser
reconocida por dicha subrutina.

La importancia de esta distincin radica en que:

1. Los identificadores locales solo pueden ser utilizados dentro de la


subrutina que contiene su definicin.

2. Los identificadores globales pueden ser utilizados en cualquier


parte del programa.

Si un identificador es declarado o forma parte de los parmetros de una


subrutina y su nombre coincide con el de otro identificador declarado
globalmente, ste ltimo queda temporalmente inaccesible durante la
ejecucin de la subrutina.

Los identificadores locales son importantes porque:

1. Existe la posibilidad que dos identificadores puedan ser llamados


por el mismo nombre, teniendo as cada uno propiedades
independientes: direccin de memoria, tipo, duracin (constante
o variable).

144 Universidad del Quindo


Programacin para Topografa Geomtica

2. Mejoran la legibilidad de las subrutinas y fortalece su


independencia del contexto.

3. Permiten la escritura de subrutinas recursivas.

Ejemplo No 40:

/*

Cod: T-025

Nombre: subrutinas

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Ejemplo de subrutinas

*/

variables

n : numerico

Variable global
inicio
Programa
principal
n = 100
sub_1()

imprimir ("\n", n)

sub_2 ("GEOMATICA")

fin

/***************************/

Universidad del Quindo 145


Geomtica Programacin para Topografa

subrutina sub_1()
Variable local
variables

inicio

n : numerico

inicio

desde n=1 hasta 10 paso 1


Subrutinas
{
imprimir (n, " ")
}
fin parmetro

/********************/

subrutina sub_2(n : cadena)

inicio

imprimir ("\n", n)

fin

La primera lnea ( 1 2 3 4 5 6 7 8 9 10 ) es impresa por la subrutina


sub_1(); la segunda lnea ( 100 ) es generada por el programa principal;
mientras que la tercera ( GEOMATICA ) es impresa por la subrutina
sub_2(). Como se puede ver el valor de la variable global n no fue
afectada por la variable local n de la subrutina sub_1() pues el
compilador les asigna espacios distintos en la memoria.

5.3 Funciones
Una funcin es una subrutina que produce un valor que puede ser
utilizado por la parte del programa que la llam. El valor producido y
retornado por la funcin puede ser de cualquier tipo.

146 Universidad del Quindo


Programacin para Topografa Geomtica

Ejemplo No 41:

Elaborar en seudocdigo un programa que permita sumar dos nmeros


enteros mediante una funcin.

/*
Cod: T-026

Nombre: subrutinas_2

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Ejemplo de funcion (retorna valor)


*/

variables

num1: numerico
num2: numerico
res: numerico

inicio

cls()

imprimir ("\n Entre el primer nmero : ")


leer (num1)

imprimir ("\n Entre el segundo nmero :")


leer (num2)

res = suma(num1,num2)

imprimir ("\n El resultado es: ", res)


fin

/*************************************************/

Universidad del Quindo 147


Geomtica Programacin para Topografa

subrutina suma( a,b: numerico ) retorna numerico

variables

resultado: numerico

inicio

resultado=a+b

retorna(resultado)

fin

Ejemplo No 42:

Escribir un programa en seudocdigo que permita calcular las


proyecciones meridiana y paralela a partir de los datos de entrada:
azimut y distancia; el azimut debe ser entrado con formato GG.MMSS,
adems debe ser hecho con una funcin que convierta la magnitud
angular en radianes.

/*

Cod: T-027

Nombre: subrutinas_3

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Ejemplo de funcion

*/

variables

angulo : numerico
pm : numerico // proyeccion meridiana

148 Universidad del Quindo


Programacin para Topografa Geomtica

pp : numerico // proyeccion paralela


dh : numerico // distancia horizontal

constantes

PI = 3.141592654

inicio

cls()

imprimir("\n Entre el angulo con formato GG.MMSS : ")


leer (angulo)

imprimir("\n Entre la distancia horizontal : ")


leer (dh)

imprimir("\n El angulo en radianes es: ", ang_rad(angulo))

pm = dh*cos(ang_rad(angulo))
pp = dh*sin(ang_rad(angulo))

imprimir ("\n\n PM: ",pm ,"\t PP: ",pp)

fin

/********************************************************************/

subrutina ang_rad (angulo: numerico) retorna numerico

variables

grados : numerico
minutos : numerico
segundos : numerico
angulo_radianes : numerico
inicio

grados = int(angulo)
minutos = (int((angulo-int(angulo))*100))/60
segundos = ((angulo*100-(int(angulo*100)))*100)/3600

angulo_radianes = (grados+minutos+segundos)*PI/180

retorna(angulo_radianes)

fin

Universidad del Quindo 149


Geomtica Programacin para Topografa

5.3 Procedimientos
Un procedimiento es una subrutina que no retorna un valor y que realiza
una tarea especfica.

Ejemplo No 43:

Escribir un programa en seudocdigo que ejecute una subrutina de


procedimiento.

/*
Cod: T-028

Nombre: subrutinas_4 ( no retorna valor)

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: Ejemplo de procedimientos

*/

inicio

cls() // este procedimiento es preestablecido por el compilador y


permite limpiar la pantalla cada vez que se llame

imprimir_mensaje()

fin

subrutina imprimir_mensaje()

inicio

imprimir ("\n\n La exactitud est diciendo la verdad...La


precisin ","\n est contando la misma historia una y otra
vez.","\n Yiding Wang")

fin

150 Universidad del Quindo


Programacin para Topografa Geomtica

5.4 Definicin de parmetros


formales
Se llama parmetros formales a los identificadores que se ubican al inicio
de una subrutina para indicar el tipo y la cantidad de datos que recibe la
subrutina.

subrutina proyecciones (az, dist : numerico) retorna numerico

az, y dist son los parmetros formales, la sintaxis para la declaracin de


estos parmetros es igual que la de declaracin de variables.

5.4.1 Paso de parmetros

Existen dos maneras de realzar el paso de parmetros: por valor y por


referencia.

5.4.1.1 Por valor: la expresin que se pasa como parmetro


es copiada como valor inicial de la variable correspondiente en la lista de
parmetros de la subrutina. La principal caracterstica del paso de
parmetros por valor es que los cambios que pueda presentar la variable
que recibe el parmetro no se ven afectados en el programa que est
llamando a la subrutina.

5.4.1.2 Por referencia: en este proceso de paso de


parmetros lo que recibe la subrutina es la direccin de memoria de la
variable original por lo tanto cualquier cambio que sufra el parmetro es
reflejado directamente en la variable original.

Universidad del Quindo 151


Geomtica Programacin para Topografa

Ejemplo No 44:

La siguiente subrutina correccion_temperatura(l:numerico; ref to:numerico)


recibe el parmetro l por valor, y el parmetro to por referencia,
ntese que al cambiar el valor en la variable to dentro de la subrutina es
tambin cambiado su valor en el programa principal.

/*
Cod: T-029

Nombre: subrutinas_5 (referecia)

Fecha: Julio 2007

Programador: JGB - GJC

Lenguaje: seudocodigo (SLE2)

Descripcion: paso de parmetro "to" por referencia

*/

variables

ct: numerico // correccin por temperatura


l: numerico // longitud medida (m)
t: numerico // temperatura en la cual se hace la medicion
to: numerico // temperatura del patronamiento

inicio

cls()

imprimir ("\n Entre la temperatura ambiente al momento de hacer la


medicin :")
leer (t)

imprimir ("\n Entre la distancia medida: ")


leer (l)

to=25

correccion_temperatura(l,to)

imprimir ("\n este valor cambi por la referencia: to :",to)

fin

/***********************************************/

152 Universidad del Quindo


Programacin para Topografa Geomtica

subrutina correccion_temperatura(l:numerico; ref to:numerico)

variables

ct: numerico

inicio

to=20

ct=0.000012*l*(t-to)

imprimir ("\n Correccin: ",ct)

fin

Universidad del Quindo 153


Anexo A

Introduccin a Visual
Basic

Objetivo general:

Utilizar una poderosa herramienta de programacin que permita mediante objetos


visuales la creacin de interfaces atractivas al usuario.

Objetivos especficos:

Identificar los principales elementos de una interfaz grfica.

Desarrollar aplicaciones bsicas que permitan solucionar problemas de


topografa mediante algoritmos apropiados en un entorno atractivo.

155
Programacin para Topografa Geomtica

Tabla de contenido

6. Introduccin a Visual Basic ........................................ 159


6.1 Introduccin ................................................................... 159
6.2 Variables ........................................................................ 159
6.2.1 Nombre de las variables ....................................................... 160
6.2.2 Tipos de datos ....................................................................... 160
6.3 Constantes .................................................................... 162
6.4 Operadores .................................................................... 163
6.5 Entada y salida de datos ................................................. 164
6.5.1 Entrada de datos ................................................................... 164
6.5.2 Entada y salida de datos usando controles ......................... 169
6.5.2.1 El formulario, los controles y sus propiedades ........................ 170
6.5.3 Escribir el cdigo .................................................................. 172
6.6 Sentencias de control .................................................... 179
6.6.1 Sentencia If ............................................................................ 179
6.6.2 Sentencia IfThen...Else ....................................................... 180
6.6.3 Sentencia Select Case ........................................................... 182
6.6.4 Sentencia ForNext ............................................................... 184
6.6.5 Sentencia WhileWend ........................................................ 185
6.6.6 Sentencia DoLoop ............................................................... 186

Universidad del Quindo 157


Geomtica Programacin para Topografa

158 Universidad del Quindo


Programacin para Topografa Geomtica

6. Introduccin a
Visual Basic

6.1 Introduccin
La palabra Visual hace referencia al mtodo que se utiliza para crear la
interfaz grfica de usuario, la cual se puede crear arrastrando objetos
con el ratn dentro del formulario.

La palabra Basic se refiere al lenguaje de programacin BASIC


(Beginners All-Propouse Symbolic Instruction Code). Visual Basic
evolucion desde el lenguaje BASIC y ahora contiene cientos de
instrucciones, palabras clave y funciones, muchas de las cuales estn
directamente relacionadas con la interfaz grfica del usuario.

Este lenguaje de programacin tambin es usado por Microsoft Excel,


Access y otras aplicaciones de Windows.

6.2 Variables
Son aquellos valores que pueden o no cambiar al resolver un problema.
Las variables poseen su nombre y su valor, los nombres de las variables

Universidad del Quindo 159


Geomtica Programacin para Topografa

deben comenzar con una letra y pueden constar de un nmero de letras


y dgitos. Visual Basic tiene reservadas varias palabras que no pueden ser
usadas como nombres de variables.

Cada variable tiene atributos propios como:

Nombre: es el nombre que se utiliza para referirse a la variable en la


aplicacin.
Tipo: se debe determinar la clase de valor se puede almacenar en la
variable.

6.2.1 Nombre de las variables

El nombre de una variable tiene que comenzar con una letra, puede
tener hasta 255 caracteres, y debe ser nico dentro de su mbito.

Los caracteres pueden ser letras, dgitos, y los caracteres de declaracin


del tipo de la variable (%, &, !, #, @, y $).

Existen palabras reservadas dentro del lenguaje de programacin que no


pueden ser usadas como variables, ejemplo: For, Val, Hide, Caption,
Long, y And.

6.2.2 Tipos de datos

Todas las variables tienen un tipo de dato que determina la clase de


datos que pueden almacenar. Una variable puede ser de alguno de los
siguientes tipos:

160 Universidad del Quindo


Programacin para Topografa Geomtica

Tipo Descripcin Car-tipo Rango

Entero
Integer % -32.768 a 32.767
(2 bytes)

Entero largo -2.147483.648 a


Long &
(4 bytes) 2.147483.647

Coma flotante.
Precisin
Single ! -3,40E+38 a 3,40E+38
simple
(4 bytes)

Coma flotante.
Precisin
Double # -1.79E+308 a 1.79E+308
doble
(8 bytes)

Cadena de
caracteres de
String longitud fija Ninguno 64K
(1 byte por
caracter)

Cadena de
caracteres de
longitud
String variable $ Hasta 231
(10 bytes + 1
byte por
caracter)

Byte Caracter Ninguno 0 a 255


(1 byte)

Universidad del Quindo 161


Geomtica Programacin para Topografa

Tipo Descripcin Car-tipo Rango

Bolean
Boolean Ninguno True o False
(2 bytes)

Valor mayor con 0 decs:


79.228.162.514.264.337.
Nmeros con
593.543.950.335
Decimal 0 a 28 Ninguno
Valor mayor con 28 dec:
decimales
7,9228162514264337
593543950335

Tabla 6-1 - Tipos de datos en Visual Basic

Un byte son ocho bits y un bit se representa mediante un 0 o un 1,


smbolos que componen el sistema binario que usan los computadores.
Un mltiplo es el K; 1Kbyte es igual a 210 bytes.

6.3 Constantes
Son aquellos valores que no cambian al resolver un problema. Las
constantes numricas pueden contener: Dgitos, un signo, punto decimal
y E (Notacin exponencial, E significa potencia 1 de 10).

Para nombrar una constante, se usan las mismas reglas que se aplican
para nombrar variables. Ejemplo:

Public Const nombre_constante = 100

162 Universidad del Quindo


Programacin para Topografa Geomtica

6.4 Operadores
En Visual Basic se soportan distintos tipos de operadores, en la tabla que
a continuacin los muestra se encuentran de mayor a menor prioridad
respecto a cmo se evalan cuando varios de ellos intervienen en la
misma expresin. Los operadores que se encuentran en el mismo
rengln poseen igual prioridad. Las operaciones que se incluyen entre
parntesis se evalan primero, ejecutndose primero los parntesis ms
internos.

Tipo Operacin Operador

Exponenciacin ^
Cambio de signo -
Multiplicacin y divisin *, /
Aritmtico
Divisin entera \
Resto de divisin entera Mod
Suma y resta +, -
Igual =
Diferente <>
Menor <
Relacional
Mayor >
Menor o igual <=
Mayor o igual >=
Negacin Not
Y lgica And
Lgico O lgica Or
Or exclusiva Xor
Equivalencia Eqv

Tabla 6-2 - Tipos de operadores en Visual Basic

Universidad del Quindo 163


Geomtica Programacin para Topografa

6.5 Entada y salida de datos


Visual Basic tiene una serie de controles para ser utilizados como
mecanismos de Entrada/Salida, entre ellos: las etiquetas, cajas de texto,
botones de pulsacin, botones de opcin, listas desplegables.

Otra posibilidad de proporcionar datos a una aplicacin o visualizar


resultados es la caja de dilogo. Estas cajas son ventanas con controles
que se pueden visualizar en el momento que se necesite hacer una
entrada o salida de datos.

6.5.1 Entrada de datos

En Visual Basic se usa la funcin InputBox con la que visualiza una caja
de dilogo, con un mensaje que indica al usuario el tipo de informacin
que se debe ingresar; devuelve como resultado un valor de tipo String
que corresponde con el dato entrado por el usuario.

Sintaxis:

InputBox (mensaje, [ttulo][,por _omisin][,posx][posy])

La cadena de caracteres mensaje contiene el mensaje que indica al


usuario la informacin que va a entrar.

La cadena de caracteres ttulo ser visualizada en la barra de ttulo de la


caja de dilogo, si se omite se pone como ttulo el nombre que la
aplicacin tenga por defecto.

La cadena de caracteres por_omisin especifica el texto que aparecer


en la caja de texto, si se omite esta aparecer vaca.

164 Universidad del Quindo


Programacin para Topografa Geomtica

Los argumentos posx y posy son las coordenadas x e y donde aparecer


la caja de dilogo medidas desde la parte superior izquierda de la
pantalla, si se omiten la caja de dilogo se visualizar centrada
horizontalmente y a un tercio de la parte superior de la pantalla.

Ejemplo No 45:

Escribir el cdigo necesario que permita mediante una aplicacin entrar


el nombre, los apellidos, edad, direccin, programa acadmico, semestre
y fecha de nacimiento de un estudiante. Una vez ingresados los datos
visualizarlos en un formulario.

Cuando se inicia Visual Basic 6.0 aparece en la pantalla una la caja de


dilogo nuevo proyecto mostrada en la Figura 6.1

Figura 6-1 Acceso a Visual Basic

Para nuestro caso se debe seleccionar la opcin EXE estndar, y luego


hacer click en abrir.

Una vez se ejecute la opcin estndar de Visual Basic se ve una interfaz


similar a la de la figura 6-2.

Universidad del Quindo 165


Geomtica Programacin para Topografa

Barra de mens: visualiza las rdenes necesarias para desarrollar una


aplicacin

Barra de herramientas: facilita el acceso rpido a las rdenes ms


comnmente utilizadas

Ventana de propiedades: en la que se pueden ver las propiedades del


objeto seleccionado o del propio formulario (en el centro a la derecha).
Si esta ventana no aparece, se puede hacer visible con la tecla <F4>.
Caja de herramientas: proporciona un conjunto de herramientas que
permiten colocar los controles en el formulario durante el diseo de la
interfaz grfica del usuario.

Formulario: es la ventana sobre la que se colocan los controles de


interfaz grfica que el usuario utilizar para comunicarse con la
aplicacin.
Barra de herramientas

Formulario

Ventana
Propiedades

Figura 6-2
Caja de herramientas
Ventana de posicin del formulario

166 Universidad del Quindo


Programacin para Topografa Geomtica

Haciendo doble clic sobre el formulario se despliega el editor de cdigo


de Visual Basic (Figura 6-3). En este editor se escribe el cdigo que
aparece a continuacin, el cual ser explicado ms adelante.

Cuando una aplicacin carga un formulario se produce un evento Load,


como ser lo que sucede cuando se ejecute la aplicacin, vamos escribir
el cdigo necesario para realizar el ejemplo expuesto, en el
procedimiento conducido producido por el evento Load. Por lo tanto se
debe elegir de la lista de objetos en la ventana de cdigo el objeto Form,
y de la lista de procedimientos el conducido por el evento Load (Figura 3-
3). Despus se debe escribir el siguiente cdigo:

Figura 6-3 - Editor de cdigo

Dim nombre_apellido As String


Dim edad As Integer
Dim direccion As String
Dim programa_academico As String
Dim semestre As String
Dim fecha_nacimiento As Date

Private Sub Form_Load()

'entrada de datos

nombre_apellido = InputBox("Nombre y apellidos: ", , "Nombre y


apellido")

Universidad del Quindo 167


Geomtica Programacin para Topografa

edad = InputBox("Edad:", , 0)
direccion = InputBox("Direccion:")
programa_academico = InputBox("Programa Academico:")
semestre = InputBox("Semestre:")
fecha_nacimiento = InputBox("Fecha nacimiento:", , #16/04/1977#)

'salida de datos

Print "Nombre:"; nombre_apellido


Print "Edad: "; edad; "aos"
Print "Direccin: "; direccion
Print "Programa Acadmico: "; programa_academico
Print "Semestre: "; semestre
Print "Fecha de nacimiento: "; fecha_nacimiento

End Sub

De acuerdo al ejercicio anterior con la funcin Print se pueden visualizar


los datos en un formulario (objeto Form).

Es necesario saber que se deben declarar los tipos de dato que se van a
utilizar en la aplicacin, esto se hace en la parte inicial del cdigo
(realmente se pueden declarar en cualquier parte del cdigo, pero se
recomienda que sea en el encabezamiento del mismo) en el ejemplo
anterior son:

Dim nombre_apellido As String


Dim edad As Integer
Dim direccion As String
Dim programa_academico As String
Dim semestre As String
Dim fecha_nacimiento As Date

Las sentencias anteriores declaran a nombre_apellido, direccin,


programa_academico y semestre como variables que contiene una
cadena de caracteres de longitud variable, edad como una variable de

168 Universidad del Quindo


Programacin para Topografa Geomtica

tipo entero, y fecha_nacimiento como un dato de tipo fecha con formato


DD/MM/AA

Con la funcin Dim se indica al programa que reserve un espacio de


memoria para la variable que se est declarando. Cada variable debe ser
del tipo de dato que se quiera asignarle.

6.5.2 Entada y salida de datos usando


controles

En el entorno de Windows, el control ms comn de una aplicacin es


una caja de texto, puesto que permiten realizar la entrada de datos para
una aplicacin y visualizar los resultados producidos por cierto proceso.

Ejemplo No 46:

Realizar una aplicacin que convierta a centmetros un valor entrado en


pulgadas.

Antes de empezar a crear la aplicacin, es recomendable responderse las


siguientes preguntas:

Qu objetos forman la interfaz?

Un formulario que permita implementar la interfaz


Una caja de texto para entrar el valor en Pulgadas
Una caja de texto para visualizar el resultado en Centmetros
Dos etiquetas que informen al usuario de la informacin que
contiene cada caja de texto
Un botn de pulsacin que permita realizar los clculos

Universidad del Quindo 169


Geomtica Programacin para Topografa

Qu eventos hacen que la interfaz responda?

Con esta aplicacin se busca que cuando el usuario entre los valores de
ngulo horario y azimut siguiente, y pulse el botn calcular, se actualice
el contenido de las otras cajas con los resultados correspondientes. Por
lo tanto el evento es pulsar el botn calcular, que en Visual Basic se
llama Click.

Para un desarrollo ordenado de la aplicacin se puede resumir en: crear


una nueva aplicacin, disear la interfaz grfica, y unir el cdigo a los
controles para que ejecuten las operaciones deseadas.

6.5.2.1 El formulario, los controles y sus


propiedades
Una vez conocidos los objetos y los eventos, se procede a dibujar la
interfaz. Para ello se crea una nueva aplicacin de tipo EXE estndar y
cambiamos el nombre Form 1 del formulario por pulgadas a centmetros.
Esto se hace modificando el contenido de la propiedad Caption del
formulario.

Luego se dibujan los controles. Dibujamos una etiqueta (Figura 6-4), se


mueve al lugar deseado, y se cambia el ttulo label1 por valor en
pulgadas esto se hace modificando el contenido de la propiedad Caption
del label1.

Despus se dibuja una caja de texto (Figura 6-4), y se mueve al lado


derecho de la etiqueta. En el cuadro de propiedades cambie (en la
ventana de propiedades) el nombre Text1 por pul [cuando escriba el
cdigo se dar cuenta porque pul]

170 Universidad del Quindo


Programacin para Topografa Geomtica

Siguiendo los mismos pasos se dibuja una segunda etiqueta cambiando


label2 por Valor en Centmetros y otra caja de texto frente a la etiqueta
Valor en Centmetros. En esta caja de texto cambie (en la ventana de
propiedades) el nombre Text2 por centi [cuando escriba el cdigo se
dar cuenta por qu centi]

Para dibujar etiquetas Para dibujar cajas de texto

Para dibujar botones


de comando

Figura 6-4 - Caja de herramientas

Por ltimo se dibuja un botn de comando y se cambia su nombre


Command1 por Calcular.

Una vez colocados los controles y ajustados sus tamaos (los de los
controles) se ajusta el tamao del formulario. La interfaz obtenida debe
ser como la siguiente:

Universidad del Quindo 171


Geomtica Programacin para Topografa

Figura 6-5 - Interfaz de aplicacin (conversin)

Ahora se deben borrar los contenidos de las cajas de texto (Text1 y


Text2), para hacerlo se selecciona la caja de texto nmero 1, y en la
ventana de propiedades se elige Text y se suprime su contenido.

En este momento se tienen listos el formulario y los controles, para


hacerlos trabajar se necesita unir a ellos el cdigo correspondiente.

6.5.3 Escribir el cdigo

Para hacer que una aplicacin responda a los eventos que sobre ella se
producen, se debe unir a cada uno de sus objetos el cdigo que sea
necesario como respuesta al evento ocurrido. Por esta razn se debe
escribir un procedimiento asociado con el botn Calcular y conducido
por el evento Click que actualice automticamente el contenido de la
caja de texto Valor en Centmetros.

El valor para actualizar esta caja es:

centimetros = pulgadas * 2.54

172 Universidad del Quindo


Programacin para Topografa Geomtica

Se debe escribir entonces el procedimiento que responda al evento Click


cuando ocurra sobre el botn calcular. La ventana de cdigo
correspondiente a este procedimiento se visualiza haciendo doble clic
sobre el botn calcular. Una vez en el editor de cdigo se debe escribir lo
siguiente:

Private Sub calcular_Click()

'GJC & JGB

'declaracion de variables
Dim centimetros As Double
Dim pulgadas As Double

'Procesos
pulgadas = pul.Text
centimetros = pulgadas * 2.54

'salida
centi.Text = Format(centimetros, "0.00")

End Sub

Ejemplo No 47:

Hacer una aplicacin en Visual Basic que permita calcular el rea de un


tringulo conociendo sus tres lados. (Frmula de Heron)

Frmula:

++
=
2

Universidad del Quindo 173


Geomtica Programacin para Topografa

= ( ) ( ) ( )

Figura 6-5 - Interfaz de aplicacin (rea del tringulo)

Con el fin de entender el cdigo que a continuacin se expone, a la caja


de texto Text1 se le modific su nombre (en la ventana propiedades) por
lado_a, Text2 y Text3 por lado_b y lado_c, y Text4 por resultado.

Como solo hay un procedimiento (botn calcular) el cual se genera con


el evento Clic, es en este botn donde se debe entrar el siguiente cdigo:

Private Sub calcular_Click()

'GJC & JGB

' declaracion de variables

Dim a As Single

174 Universidad del Quindo


Programacin para Topografa Geomtica

Dim b As Single
Dim c As Single
Dim area As Single
Dim s As Single

'procesos

a = lado_a.Text
b = Lado_b.Text
c = Lado_c.Text

s = (a + b + c) / 2

area = Sqr((s * ((s - a) * (s - b) * (s - c))))

'salida

resultado.Text = Format(area, "0.00")

End Sub

Ejemplo No 48:

Hacer una aplicacin en Visual Basic que permita calcular el punto de


ceros, a partir de la altura de corte, lleno y la distancia entre estas.

Universidad del Quindo 175


Geomtica Programacin para Topografa

Figura 6-6 - Interfaz de aplicacin (punto de cero)

A la caja de texto Text1 se le modific su nombre (en la ventana


propiedades) por corte, Text2 y Text3 por relleno y distancia, y Text4 por
resultado.

Haciendo doble clic en el botn Calcular aparece el editor de cdigo que


genera el evento Clic, donde se debe escribir el siguiente cdigo:

Private Sub calcular_Click()

'GJC & JGB

'declaracion de variables

Dim c As Single
Dim r As Single
Dim d As Single
Dim x As Single

'procesos

c = corte.Text

176 Universidad del Quindo


Programacin para Topografa Geomtica

r = relleno.Text
d = distancia.Text

x = ((c / (c + r))) * d

'salida

resultado.Text = Format(x, "0.00")

End Sub

Ejemplo No 49:

Realizar un algoritmo en Visual Basic que permita calcular la distancia


horizontal entre dos puntos dadas sus coordenadas cartesianas.

Private Sub calcular_Click()

'GJC & JGB

'declaracion de variables

Dim norte1 As Double


Dim este1 As Double
Dim norte2 As Double
Dim este2 As Double
Dim dh As Double

'procesos

norte1 = n1.Text
este1 = e1.Text
norte2 = n2.Text
este2 = e2.Text

dh = Sqr(((norte2 - norte1)^2)+(este2 - este1^2)

Universidad del Quindo 177


Geomtica Programacin para Topografa

'salida

resultado.Text = Format(dh, "0.00")

End Sub

A la caja de texto Text1 se le modific su nombre (en la ventana


propiedades) por n1, Text2, Text3 y Text4 por n2, n3, y n4 Text5 por
resultado. Al botn Command1 se le cambi el nombre por Calcular.

Figura 6-7 Interfaz de aplicacin (distancia horizontal)

178 Universidad del Quindo


Programacin para Topografa Geomtica

6.6 Sentencias de control


Las son tambin llamadas estructuras de control, y permiten tomar
decisiones y realizar ciclos repetidas veces. Visual Basic tiene las
siguientes:

If Then
If Then Else
Select Case
For Next
While Wend
Do Loop

Nota: Cualquier expresin entre corchetes [ ] es opcional, de las


expresiones que figuran entre llaves { } se puede elegir una, la necesaria
en cada caso.

6.6.1 Sentencia If

Es un condicional que permite tomar una decisin referente a la accin a


ejecutar en un proceso basndose en el resultado de la condicin. Su
sintaxis es:

If condicin Then accin 1[Else accin 2]

donde condicin debe ser una expresin numrica, relacional o lgica. El


resultado que se obtiene al evaluar la condicin es verdadero (True) o
falso (False); accin 1.

Si la condicin es verdadera, entonces ejecuta la accin Si (o acciones si


son varias).Si la condicin es falsa, entonces no se hace nada.

Universidad del Quindo 179


Geomtica Programacin para Topografa

Esta sentencia funciona igual que la estructura de decisin Si-entonces


del captulo 2.

Condicin No Accin 2

Si

Accin 1

Figura 6-8 - Diagrama de Flujo sentencia If

Ejemplo No 50:

If angulo > 360 Then

Print "El valor angular supera el lmite"


Else
Print "El ngulo se encuentra en el rango"

End If

6.6.2 Sentencia IfThen...Else

Es una estructura lgica que permiten controlar la ejecucin de varias


acciones y se utiliza cuando se tienen dos opciones de accin, por la
naturaleza de estas se debe ejecutar una o la otra, pero no ambas a la
vez, es decir, son mutuamente excluyentes.

180 Universidad del Quindo


Programacin para Topografa Geomtica

If condicin 1 Then
Sentencias 1
[ElseIf condicion 2 Then
sentencias 2]
[Else
sentencias n]
End If

No No
Condicin 1 Condicin 2
Sentencias n

Si Si

Sentencias 1 Sentencias 2

Figura 4-2 Diagrama de Flujo sentencia IfThenElse

Ejemplo No 51:

Realizar una rutina que arroje como resultado el menor de tres nmeros
a,b,c.

If a < b Then
If a < c
menor = a
Else
menor = c

Universidad del Quindo 181


Geomtica Programacin para Topografa

End If

Else If b < c Then


menor = b
Else
menor = c
End If

Print menor

6.6.3 Sentencia Select Case

Permite ejecutar una de varias acciones en funcin del valor de una


expresin. Es muy usada cuando se necesita comparar una misma
expresin con diferentes valores. Su sintaxis es:

Select Case expresin


Case Lista1
[sentencias1]
[Case lisata2
[sentencias2]]
[Case Else
[sentencias n]]
End Select

Ejemplo No 52:

Realizar un men de que presente distintas opciones para el ajuste de


una poligonal.

182 Universidad del Quindo


Programacin para Topografa Geomtica

Private Sub Form_Load()

'GJC & JGB

'Delcaracin de variables
Dim opcion As String

opcion = InputBox("MENU DE SELECCION METODO DE AJUSTE" & _


vbCrLf & " " & _
vbCrLf & "1. Mtodo de la Brjula" & _
vbCrLf & "2. Mtodo del Trnsito" & _
vbCrLf & "3. Mtodo de Crandall" & _
vbCrLf & "4. Mtodo X,Y" & _
vbCrLf & "5. Mtodo Mnimos Cuadrados" & _
vbCrLf & " " & _
vbCrLf & "Elija su opcin" & _
vbCrLf & " ")

Select Case opcion

Case 1:
MsgBox ("1. Ajuste por el Mtodo de la Brjula")
Case 2:
MsgBox ("2. Ajuste por el Mtodo del Trnsito")
Case 3:
MsgBox ("3. Ajuste por el Mtodo de Crandall")
Case 4:
MsgBox ("4. Ajuste por el Mtodo XY")
Case 5:
MsgBox ("5. Ajuste por el Mtodo de Mnimos Cuadrados")

Case Else:
MsgBox ("Su opcin es herrada...")

End Select

End Sub

Universidad del Quindo 183


Geomtica Programacin para Topografa

6.6.4 Sentencia ForNext

La sentencia For se utiliza para los ciclos, cuando se conoce el nmero de


veces que se debe ejecutar el bucle. Su sintaxis es:

For (inicializacion) To (termino del bucle) Step [paso]


[sentencias]
[Exit For]
[sentencias]
Next

La sentencia realiza una repeticin desde la inicializacin hasta el


trmino del ciclo. Para llevar la cuenta se utiliza una variable, ya veremos
en el ejemplo cmo se utiliza esta variable. Con cada ejecucin del ciclo
se ejecutan unas sentencias. Next sirve para delimitar el final del ciclo,
cuando se encuentra con el Next se vuelve otra vez al principio del For,
as hasta realizar el nmero de ejecuciones determinado.

Existe un valor que sirve para indicar el incremento que se quiere


realizar en los saltos entre ejecucin y ejecucin, es el valor Step. Un
Step 2 determinar que entre ejecucin y ejecucin la variable se ha de
incrementar en 2 unidades. En el caso de no indicar nada se realizan
pasos de 1 en 1. Tambin se pueden realizar pasos en valores negativos.
El siguiente ejemplo muestra un mensaje con un nmero de la variable i,
utilizada para llevar la cuenta de las ejecuciones del ciclo.

Ejemplo No 53:

Realizar una aplicacin con la sentencia For que permita mostrar el


nmero 0 y los nmeros pares hasta el 10.

184 Universidad del Quindo


Programacin para Topografa Geomtica

Private Sub Form_Load()

Dim i As Integer

For i = 0 To 10 Step 2
MsgBox (i)
Next

End Sub

6.6.5 Sentencia WhileWend

El ciclo While...Wend sirve para realizar un tipo de ciclo muy utilizado en


programacin que es el Mientras, que se ejecuta mientras que se
cumpla una condicin. A diferencia del ciclo For, ste se utiliza cuando
no se conoce el nmero de iteraciones que se van a realizar.

El ciclo funciona de la siguiente manera. Cuando se va a ejecutar, evala


una expresin y comprueba que sta arroja resultados positivos. Si es
as, ejecuta el cuerpo del ciclo (las sentencias que siguen hasta el Wend),
en caso contrario se sale.

Ejemplo No 54:

Escribir un algoritmo que realice una cuenta nmero a nmero hasta


llegar al 10.
En cada iteracin del ciclo se muestra una ventana el nmero actual y
ofrece la posibilidad de cambiarlo, ya que la ventana es una ventana
InputBox, que ofrece la oportunidad de cambiar el valor y devuelve ese
valor, cambiado o no. Si se deja el ejemplo sin que el usuario entre
ningn valor, la aplicacin cuenta hasta 10, pero si se entra un nmero

Universidad del Quindo 185


Geomtica Programacin para Topografa

en el InputBox contina la cuenta por el nmero ingresado. Si el nmero


entrado es mayor que 10 se sale del ciclo.

Private Sub Form_Load()

Dim a As Integer

a = 0
While (a < 10)
a = a + 1
a = InputBox("Entre un valor entero", "", a, 200, 100)
Wend

End Sub

6.6.6 Sentencia DoLoop

Este tipo de estructura de repeticin depende de una condicin. Las


instrucciones que hay dentro del ciclo se repiten mientras se cumpla la
condicin, mientras la condicin sea verdadera. La condicin puede ser
verificada antes o despus de ejecutarse las sentencias.

Existen dos tipos de estructuras DoLoop, una en que se evala la


condicin antes de realizar alguna instruccin, y otra en que se evala
despus de realizar, al menos, una vez las instrucciones dentro del ciclo.

Forma1:

Do[{WhileUntil} condicin]
[sentencias]
[Exit Do]
[sentencias]
Loop

186 Universidad del Quindo


Programacin para Topografa Geomtica

Forma2:

Do
[sentencias]
[Exit Do]
[sentencias]
Loop[{WhileUntil} condicin]

Donde condicin es cualquier expresin que se evale a True o a False.


Sentencias: lneas de cdigo que se ejecutan mientras la condicin se
verdadera.

Ejemplo No 54:

Realizar una aplicacin en la cual al momento de hacer clic sobre el


formulario se visualice la suma de los nmeros impares entre 1 y 99.

Private Sub Form_Click()

Dim i As Integer
Dim suma As Integer

i=1

Do While (i <= 99)


Suma=suma+1
i=i+2
Loop

Print suma

End Sub
Private Sub Form_Click()

Dim i As Integer
Dim suma As Integer

Universidad del Quindo 187


Geomtica Programacin para Topografa

i=99

Do
suma=suma+1
i=i-2
Loop Until (i < 99)

Print suma

End Sub

188 Universidad del Quindo


B

Bibliografa

189
Programacin para Topografa Geomtica

Bibliografa

Aguilar Joyanes L., Lus Rodrguez Baena, Matilde Fernndez Azuela.


Fundamentos de Programacin Libro de Problemas, McGraw-Hill.
Espaa. 1996. 392 Pgs.

Aguilar Joyanes L. y Rodrguez Castran H. Microsoft Visual Basic 6.0,


McGraw-Hill. Espaa. 1999. 318 Pgs.

Anderson James M., Mikhail Edward M., Introduccin a la Topografa.


McGraw Hill. Mxico. 1988. 753 Pgs.

Bannister, A. , Raymond. S. y Baker R. Tcnicas Modernas en Topografa.


7a edicin. Alfaomega , Mxico 2002. 550 Pgs.

Cair Osvaldo. Metodologa de la programacin. 3 edicin. Alfaomega,


Mxico. 2005. 464 Pgs.

Ceballos Fco. Javier. Visual Basic 6. 8 edicin. Alfaomega & Ra-Ma.


Mxico. 2005. 498 Pgs.

Davis, Raymond E., Foote, Francis S. and Kelly Joe W.. Surveying: Theory
and Practice. 5th. Ed.. McGraw-Hill Co.. New York 1966. 1096 pgs.

Gmez G., Gilberto. Jimnez C. Gonzalo. Topografa Analtica. Armenia.


2003. 223 Pgs.

Jimnez Cleves Gonzalo, Informtica en Topografa. Universidad del


Quindo, Armenia (Q), 1990. 114 Pgs.

Universidad del Quindo 191


Geomtica Programacin para Topografa

Segovia Silvero Juan. Introduccin al lenguaje SL. Centro Nacional de


Computacin, CNC. Universidad Nacional de Asuncin, UNA. Asuncin,
Paraguay. 1999. 134 pgs.

Trejos Buritic Omar Ivn. La esencia de la lgica de programacin.


Editorial Papiro. Pereira (Q). 1999. 325 Pgs.

Zieske Karl. Principios Bsicos de Topografa. Leyca Geosystems.


Switzerland. 2000. 35 Pgs.

Sitios web:

www.leica.com
www.topcon.com
www.sokkia.com
www.profsurv.com
www.elagrimensor.com.ar

192 Universidad del Quindo


Programacin para Topografa
Universidad del Quindo
Facultad de Ingeniera
Programa de Topografa
Armenia Quindo Colombia
2007

S-ar putea să vă placă și