Visual Basic

Visual Basic es un lenguaje de programación dirigido por eventos, desarrollado por Alan Cooper para Microsoft. Este lenguaje de programación es un dialecto de BASIC, con importantes agregados. Su primera versión fue presentada en 1991, con la intención de simplificar la programación utilizando un ambiente de desarrollo completamente gráfico que facilitara la creación de interfaces gráficas y, en cierta medida, también la programación misma.

La última versión fue la 6, liberada en 1998, para la que Microsoft extendió el soporte hasta marzo de 2008.

En 2001 Microsoft propuso abandonar el desarrollo basado en la API Win32 y pasar a un framework o marco común de librerías, independiente de la versión del sistema operativo, .NET Framework, a través de Visual Basic .NET (y otros lenguajes como C Sharp (C#) de fácil transición de código entre ellos); fue el sucesor de Visual Basic 6.

Aunque Visual Basic es de propósito general, también provee facilidades para el desarrollo de aplicaciones de bases de datos usando Data Access Objects, Remote Data Objects o ActiveX Data Objects.

Visual Basic contiene un entorno de desarrollo integrado o IDE que integra editor de textos para edición del código fuente, un depurador, un compilador (y enlazador) y un editor de interfaces gráficas o GUI.

Normal
0

21

false
false
false

ES-AR
X-NONE
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Tabla normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:””;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;
mso-fareast-language:EN-US;}

Lenguaje de programación

 

Un lenguaje de programación es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a cabo por máquinas como las computadoras.

 

Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.

 

Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.

 

También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:

    * El desarrollo lógico del programa para resolver un problema en particular.

    * Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).

    * Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.

    * Prueba y depuración del programa.

    * Desarrollo de la documentación.

 

Existe un error común que trata por sinónimos los términos ‘lenguaje de programación’ y ‘lenguaje informático’. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación, sino un conjunto de instrucciones que permiten diseñar el contenido de los documentos).

 

Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa.

 

Historia

Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje específico conocido como código máquina, el cual la máquina comprende fácilmente, pero que lo hace excesivamente complicado para las personas. De hecho sólo consiste en cadenas extensas de números 0 y 1.

 

Para facilitar el trabajo, los primeros operadores de computadoras decidieron hacer un traductor para reemplazar los 0 y 1 por palabras o abstracción de palabras y letras provenientes del inglés; éste se conoce como lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). El lenguaje ensamblador sigue la misma estructura del lenguaje máquina, pero las letras y palabras son más fáciles de recordar y entender que los números.

 

La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó “instrucciones”, y a este conjunto de instrucciones se le llamó lenguaje ensamblador. Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos, denominados también lenguajes de alto nivel.

 

La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer a Charles Babbage, tradujo y amplió una descripción de su máquina analítica. Incluso aunque Babbage nunca completó la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó con éstas le hizo ganarse el título de primera programadora de computadoras del mundo. El nombre del lenguaje de programación Ada fue escogido como homenaje a esta programadora.

 

A finales de 1953, John Backus sometió una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar la computadora central IBM 704. El histórico equipo Fortran de Backus consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre.

 

El primer manual para el lenguaje Fortran apareció en octubre de 1956, con el primer compilador Fortran entregado en abril de 1957. Esto era un compilador optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador.

 

En 1960, se creó COBOL, uno de los lenguajes usados aún en la actualidad, en informática de gestión.

 

A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un método más eficiente para programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo fue BASIC en las versiones introducidas en los microordenadores de la década de 1980. Mientras que una tarea tan sencilla como sumar dos números puede necesitar varias instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastará una sola sentencia.

 

Elementos

Variables y Vectores

Las variables podrían calificarse como contenedores de datos y por ello se diferencian según el tipo de dato que son capaces de almacenar. En la mayoría de lenguajes de programación se requiere especificar un tipo de variable concreto para guardar un dato concreto. Por ejemplo, en Java, si deseamos guardar una cadena de texto deberemos especificar que la variable es del tipo “String”. Por contra en otros lenguajes como PHP, este tipo de especificación de variables no es necesario. Además también existen variables compuestas por varias variables llamadas vectores. Un vector no es más que un conjunto de variables consecutivas en memoria y del mismo tipo guardadas dentro de una variable contenedor. A continuación añadimos un listado con los tipos de variables y vectores más comunes:

 

-Variables tipo Char: Estas variables contienen un único carácter, es decir, una letra, un signo o un número.

 

-Variables tipo Int: Contienen un número entero.

 

-Variables tipo float: Contienen un número decimal.

 

-Variables tipo String: Contienen cadenas de texto, o lo que es lo mismo, es un vector con varias variables del tipo Char.

 

-Variables del tipo Boolean: Solo pueden contener un 0 o un 1. El cero es considerado para muchos lenguajes como el literal “False” mientras que el 1 se considera “True”.

 

Condicionantes

Los condicionantes son estructuras de código que indican que, para que cierta parte del programa se ejecute, deben cumplirse ciertas premisas; por ejemplo: que dos valores sean iguales, que un valor exista, que un valor sea mayor que otro… Estos condicionantes por lo general solo se ejecutan una vez a lo largo del programa. Los condicionantes más conocidos y empleados en programación son:

 

    * If: Indica una condición para que se ejecute una parte del programa.

    * Else if: Siempre va precedido de un “If” e indica una condición para que se ejecute una parte del programa siempre que no cumpla la condición del if previo y si se cumpla con la que el “else if” especifique.

    * Else: Siempre precedido de “If” y en ocasiones de “Else If”. Indica que debe ejecutarse cuando no se cumplan las condiciones prévias.

 

Bucles

Los bucles son parientes cercanos de los condicionantes, pero ejecutan constantemente un código mientras se cumpla una determinada condición. Los más frecuentes son:

 

    * For: Ejecuta un código mientras una variable se encuentre entre 2 determinados parámetros.

    * While: Ejecuta un código mientras se cumpla la condición que solicita.

 

Hay que decir que a pesar de que existan distintos tipos de bucles, ambos son capaces de realizar exactamente las mismas funciones. El empleo de uno u otro depende, por lo general, del gusto del programador.

 

Funciones

 

Las funciones se crearon para evitar tener que repetir constantemente fragmentos de código. Una función podría considerarse como una variable que encierra código dentro de si. Por lo tanto cuando accedemos a dicha variable (la función) en realidad lo que estamos es diciendo al programa que ejecute un determinado código predefinido anteriormente.

 

Todos los lenguajes de programación tienen algunos elementos de formación primitivos para la descripción de los datos y de los procesos o transformaciones aplicadas a estos datos (tal como la suma de dos números o la selección de un elemento que forma parte de una colección). Estos elementos primitivos son definidos por reglas sintácticas y semánticas que describen su estructura y significado respectivamente.

 

Sintaxis

Con frecuencia se resaltan los elementos de la sintaxis con colores diferentes para facilitar su lectura. Este ejemplo está escrito en Python.

 

A la forma visible de un lenguaje de programación se le conoce como sintaxis. La mayoría de los lenguajes de programación son puramente textuales, es decir, utilizan secuencias de texto que incluyen palabras, números y puntuación, de manera similar a los lenguajes naturales escritos. Por otra parte, hay algunos lenguajes de programación que son más gráficos en su naturaleza, utilizando relaciones visuales entre símbolos para especificar un programa.

 

La sintaxis de un lenguaje de programación describe las combinaciones posibles de los símbolos que forman un programa sintácticamente correcto. El significado que se le da a una combinación de símbolos es manejado por su semántica (ya sea formal o como parte del código duro de la referencia de implementación). Dado que la mayoría de los lenguajes son textuales, este artículo trata de la sintaxis textual.

 

La sintaxis de los lenguajes de programación es definida generalmente utilizando una combinación de expresiones regulares (para la estructura léxica) y la Notación de Backus-Naur (para la estructura gramática). Este es un ejemplo de una gramática simple, tomada de Lisp:

 

expresión ::= átomo | lista

átomo     ::= número | símbolo

número    ::= [+-]? [‘0’-‘9’]+

símbolo   ::= [‘A’-‘Z’] [‘a’-‘z’].*

lista     ::= ‘(‘ expresión* ‘)’

 

Con esta gramática se especifica lo siguiente:

 

    * una expresión puede ser un átomo o una lista;

    * un átomo puede ser un número o un símbolo;

    * un número es una secuencia continua de uno o más dígitos decimales, precedido opcionalmente por un signo más o un signo menos;

    * un símbolo es una letra seguida de cero o más caracteres (excluyendo espacios); y

    * una lista es un par de paréntesis que abren y cierran, con cero o más expresiones en medio.

 

Algunos ejemplos de secuencias bien formadas de acuerdo a esta gramática:

 

‘12345’, ‘()’, ‘(a b c232 (1))’

 

No todos los programas sintácticamente correctos son semánticamente correctos. Muchos programas sintácticamente correctos tienen inconsistencias con las reglas del lenguaje; y pueden (dependiendo de la especificación del lenguaje y la solidez de la implementación) resultar en un error de traducción o ejecución. En algunos casos, tales programas pueden exhibir un comportamiento indefinido. Además, incluso cuando un programa está bien definido dentro de un lenguaje, todavía puede tener un significado que no es el que la persona que lo escribió estaba tratando de construir.

 

Usando el lenguaje natural, por ejemplo, puede no ser posible asignarle significado a una oración gramaticalmente válida o la oración puede ser falsa:

 

    * “Las ideas verdes y descoloridas duermen furiosamente” es una oración bien formada gramaticalmente pero no tiene significado comúnmente aceptado.

    * “Juan es un soltero casado” también está bien formada gramaticalmente pero expresa un significado que no puede ser verdadero.

 

El siguiente fragmento en el lenguaje C es sintácticamente correcto, pero ejecuta una operación que no está definida semánticamente (dado que p es un apuntador nulo, las operaciones p->real y p->im no tienen ningún significado):

 

complex *p = NULL;

complex abs_p = sqrt (p->real * p->real + p->im * p->im);

Si la declaración de tipo de la primera línea fuera omitida, el programa dispararía un error de compilación, pues la variable “p” no estaría definida. Pero el programa sería sintácticamente correcto todavía, dado que las declaraciones de tipo proveen información semántica solamente.

 

La gramática necesaria para especificar un lenguaje de programación puede ser clasificada por su posición en la Jerarquía de Chomsky. La sintaxis de la mayoría de los lenguajes de programación puede ser especificada utilizando una gramática Tipo-2, es decir, son gramáticas libres de contexto. Algunos lenguajes, incluyendo a Perl y a Lisp, contienen construcciones que permiten la ejecución durante la fase de análisis. Los lenguajes que permiten construcciones que permiten al programador alterar el comportamiento de un analizador hacen del análisis de la sintaxis un problema sin decisión única, y generalmente oscurecen la separación entre análisis y ejecución. En contraste con el sistema de macros de Lisp y los bloques BEGIN de Perl, que pueden tener cálculos generales, las macros de C son meros reemplazos de cadenas, y no requieren ejecución de código.

 

Semántica estática

 

La semántica estática define las restricciones sobre la estructura de los textos válidos que resulta imposible o muy difícil expresar mediante formalismos sintácticos estándar. Para los lenguajes compilados, la semántica estática básicamente incluye las reglas semánticas que se pueden verificar en el momento de compilar. Por ejemplo el chequeo de que cada identificador sea declarado antes de ser usado (en lenguajes que requieren tales declaraciones) o que las etiquetas en cada brazo de una estructura case sean distintas. Muchas restricciones importantes de este tipo, como la validación de que los identificadores sean usados en los contextos apropiados (por ejemplo no sumar un entero al nombre de una función), o que las llamadas a subrutinas tengan el número y tipo de parámetros adecuado, puede ser implementadas definiéndolas como reglas en una lógica conocida como sistema de tipos. Otras formas de análisis estáticos, como los análisis de flujo de datos, también pueden ser parte de la semántica estática. Nuevos lenguajes de programación como Java y C# tienen un análisis definido de asignaciones, una forma de análisis de flujo de datos, como parte de su semántica estática.

 

Sistema de tipos

Artículo principal: Sistema de tipos.

 

Un sistema de tipos define la manera en la cual un lenguaje de programación clasifica los valores y expresiones en tipos, cómo pueden ser manipulados dichos tipos y cómo interactúan. El objetivo de un sistema de tipos es verificar y normalmente poner en vigor un cierto nivel de exactitud en programas escritos en el lenguaje en cuestión, detectando ciertas operaciones inválidas. Cualquier sistema de tipos decidible tiene sus ventajas y desventajas: mientras por un lado rechaza muchos programas incorrectos, también prohíbe algunos programas correctos aunque poco comunes. Para poder minimizar esta desventaja, algunos lenguajes incluyen lagunas de tipos, conversiones explícitas no checadas que pueden ser usadas por el programador para permitir explícitamente una operación normalmente no permitida entre diferentes tipos. En la mayoría de los lenguajes con tipos, el sistema de tipos es usado solamente para checar los tipos de los programas, pero varios lenguajes, generalmente funcionales, llevan a cabo lo que se conoce como inferencia de tipos, que le quita al programador la tarea de especificar los tipos. Al diseño y estudio formal de los sistemas de tipos se le conoce como teoría de tipos.

Bucle for

El bucle for o ciclo for es una estructura de control en la que se puede indicar el número minimo de iteraciones. Está disponible en casi todos los lenguajes de programación imperativos.

 

Elementos del bucle

    * ‘Variable de control’: prácticamente un mandato impuesto por el uso habitual es utilizar la letra i Iterador como variable de control, o bien sus sucesoras en caso de bucles anidados. El uso de esta letra críptica quizás a primera vista es sin embargo una excelente forma de aportar agilidad de lectura al código por su uso tan extensivo. Como raras veces los bucles anidados superan las tres dimensiones (por una sencilla cuestión de explosión exponencial), las letras i, j y k suelen ser las únicas relacionadas con este uso. En C se define en el primer parámetro de la instrucción junto con la inicialización (opcional).

 

    * Inicialización de la variable de control: en pseudolenguaje se pide explicitarlo (es la sección := ValorInicial), sin embargo, otros lenguajes más permisivos como C no lo requieren de forma obligatoria. De todos modos, la práctica de utilizar variables de control que no se inicializan en el bucle no es recomendada para la legibilidad del código. En C se define en el primer parámetro del bucle junto con la variable de control.

 

    * Condición de control: en pseudolenguaje se ve representado por el valor final que puede tomar la variable de control (la sección A ValorFinal). En C es el segundo parámetro y puede ser cualquier condición (ni siquiera es obligación que esté la variable de control, aunque una vez más, esto no se considera una buena práctica).

 

    * Incremento: en pseudolenguaje se toma por defecto el valor 1, aunque puede explicitarse por medio de la sentencia PASO = ValorPaso cualquier número entero (léase bien entero, o sea que técnicamente podemos decrementar). En C es el último parámetro.

 

    * Cuerpo: es lo que se hará en cada iteración, pueden ser una o más instrucciones. En pseudolenguaje pesa la restricción de no poder alterar el valor de la variable de control; esto no es requerido en C, pero no se considera una buena práctica.

 

Usos

Su uso principal se orienta a los vectores, pudiendo modificar, agregar, eliminar o consultar datos que se encuentren según el índice. Por esto último, una condición mínima del vector es que debe ser ordenado, por que si se intenta leer un dato inexistente, esto genera un error de programación.

 

For en pseudolenguaje

La principal diferencia de un bucle PARA con respecto a los bucles MIENTRAS Y REPETIR, es que puede determinarse al comienzo del bucle cuántas veces se iterará el mismo, lo cual muchas veces puede redundar en una optimización del código por parte de los compiladores. Los condicionales constituyen junto con los bucles los pilares de la programación estructurada, y su uso es una evolución de una sentencia de lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de una condición.

 

El bucle PARA se ha convertido en el bucle más ampliamente utilizado en la programación, ya que con la evolución de los lenguajes la mayoría de las condiciones de fin

MIENTRAS NoFinDeTabla(tabla) HACER

 PróximoRegistro(tabla)

 HacerAlgo(ElementoActual(tabl

FIN MIENTRAS

 

Es lo mismo decir:

PARA i := 0 a CantidadRegistros(tabla) – 1, PASO = 1

 PróximoRegistro(tabla)

 HacerAlgo(ElementoActual(tabla))

FIN PARA

 

Otro uso común es utilizar los bucles PARA para recorrer vectores de dos o más dimensiones, en cuyo caso se anidan estas iteraciones.

 

PSEUDOLENGUAJE

Vector a[3][4][2]. // Estamos indicando un vector de 3 dimensiones y 24 elementos en total.

PARA i:= 0 A 2 HACER

  PARA j:= 0 A 3 HACER

    PARA k:= 0 A 1 HACER

      HacerAlgo(a[i][j][k])

    FIN PARA

  FIN PARA

FIN PARA

 

Ejemplo de PARA en pseudocódigo

PARA VariableControl := ValorInicial A ValorFinal, PASO = Incremento

  Cuerpo

 FIN PARA

donde VariableControl, ValorInicial, ValorFinal y Paso son enteros. La(s) instrucción(es) del cuerpo se ejecutará(n) (ValorFinal – ValorInicial + 1) veces, o sea que va desde ValorInicial a ValorFinal inclusive.

 

Ejemplo en C++

int main()

{

  int vector[10], i;

  for(i = 0; i < 10; i++)

  {

   vector[i] = i;

  }

}

 

En la definición del for, tenemos que la variable de control i se inicializa en un valor 0, luego se entrega la condición de control que debe ser falsa durante su ejecución, para completar el ciclo; y por último, tenemos el incrementador en una unidad.

 

Si por ejemplo en la condición colocamos i < 11, entonces el ciclo for se ejecutará desde [0…10], lo cual, al intentar acceder al elemento vector[10], esto generará error, ya que el vector (por definición) va desde [0..(n-1)].

 

Ejemplo anterior escrito en Léxico

tarea

{

los objetos vector[10], i son cantidades

variando i desde 0 hasta 9 haga

         copie i en vector[i]

}

 

 

Bucle Por Cada (For Each)

 

Este bucle es una evolución del concepto del bucle Para en algunos lenguajes. Se utiliza para recorrer estructuras repetitivas de datos de forma más simple y ágil. El bucle For Each puede describirse genéricamente (en pseudolenguaje) de la siguiente manera:

 

Por cada elemento de tipo en conjunto hacer

  Cuerpo

FIN FOR EACH

 

·         Elemento: es el nombre de la variable u objeto que toma el elemento iterado en el cuerpo del bucle.

·         Tipo de Dato: es el tipo de variable o la clase a la que pertenece el objeto que se quiere iterar.

·         Conjunto: es la estructura de datos que se quiere iterar. El uso más típico es con vectores o -en programación orientada a objetos- clases del tipo Colección.

·         Cuerpo: es lo que se hará en cada iteración, pueden ser una o más instrucciones. Si bien no se impone una obligación al respecto, lo más común es que en este Cuerpo exista alguna operación sobre el elemento iterado.

 

Necesidad de una nueva estructura de control

Esta estructura surge como una innovación en los lenguajes para permitir un código más ágil y legible en una situación que es una de las principales causas del uso del bucle PARA: aplicar la misma operación sobre todos los elementos de un vector, y no necesitar conocer la posición del elemento en el vector. Esta estructura con el bucle PARA se resuelve de la siguiente manera:

 

Con el bucle POR CADA esto se reduce a:

 

POR CADA x DE tipo EN Vector HACER

 x = AlgunaOperación(x)

FIN PARA

 

Las ventajas de utilizar la estructura POR CADA son las siguientes:

 

   1. No es necesario llamar a una función que obtenga el tamaño del vector

   2. No es necesario utilizar la incómoda notación de subíndices para referirnos al valor en cuestión, sobre todo teniendo en cuenta que si utilizamos esta estructura es porque no necesitamos el valor del índice.

   3. Nos permite hacer un chequeo en tiempo de compilación sobre el tipo de dato que representa el elemento.

 

El bucle POR CADAo no es un sustituto del PARA, es una mejora para el muy frecuente caso anteriormente mencionado. La diferencia esencial entre el bucle PARA y el POR CADA es que en el primero guía su iteración por una variable que se incrementa hasta cierto punto de corte; en cambio en el segundo lo que guía la iteración es el recorrido de todos los elementos de un vector. Ciertamente podemos transformar cualquier POR CADA en un PARA, pero transformar un bucle PARA en un bucle POR CADA requeriría inicializar y controlar manualmente las variables de control, con lo cual se perdería nuevamente legibilidad en el código. Por tanto, cuando en un lenguaje se nos da la posibilidad de utilizar ambas estructuras, la elección del POR CADA debe hacerse en aquellos casos para los que fue pensado: aplicar la misma operación a todos los elementos de un vector sin importar el orden en que se hagan; si bien no es necesario que la variable elemento sea utilizada en el cuerpo del bucle, su ausencia denota con seguridad una mala elección de estructura de control.

 

Función de un IF

En programación, una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no en función del valor de una condición.

 

Los tipos más conocidos de sentencias condicionales son el SI..ENTONCES (if..then), el SI..ENTONCES..SI NO (if..then..elsA) y el SEGÚN (case o switch), aunque también podríamos mencionar al lanzamiento de errores como una alternativa más moderna para evitar el “anidamiento” de sentencias condicionales.

 

Las sentencias condicionales constituyen, junto con los bucles, los pilares de la programación estructurada, y su uso es una evolución de una sentencia en lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de una condición.

 

Lanzamiento de errores

En el caso de algoritmos donde se ejecutan muchas instrucciones que pueden devolver errores se vuelve a tener el caso de condicionales anidados que dificultan la lectura. Por ejemplo:

 

SI (LeerArchivo(f)) ENTONCES

   SI (AvanzarArchivo(f)) ENTONCES

       SI (ObtenerEntero(Leer(f)) ENTONCES

          Cuerpo

       SINO

          Imprimir “El valor no es entero”

       FIN SI

   SINO

       Imprimir “Se llegó al fin del archivo”

   FIN SI

SINO

   Imprimir “No se pudo abrir el archivo”

FIN SI

 

Si bien es un problema que este anidamiento puede llegar a ser muy grande, la principal razón para utilizar el lanzamiento de errores es que con el tipo de estructura anterior se pierde la noción del camino principal, y cuesta mucho más encontrar las sentencias de ejecución normal, (en este caso Cuerpo), por la presencia de las condiciones de error que entorpecen la legibilidad.

 

Algunos lenguajes como Java han tenido esto en cuenta y desarrollaron el lanzamiento de errores, que consiste en separar el tratamiento de errores al final de la instrucción, para no perder de vista el hilo de continuidad. Para esto, los métodos en lugar de devolver un valor lógico (verdadero o falso) para determinar si la operación se efectuó correctamente, deben “lanzar” excepciones.

 

El código es ejecutado normalmente hasta que ocurre una excepción, en este caso “salta” al manejo de errores adecuado; es decir las sentencias pueden o no ejecutarse, en función de si previamente se haya lanzado un error o no. En algunos casos puede darse que exista código que debe ejecutarse al final, independientemente de si se haya lanzado o no un error (en nuestro caso podría ser la operación de cerrar el archivo para que otros puedan acceder a él), para lo cual también hay sentencias especiales.

 

INTENTAR

       LeerArchivo(f)

       AvanzarArchivo(f)

       ObtenerEntero(Leer(f))

       Cuerpo

CAPTURAR Error1(ExcepciónDeAperturaDeArchivo)

       Imprimir “No se pudo abrir el archivo”

CAPTURAR Error2(ExcepciónDeLecturaDeArchivo)

       Imprimir “Se llegó al final del archivo”

CAPTURAR Error3(ExcepciónDeConversiónDeDatos)

       Imprimir “El valor no es entero)

FINALMENTE

       CuCerrarArchivo(f)

 

A su vez los procedimientos que lanzan excepciones deben contener alguna línea con el siguiente código:

 

LANZAR TipoExcepción

El código que llama a una subrutina que puede lanzar un error, tiene dos alternativas: o la trata él mismo (con la estructura anterior) o la “LANZA” a la subrutina superior que la invocó. Algunas veces no es obligatorio tratar estos errores.

 

En Java la estructura es la siguiente:

try {

       instrucciones

    }

catch (ClaseDeLaExcepción1 objetoExcepción1)

    {

       instruccionesPorError1

    }

catch (ClaseDeExcepción2 ojbetoExcepción2)

    {

       instruccionesPorError2

    }

finally {

       instruccionesFinales

    }

 

Diagrama de flujo

El diagrama de flujo o diagrama de actividades es la representación gráfica del algoritmo o proceso. Se utiliza en disciplinas como programación, economía, procesos industriales y psicología cognitiva.

 

En Lenguaje Unificado de Modelado (UML), un diagrama de actividades representa los flujos de trabajo paso a paso de negocio y operacionales de los componentes en un sistema. Un diagrama de actividades muestra el flujo de control general.

 

En SysML el diagrama de actividades ha sido extendido para indicar flujos entre pasos que mueven elementos físicos (e.g., gasolina) o energía (e.g., presión). Los cambios adicionales permiten al diagrama soportar mejor flujos de comportamiento y datos continuos.

 

Estos diagramas utilizan símbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin de proceso.

 

Características

Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término.

 

Las siguientes son acciones previas a la realización del diagrama de flujo:

·         Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el autor o responsable del proceso, los autores o responsables del proceso anterior y posterior y de otros procesos interrelacionados, así como las terceras partes interesadas.

·         Definir qué se espera obtener del diagrama de flujo.

·         Identificar quién lo empleará y cómo.

·         Establecer el nivel de detalle requerido.

·         Determinar los límites del proceso a describir.

 

Los pasos a seguir para construir el diagrama de flujo son:

·         Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.

·         Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.

·         Si el nivel de detalle definido incluye actividades menores, listarlas también.

·         Identificar y listar los puntos de decisión.

·         Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.

·         Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.

 

Descripción

 

En UML 1.x, un diagrama de actividades es una variación del diagrama de estado UML donde los “estados” representan operaciones, y las transiciones representan las actividades que ocurren cuando la operación es completa.

 

El diagrama de actividades UML 2.0, mientras que es similar en aspecto al diagrama de actividades UML 1.x, ahora tiene semánticas basadas en redes de Petri. En UML 2.0, el diagrama general de interacción está basado en el diagrama de actividades. El diagrama de actividad es una forma especial de diagrama de estado usado para modelar una secuencia de acciones y condiciones tomadas dentro de un proceso.

 

La especificación del Lenguaje de Modelado Unificado (UML) define un diagrama de actividad como:

 

“… una variación de una máquina estados, lo cual los estados representan el rendimiento de las acciones o subactividades y las transiciones se provocan por la realización de las acciones o subactividades.”[1]

 

El propósito del diagrama de actividad es modelar un proceso de flujo de trabajo (workflow) y/o modelar operaciones.

 

Una Operación es un servicio proporcionado por un objeto, que está disponible a través de una interfaz.

 

Una Interfaz es un grupo de operaciones relacionadas con la semántica.

 

Tipos de diagramas de flujo

·         Formato vertical: En él, el flujo y la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.

·         Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.

·         Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aún para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.

·         Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

 

Simbología y significado

·         Óvalo o Elipse: Inicio y término (Abre y/o cierra el diagrama).

·         Rectángulo: Actividad (Representa la ejecución de una o más actividades o procedimientos).

·         Rombo: Decisión (Fórmula una pregunta o cuestión).

·         Círculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).

·         Triángulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).

·         Triángulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).

 

Cursograma

Se trata de la más común y práctica entre todas las clases de flujogramas. Describe el flujo de información en un ente u organización, sus procesos, sistemas administrativos y de control. Permite la impresión visual de los procedimientos y una clara y lógica interpretación.

 

Simbología y normas del cursograma

·         Círculo: Procedimiento estandarizado.

·         Cuadrado: Proceso de control.

·         Línea ininterrumpida: Flujo de información vía formulario o documentación en soporte de papel escrito.

·         Línea interrumpida: Flujo de información vía formulario digital.

·         Rectángulo: Formulario o documentación. Se grafica con un doble de ancho que su altura.

·         Rectángulo Pequeño: Valor o medio de pago (cheque, pagaré, etcétera). Se grafica con un cuádruple de ancho que su altura, siendo su ancho igual al de los formularios.

·         Triángulo (base inferior): Archivo definitivo.

·         Triángulo Invertido (base superior): Archivo Transitorio.

·         Semi-óvalo: Demora.

·         Rombo: División entre opciones.

·         Trapezoide: Carga de datos al sistema.

·         Elipsoide: Acceso por pantalla.

·         Hexágono: Proceso no representado.

·         Pentágono: Conector.

·         Cruz de Diagonales: Destrucción de Formularios.

 

Según la normativa, el flujo presupuesto es de izquierda a derecha y de arriba hacia abajo, siendo optativo el uso de flechas. Cuando el sentido es invertido (de derecha a izquierda o de abajo hacia arriba), es obligatorio el uso de la flecha.

 

Historia

La paternidad del diagrama de flujo es en principio algo difusa. El método estructurado para documentar gráficamente un proceso como un flujo de pasos sucesivo y alternativos, el “proceso de diagrama de flujo”, fue expuesto por Frank Gilbreth, en la Sociedad Americana de Ingenieros Mecánicos (ASME), en 1921, bajo el enunciado de “Proceso de Gráficas-Primeros pasos para encontrar el mejor modo”. Estas herramientas de Gilbreth rápidamente encontraron sitio en los programas de ingeniería industrial.

 

Al principio de los 30, un ingeniero industrial, Allan H. Mogensen comenzó la formación de personas de negocios en Lake Placid, Nueva York, incluyendo el uso del diagrama de flujo. Art Spinanger, asistente a las clases de Mogesen, utilizó las herramientas en su trabajo en Procter & Gamble, donde desarrolló su “Programa Metódico de Cambios por Etapas”. Otro asistente al grupo de graduados en 1944, Ben S. Graham, Director de Ingeniería de Formcraft Standard Register Corporation, adaptó la Gráfica de flujo de procesos al tratamiento de la información en su empresa. Y desarrolló la Gráfica del proceso de múltiples flujos en múltiples pantallas, documentos, y sus relaciones. En 1947, ASME adoptó un conjunto de símbolos derivados de la obra original de Gilbreth como Norma ASME para los gráficos de procesos (preparada Mishad, Ramsan y Raiaan).

 

Sin embargo, según explica Douglas Hartree fueron originalmente Herman Goldstine y John von Neumann quienes desarrollaron el diagrama de flujo (inicialmente llamado “diagrama”) para planificar los programas de ordenador. Las tablas de programación original de flujo de Goldstine y von Neumann, aparecen en un informe no publicado, “Planificación y codificación de los problemas de un instrumento de computación electrónica, la Parte II, Volumen 1 “(1947), reproducido en las obras completas de von Neumann.

 

Inicialmente los diagramas de flujo resultaron un medio popular para describir algoritmos de computadora, y aún se utilizan con este fin. Herramientas como los diagramas de actividad UML, pueden ser considerados como evoluciones del diagrama de flujo.

 

En la década de 1970 la popularidad de los diagramas de flujo como método propio de la informática disminuyó, con el nuevo hardware y los nuevos lenguajes de programación de tercera generación. Y por otra parte se convirtieron en instrumentos comunes en el mundo empresarial. Son una expresión concisa, legible y práctica de algoritmos. Actualmente se aplican en muchos campos del conocimiento, especialmente como simplificación y expresión lógica de procesos, etc.

 

Ventajas de los diagramas de flujo

·         Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.

·         Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos, los flujos de los re-procesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.

·         Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el análisis de las mismas.

·         Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.

·         Al igual que el pseudocódigo, el diagrama de flujo con fines de análisis de algoritmos de programación puede ser ejecutado en un ordenador, con un IDE como Free DFD.

 

¿Qué es un Algoritmo?

 

Los diagramas de flujo sirven para representar algoritmos de manera gráfica.

En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemático persa Al-Juarismi) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.

 

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.

 

Definición formal

 

En general, no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida). Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Eratóstenes que nunca termine de calcular números primos no deja de ser un algoritmo.

 

A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos como máquinas de Turing entre otros. Sin embargo, estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos. En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:

 

    Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados “computacionales” por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar).

 

    Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.

    Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.

 

En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría, por ejemplo el método de Newton y la eliminación de Gauss-Jordan funcionan, al menos en principio, con números de precisión infinita; sin embargo no es posible programar la precisión infinita en una computadora, y no por ello dejan de ser algoritmos. En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda función calculable se puede programar en una máquina de Turing (o equivalentemente, en un lenguaje de programación suficientemente general):

 

    Aritmetizabilidad. Solamente operaciones innegablemente calculables están disponibles en el paso inicial.

 

Medios de expresión de un algoritmo

 

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

 

La descripción de un algoritmo usualmente se hace en tres niveles:

 

   1. Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.

   2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.

   3. Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.

 

También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.

Diagrama de flujo

Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número x

Artículo principal: Diagrama de flujo.

Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

 

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.

 

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

 

Pseudocódigo

Artículo principal: Pseudocódigo.

El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.

 

El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.

 

Así el pseudodocódigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programación. Busque fuentes más precisas para tener mayor comprensión del tema.

Sistemas formales

 

La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turing, máquina de registro y funciones µ-recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación.

Implementación

 

Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos.

Variables

 

Son elementos que toman valores específicos de un tipo de datos concreto. La declaración de una variable puede realizarse comenzando con var. Principalmente, existen dos maneras de otorgar valores iniciales a variables:

 

   1. Mediante una sentencia de asignación.

   2. Mediante un procedimiento de entrada de datos (por ejemplo: ‘read’).

 

 

Ejemplo:

    …

    i:=1;

    read(n);

    while i < n do begin

       (* cuerpo del bucle *)

       i := i + 1

    end;

     …

 

Estructuras secuenciales

 

La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. La asignación de esto consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:

 

   1. Simples: Consiste en pasar un valor constante a una variable (a ? 15)

   2. Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso (a ? a + 1)

   3. Acumulador: Consiste en usarla como un sumador en un proceso (a ? a + b)

   4. De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a ? c + b*2/4).

 

Un ejemplo de estructura secuencial, como obtener la área de un triángulo:

 

Inicio

    float b, h, a;

    printf(“Diga la base”);

    scanf(“%f”, &b);

    printf(“Diga la altura”);

    scanf(“%f”, &h);

    a = (b*h)/2;

    printf(“El área del triángulo es %f”, a)

Fin

 

Algoritmos como funciones

 

Artículo principal: Teoría de la computabilidad.

Esquemática de un algoritmo solucionando un problema de ciclo hamiltoniano.

 

Un algoritmo se puede concebir como una función que transforma los datos de un problema (entrada) en los datos de una solución (salida). Más aun, los datos se pueden representar a su vez como secuencias de bits, y en general, de símbolos cualesquiera. Como cada secuencia de bits representa a un número natural (véase Sistema binario), entonces los algoritmos son en esencia funciones de los números naturales en los números naturales que sí se pueden calcular. Es decir que todo algoritmo calcula una función f:\mathbf N\to \mathbf N donde cada número natural es la codificación de un problema o de una solución.

 

En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningún valor de salida, y podemos decir que la función queda indefinida para ese valor de entrada. Por esta razón se considera que los algoritmos son funciones parciales, es decir, no necesariamente definidas en todo su dominio de definición.

 

Cuando una función puede ser calculada por medios algorítmicos, sin importar la cantidad de memoria que ocupe o el tiempo que se tarde, se dice que dicha función es computable. No todas las funciones entre secuencias datos son computables. El problema de la parada es un ejemplo.

 

Análisis de algoritmos

Artículo principal: Análisis de algoritmos.

 

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El análisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada.

 

El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y, en la mayoría de los casos, su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces “codificar”) un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Lexico, cuyos códigos pueden estar en el idioma del programador.

 

Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento, mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. En este último caso, la finalización con éxito del algoritmo no se podría definir como la terminación de este con una salida satisfactoria, sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil. Si se implementa correctamente, el valor devuelto por el algoritmo será válido, hasta que evalúe el siguiente dígito binario. De esta forma, mientras evalúa la siguiente secuencia podrán leerse dos tipos de señales: una señal positiva (en el caso de que el número de ceros sea mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la devolución de valores exclusivamente positivos si hay más ceros que unos en la secuencia y, en cualquier otro caso, devolverá una mezcla de señales positivas y negativas.

 

Funciones y palabras reservadas.

Visual Basic tiene un conjunto de funciones que podremos usar. A continuación veremos las más representativas, si bien hay muchas más. Se aconseja ir a la ayuda para ampliar o profundizar sobre la cuestión

Palabras reservadas.

Rem: Nos permite incluir comentarios sobre el programa en  medio del código, la sintaxis es:

    Rem Comentario

Además, se puede conseguir lo mismo sin necesidad de escribir Rem, utilizando la comilla simple, es decir, la anterior orden es equivalente a:

    ‘Comentario

Observaremos como el editor de código reconoce los comentarios ya que les aplica como color del texto el verde.

Exit Sub: Nos permite acabar la ejecución del procedimiento en el que lo pongamos, y en punto del mismo donde se halle situado.

End: Nos permite acabar la ejecución del programa en el punto del mismo donde se halle situado.

Funciones.

MsgBox: Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve un tipo Integer correspondiente al botón elegido por el usuario.

Sintaxis

MsgBox(prompt[, buttons][, title][, helpfile, context])

La sintaxis de la función MsgBox consta de estos argumentos:

Parte

Descripción

prompt

Requerido. Cadena que representa el prompt en el cuadro de diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los caracteres utilizados. 

buttons

Opcional. Expresión numérica que corresponde a la suma de los valores que especifican el número y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botón predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0.

title

Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si se omite title, en la barra de título se coloca el nombre de la aplicación.

helpfile

Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de diálogo. Si se especifica helpfile, también se debe especificar context.

context

Opcional. Expresión numérica que es igual al número de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, también se debe especificar helpfile.


Valores

El argumento buttons tiene estos valores:

Constante

Valor

Descripción

VbOKOnly

0

Muestra solamente el botón Aceptar.

VbOKCancel

1

Muestra los botones Aceptar y Cancelar.

VbAbortRetryIgnore

2

Muestra los botones Anular, Reintentar e Ignorar.

VbYesNoCancel

3

Muestra los botones , No y Cancelar.

VbYesNo

4

Muestra los botones y No.

VbRetryCancel

5

Muestra los botones Reintentar y Cancelar.

VbCritical

16

Muestra el icono de mensaje crítico.

VbQuestion

32

Muestra el icono de pregunta de advertencia.

VbExclamation

48

Muestra el icono de mensaje de advertencia.

VbInformation

64

Muestra el icono de mensaje de información.

VbDefaultButton1

0

El primer botón es el predeterminado.

VbDefaultButton2

256

El segundo botón es el predeterminado.

VbDefaultButton3

512

El tercer botón es el predeterminado.

VbDefaultButton4

768

El cuarto botón es el predeterminado.

VbApplicationModal

0

Aplicación modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicación actual.

VbSystemModal

4096

Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes.

VbMsgBoxHelpButton

16384

Agrega el botón Ayuda al cuadro de mensaje.

VbMsgBoxSetForeground

65536

Especifica la ventana del cuadro de mensaje como la ventana de primer plano.

VbMsgBoxRight

524288

El texto se alinea a la derecha.

VbMsgBoxRtlReading

1048576

Especifica que el texto debe aparecer para ser leído de derecha a izquierda en sistemas hebreo y árabe.


El primer grupo de valores (0 a 5) describe el número y el tipo de los botones mostrados en el cuadro de diálogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botón predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman números para obtener el valor final del argumento buttons, se utiliza solamente un número de cada grupo.

Nota:  Estas constantes las especifica Visual Basic para Aplicaciones. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del código en vez de sus valores reales.

Valores devueltos

Constante

Valor

Descripción

vbOK

1

Aceptar

vbCancel

2

Cancelar

vbAbort

3

Anular

vbRetry

4

Reintentar

vbIgnore

5

Ignorar

vbYes

6

vbNo

7

No


Comentarios

Cuando se proporcionan tanto helpfile como context, el usuario puede presionar F1 para ver el tema de Ayuda correspondiente al context. Algunas aplicaciones como por ejemplo Microsoft Excel, también agregan automáticamente un botón Ayuda al cuadro de diálogo.

Si el cuadro de diálogo cuenta con un botón Cancelar, presionar la tecla ESC tendrá el mismo efecto que hacer clic en este botón. Si el cuadro de diálogo contiene un botón Ayuda, se suministra ayuda interactiva para ese cuadro de diálogo. Sin embargo, no se devuelve valor alguno hasta que se hace clic en uno de estos botones.

Nota: Si se desea especificar más que el primer argumento con nombre, se debe utilizar MsgBox en una expresión. Si deseamos omitir algún argumento de posición, debemos incluir el delimitador de coma correspondiente.

Ejemplo.

La siguiente orden genera un cuadro al cual le indicamos título, texto, le ponemos tres botones: Sí, No y Cancelar. Además le incluimos el icono de pregunta:

MsgBox “¿Esta seguro de que quiere continuar?”, vbYesNoCancel + vbQuestion, “Confirmación”

InputBox: Muestra un mensaje en un cuadro de diálogo, espera que el usuario escriba un texto o haga clic en un botón y devuelve un tipo String con el contenido del cuadro de texto.

Sintaxis

InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])

La sintaxis de la función InputBox consta de estos argumentos:

Parte

Descripción

prompt

Requerido. Cadena que se muestra como mensaje en el cuadro de diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los caracteres utilizados.

title

Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si omite title, en la barra de título se coloca el nombre de la aplicación.

default

Opcional. Expresión de cadena que se muestra en el cuadro de texto como respuesta predeterminada cuando no se suministra una cadena. Si omite default, se muestra el cuadro de texto vacío.

xpos

Opcional. Expresión numérica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo del cuadro de diálogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de diálogo se centra horizontalmente.

ypos

Opcional. Expresión numérica que especifica, en twips, la distancia en sentido vertical entre el borde superior del cuadro de diálogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de diálogo se coloca a aproximadamente un tercio de la altura de la pantalla, desde el borde superior de la misma.

helpfile

Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utilizará para proporcionar ayuda interactiva para el cuadro de diálogo. Si se especifica helpfile, también deberá especificarse context.

context

Opcional. Expresión numérica que es el número de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, también deberá especificarse helpfile.


Comentarios

Cuando se especifica tanto helpfile como context, el usuario puede presionar F1 para ver el tema de Ayuda correspondiente a context. Algunas aplicaciones como por ejemplo, Microsoft Excel, también agregan automáticamente un botón Ayuda al cuadro de diálogo. Si el usuario hace clic en Aceptar o presiona Entrar , la función InputBox devuelve lo que haya en el cuadro de texto. Si el usuario hace clic en Cancelar, la función devuelve una cadena de caracteres de longitud cero (“”).

Nota: Si deseamos especificar más que el primer argumento con nombre, debemos utilizar InputBox en una expresión. Si deseamos omitir algunos argumentos de posición, debemos incluir el delimitador de coma correspondiente.

Ejemplo.

La siguiente orden genera un cuadro al cual le indicamos texto, título y asignamos el texto que escriba el usuario a la variable cadena:

Dim cadena As String
cadena = InputBox(“Introduzca el nombre del usuario”, “Identificación”)

Observar que como asignamos el resultado de la función InputBox a una variable, debemos encerrar los argumentos entre paréntesis.

 

Format: Visual Basic proporciona una gran flexibilidad a la hora de presentar formatos de números, así como de fechas y horas. Puede presentar con facilidad formatos internacionales de números, fechas y horas.

La función Format convierte un valor numérico en una cadena de texto y le proporciona control sobre la apariencia de la cadena. Por ejemplo, podemos especificar el número de decimales, los ceros a la izquierda o a la derecha y los formatos de moneda. La sintaxis es:

Format(expresión[, patrón o máscara])

El argumento expresión especifica el número que se va a convertir y el argumento patrón o máscara es una cadena compuesta por símbolos que determinan el formato del número. En la tabla siguiente se enumeran los símbolos más comúnmente utilizados.

Símbolo

Descripción

0

Marcador de posición de dígito; imprime un cero a la izquierda o a la derecha en esa posición, si corresponde.

#

Marcador de posición de dígito; nunca imprime ceros a la izquierda ni a la derecha.

.

Marcador de posición decimal.

,

Separador de millares.

– + $ ( ) espacio

Carácter literal; los caracteres se presentan exactamente como están escritos en la cadena de formato.

Ejemplo: Format(32675,”##,##0.00″) mostraría en pantalla: 32.675,00

Formatos con nombre

Visual Basic proporciona varios formatos estándar para su uso con la función Format. En lugar de especificar símbolos en el argumento formato, puede especificar dichos formatos mediante un nombre en el argumento formato de la función Format. El nombre del formato tiene que ir siempre entre comillas dobles (“”).

En la tabla siguiente se enumeran los nombres de formato que puede usar.

Nombre de formato

Descripción

General Number

Muestra los números sin separador de millares.

Currency

Muestra los números con separador de millares, si procede; muestra dos dígitos a la derecha del separador decimal. El resultado se basa en los valores del sistema del usuario.

Fixed

Muestra al menos un dígito a la izquierda y dos dígitos a la derecha del separador decimal.

Standard

Muestra los números con separador de millares, al menos un dígito a la izquierda y dos dígitos a la derecha.

Percent

Multiplica el valor por 100 con un signo de porcentaje al final.

Scientific

Utiliza la notación científica estándar.

General Date

Muestra la fecha y la hora si expresión contiene ambas. Si expresión sólo es una fecha o una hora, no presenta la información que falta. La presentación de la fecha está determinada por los valores del sistema del usuario.

Long Date

Utiliza el formato Fecha larga especificado por los valores del sistema del usuario.

Medium Date

Utiliza el formato dd-mmm-aa (por ejemplo, 03-Abr-93). La presentación de la fecha está determinada por los valores del sistema del usuario.

Short Date

Utiliza el formato Fecha corta especificado por los valores del sistema del usuario.

Long Time

Muestra la hora según el formato de hora larga del sistema del usuario; incluye horas, minutos y segundos.

Medium Time

Muestra la hora, los minutos y “AM” o “PM” con el formato “hh:mm AM/PM”.

Short Time

Muestra la hora y los minutos con el formato hh:mm.

Yes/No

Cualquier valor numérico distinto de cero (normalmente -1) es Yes. Cero es No.

True/False

Cualquier valor numérico distinto de cero (normalmente -1) es True. Cero es False.

On/Off

Cualquier valor numérico distinto de cero (normalmente -1) es On. Cero es Off.

Imprimir fechas y horas con formato

Para imprimir fechas y horas con formato, utilizaremos la función Format con símbolos que representen fechas y horas. En los ejemplos siguientes se utilizan las funciones Now y Format para identificar y dar formato a la fecha y hora actuales. 

Sintaxis de Format

Resultado

Format(Now, “d/m/aa“)

1/12/01

Format(Now, “dddd, dd mmmm, aaaa“)

sábado, 01 diciembre, 2001

Format(Now, “d-mmm“)

1-dic

Format(Now, “mmmm-aa“)

diciembre-01

Format(Now, “hh:mm AM/PM”)

07:18 AM

Format(Now, “h:mm:ss a/p”)

7:18:00 a

Format(Now, “d-mmmm h:mm“)

1-diciembre 7:18


Int: Devuelve la parte entera de un número: Int(Número).

Len: Devuelve la longitud de una cadena: Len(Cadena).

Rnd: Devuelve un número aleatorio entre 0 y 1.

Val: Devuelve el valor numérico de una cadena alfanumérica, solo convierte hasta que encuentra el primer carácter que no es un número: Val(Cadena).

Aún hay muchas más funciones, cuando las necesitemos, ya las estudiaremos.

Propiedades comunes.

A continuación veremos algunas propiedades comunes a la mayoría de los controles, estas se podrán modificar desde la vista formulario, con el control activado y en la ventana de propiedades:

Nombre: Nombre que deseemos asignar al objeto, es un identificador interno para el código.

Caption: Habitualmente igual que el nombre del objeto, pero es la forma de identificar el objeto de cara al usuario, por ejemplo, si tenemos un botón en nuestro formulario que al pulsarlo nos acabe la ejecución, internamente le llamaremos BotonSalir, pero basta con que le pongamos como Caption Salir, que es lo que verá el usuario.

Enabled: Sólo admite dos valores: True o False, e indica si el control está o no activado.

Visible: Sólo admite dos valores: True o False, e indica si el control está o no visible.

Ejemplo.

Crear un EXE estandar, llamar Ejemplo2 al formulario, al cual le insertaremos un botón en la parte inferior derecha, ponerle como nombre  BotonSalir y como Caption Salir ( si queremos que el usuario pueda activar el botón con la combinación de teclas ALT + S, deberemos anteponer a la letra S del caption el símbolo &).

A este botón le insertaremos código de forma que cuando el usuario pulse, salga un cuadro por pantalla pidiendo confirmación para salir del programa, si el usuario pulsa Sí, debe acabar la ejecución y si pulsa No, no debe hacer nada.

Insertar otro botón en la parte inferior izquierda, ponerle como nombre  BotonFecha y como Caption Fecha y hora del sistema ( si queremos que el usuario pueda activar el botón con la combinación de teclas ALT + F, deberemos anteponer a la letra F del caption el símbolo &).

Guías para estudiar:

Libro1_Cap1

Libro1_Cap2

Libro1_Cap3

Normal
0

21

false
false
false

ES-AR
X-NONE
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Tabla normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:””;
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;
mso-fareast-language:EN-US;}

Lenguaje de programación

 

Un lenguaje de programación es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a cabo por máquinas como las computadoras.

 

Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.

 

Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.

 

También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:

    * El desarrollo lógico del programa para resolver un problema en particular.

    * Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).

    * Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.

    * Prueba y depuración del programa.

    * Desarrollo de la documentación.

 

Existe un error común que trata por sinónimos los términos ‘lenguaje de programación’ y ‘lenguaje informático’. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación, sino un conjunto de instrucciones que permiten diseñar el contenido de los documentos).

 

Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción de un programa de forma colaborativa.

 

Historia

 

Para que la computadora entienda nuestras instrucciones debe usarse un lenguaje específico conocido como código máquina, el cual la máquina comprende fácilmente, pero que lo hace excesivamente complicado para las personas. De hecho sólo consiste en cadenas extensas de números 0 y 1.

 

Para facilitar el trabajo, los primeros operadores de computadoras decidieron hacer un traductor para reemplazar los 0 y 1 por palabras o abstracción de palabras y letras provenientes del inglés; éste se conoce como lenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa add (sumar). El lenguaje ensamblador sigue la misma estructura del lenguaje máquina, pero las letras y palabras son más fáciles de recordar y entender que los números.

 

La necesidad de recordar secuencias de programación para las acciones usuales llevó a denominarlas con nombres fáciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL (multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denominó “instrucciones”, y a este conjunto de instrucciones se le llamó lenguaje ensamblador. Posteriormente aparecieron diferentes lenguajes de programación, los cuales reciben su denominación porque tienen una estructura sintáctica similar a los lenguajes escritos por los humanos, denominados también lenguajes de alto nivel.

 

La primera programadora de computadora conocida fue Ada Lovelace, hija de Anabella Milbanke Byron y Lord Byron. Anabella introdujo en las matemáticas a Ada quien, después de conocer a Charles Babbage, tradujo y amplió una descripción de su máquina analítica. Incluso aunque Babbage nunca completó la construcción de cualquiera de sus máquinas, el trabajo que Ada realizó con éstas le hizo ganarse el título de primera programadora de computadoras del mundo. El nombre del lenguaje de programación Ada fue escogido como homenaje a esta programadora.

 

A finales de 1953, John Backus sometió una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar la computadora central IBM 704. El histórico equipo Fortran de Backus consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre.

 

El primer manual para el lenguaje Fortran apareció en octubre de 1956, con el primer compilador Fortran entregado en abril de 1957. Esto era un compilador optimizado, porque los clientes eran reacios a usar un lenguaje de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador.

 

En 1960, se creó COBOL, uno de los lenguajes usados aún en la actualidad, en informática de gestión.

 

A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un método más eficiente para programarlas. Entonces, se crearon los lenguajes de alto nivel, como lo fue BASIC en las versiones introducidas en los microordenadores de la década de 1980. Mientras que una tarea tan sencilla como sumar dos números puede necesitar varias instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastará una sola sentencia.

 

Elementos

Variables y Vectores

Las variables podrían calificarse como contenedores de datos y por ello se diferencian según el tipo de dato que son capaces de almacenar. En la mayoría de lenguajes de programación se requiere especificar un tipo de variable concreto para guardar un dato concreto. Por ejemplo, en Java, si deseamos guardar una cadena de texto deberemos especificar que la variable es del tipo “String”. Por contra en otros lenguajes como PHP, este tipo de especificación de variables no es necesario. Además también existen variables compuestas por varias variables llamadas vectores. Un vector no es más que un conjunto de variables consecutivas en memoria y del mismo tipo guardadas dentro de una variable contenedor. A continuación añadimos un listado con los tipos de variables y vectores más comunes:

 

-Variables tipo Char: Estas variables contienen un único carácter, es decir, una letra, un signo o un número.

 

-Variables tipo Int: Contienen un número entero.

 

-Variables tipo float: Contienen un número decimal.

 

-Variables tipo String: Contienen cadenas de texto, o lo que es lo mismo, es un vector con varias variables del tipo Char.

 

-Variables del tipo Boolean: Solo pueden contener un 0 o un 1. El cero es considerado para muchos lenguajes como el literal “False” mientras que el 1 se considera “True”.

 

Condicionantes

Los condicionantes son estructuras de código que indican que, para que cierta parte del programa se ejecute, deben cumplirse ciertas premisas; por ejemplo: que dos valores sean iguales, que un valor exista, que un valor sea mayor que otro… Estos condicionantes por lo general solo se ejecutan una vez a lo largo del programa. Los condicionantes más conocidos y empleados en programación son:

 

    * If: Indica una condición para que se ejecute una parte del programa.

    * Else if: Siempre va precedido de un “If” e indica una condición para que se ejecute una parte del programa siempre que no cumpla la condición del if previo y si se cumpla con la que el “else if” especifique.

    * Else: Siempre precedido de “If” y en ocasiones de “Else If”. Indica que debe ejecutarse cuando no se cumplan las condiciones prévias.

 

Bucles

Los bucles son parientes cercanos de los condicionantes, pero ejecutan constantemente un código mientras se cumpla una determinada condición. Los más frecuentes son:

 

    * For: Ejecuta un código mientras una variable se encuentre entre 2 determinados parámetros.

    * While: Ejecuta un código mientras se cumpla la condición que solicita.

 

Hay que decir que a pesar de que existan distintos tipos de bucles, ambos son capaces de realizar exactamente las mismas funciones. El empleo de uno u otro depende, por lo general, del gusto del programador.

 

Funciones

 

Las funciones se crearon para evitar tener que repetir constantemente fragmentos de código. Una función podría considerarse como una variable que encierra código dentro de si. Por lo tanto cuando accedemos a dicha variable (la función) en realidad lo que estamos es diciendo al programa que ejecute un determinado código predefinido anteriormente.

 

Todos los lenguajes de programación tienen algunos elementos de formación primitivos para la descripción de los datos y de los procesos o transformaciones aplicadas a estos datos (tal como la suma de dos números o la selección de un elemento que forma parte de una colección). Estos elementos primitivos son definidos por reglas sintácticas y semánticas que describen su estructura y significado respectivamente.

 

Sintaxis

Con frecuencia se resaltan los elementos de la sintaxis con colores diferentes para facilitar su lectura. Este ejemplo está escrito en Python.

 

A la forma visible de un lenguaje de programación se le conoce como sintaxis. La mayoría de los lenguajes de programación son puramente textuales, es decir, utilizan secuencias de texto que incluyen palabras, números y puntuación, de manera similar a los lenguajes naturales escritos. Por otra parte, hay algunos lenguajes de programación que son más gráficos en su naturaleza, utilizando relaciones visuales entre símbolos para especificar un programa.

 

La sintaxis de un lenguaje de programación describe las combinaciones posibles de los símbolos que forman un programa sintácticamente correcto. El significado que se le da a una combinación de símbolos es manejado por su semántica (ya sea formal o como parte del código duro de la referencia de implementación). Dado que la mayoría de los lenguajes son textuales, este artículo trata de la sintaxis textual.

 

La sintaxis de los lenguajes de programación es definida generalmente utilizando una combinación de expresiones regulares (para la estructura léxica) y la Notación de Backus-Naur (para la estructura gramática). Este es un ejemplo de una gramática simple, tomada de Lisp:

 

expresión ::= átomo | lista

átomo     ::= número | símbolo

número    ::= [+-]? [‘0’-‘9’]+

símbolo   ::= [‘A’-‘Z’] [‘a’-‘z’].*

lista     ::= ‘(‘ expresión* ‘)’

 

Con esta gramática se especifica lo siguiente:

 

    * una expresión puede ser un átomo o una lista;

    * un átomo puede ser un número o un símbolo;

    * un número es una secuencia continua de uno o más dígitos decimales, precedido opcionalmente por un signo más o un signo menos;

    * un símbolo es una letra seguida de cero o más caracteres (excluyendo espacios); y

    * una lista es un par de paréntesis que abren y cierran, con cero o más expresiones en medio.

 

Algunos ejemplos de secuencias bien formadas de acuerdo a esta gramática:

 

‘12345’, ‘()’, ‘(a b c232 (1))’

 

No todos los programas sintácticamente correctos son semánticamente correctos. Muchos programas sintácticamente correctos tienen inconsistencias con las reglas del lenguaje; y pueden (dependiendo de la especificación del lenguaje y la solidez de la implementación) resultar en un error de traducción o ejecución. En algunos casos, tales programas pueden exhibir un comportamiento indefinido. Además, incluso cuando un programa está bien definido dentro de un lenguaje, todavía puede tener un significado que no es el que la persona que lo escribió estaba tratando de construir.

 

Usando el lenguaje natural, por ejemplo, puede no ser posible asignarle significado a una oración gramaticalmente válida o la oración puede ser falsa:

 

    * “Las ideas verdes y descoloridas duermen furiosamente” es una oración bien formada gramaticalmente pero no tiene significado comúnmente aceptado.

    * “Juan es un soltero casado” también está bien formada gramaticalmente pero expresa un significado que no puede ser verdadero.

 

El siguiente fragmento en el lenguaje C es sintácticamente correcto, pero ejecuta una operación que no está definida semánticamente (dado que p es un apuntador nulo, las operaciones p->real y p->im no tienen ningún significado):

 

complex *p = NULL;

complex abs_p = sqrt (p->real * p->real + p->im * p->im);

Si la declaración de tipo de la primera línea fuera omitida, el programa dispararía un error de compilación, pues la variable “p” no estaría definida. Pero el programa sería sintácticamente correcto todavía, dado que las declaraciones de tipo proveen información semántica solamente.

 

La gramática necesaria para especificar un lenguaje de programación puede ser clasificada por su posición en la Jerarquía de Chomsky. La sintaxis de la mayoría de los lenguajes de programación puede ser especificada utilizando una gramática Tipo-2, es decir, son gramáticas libres de contexto. Algunos lenguajes, incluyendo a Perl y a Lisp, contienen construcciones que permiten la ejecución durante la fase de análisis. Los lenguajes que permiten construcciones que permiten al programador alterar el comportamiento de un analizador hacen del análisis de la sintaxis un problema sin decisión única, y generalmente oscurecen la separación entre análisis y ejecución. En contraste con el sistema de macros de Lisp y los bloques BEGIN de Perl, que pueden tener cálculos generales, las macros de C son meros reemplazos de cadenas, y no requieren ejecución de código.

 

Semántica estática

 

La semántica estática define las restricciones sobre la estructura de los textos válidos que resulta imposible o muy difícil expresar mediante formalismos sintácticos estándar. Para los lenguajes compilados, la semántica estática básicamente incluye las reglas semánticas que se pueden verificar en el momento de compilar. Por ejemplo el chequeo de que cada identificador sea declarado antes de ser usado (en lenguajes que requieren tales declaraciones) o que las etiquetas en cada brazo de una estructura case sean distintas. Muchas restricciones importantes de este tipo, como la validación de que los identificadores sean usados en los contextos apropiados (por ejemplo no sumar un entero al nombre de una función), o que las llamadas a subrutinas tengan el número y tipo de parámetros adecuado, puede ser implementadas definiéndolas como reglas en una lógica conocida como sistema de tipos. Otras formas de análisis estáticos, como los análisis de flujo de datos, también pueden ser parte de la semántica estática. Nuevos lenguajes de programación como Java y C# tienen un análisis definido de asignaciones, una forma de análisis de flujo de datos, como parte de su semántica estática.

 

Sistema de tipos

Artículo principal: Sistema de tipos.

 

Un sistema de tipos define la manera en la cual un lenguaje de programación clasifica los valores y expresiones en tipos, cómo pueden ser manipulados dichos tipos y cómo interactúan. El objetivo de un sistema de tipos es verificar y normalmente poner en vigor un cierto nivel de exactitud en programas escritos en el lenguaje en cuestión, detectando ciertas operaciones inválidas. Cualquier sistema de tipos decidible tiene sus ventajas y desventajas: mientras por un lado rechaza muchos programas incorrectos, también prohíbe algunos programas correctos aunque poco comunes. Para poder minimizar esta desventaja, algunos lenguajes incluyen lagunas de tipos, conversiones explícitas no checadas que pueden ser usadas por el programador para permitir explícitamente una operación normalmente no permitida entre diferentes tipos. En la mayoría de los lenguajes con tipos, el sistema de tipos es usado solamente para checar los tipos de los programas, pero varios lenguajes, generalmente funcionales, llevan a cabo lo que se conoce como inferencia de tipos, que le quita al programador la tarea de especificar los tipos. Al diseño y estudio formal de los sistemas de tipos se le conoce como teoría de tipos.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bucle for

El bucle for o ciclo for es una estructura de control en la que se puede indicar el número minimo de iteraciones. Está disponible en casi todos los lenguajes de programación imperativos.

 

Elementos del bucle

    * ‘Variable de control’: prácticamente un mandato impuesto por el uso habitual es utilizar la letra i Iterador como variable de control, o bien sus sucesoras en caso de bucles anidados. El uso de esta letra críptica quizás a primera vista es sin embargo una excelente forma de aportar agilidad de lectura al código por su uso tan extensivo. Como raras veces los bucles anidados superan las tres dimensiones (por una sencilla cuestión de explosión exponencial), las letras i, j y k suelen ser las únicas relacionadas con este uso. En C se define en el primer parámetro de la instrucción junto con la inicialización (opcional).

 

    * Inicialización de la variable de control: en pseudolenguaje se pide explicitarlo (es la sección := ValorInicial), sin embargo, otros lenguajes más permisivos como C no lo requieren de forma obligatoria. De todos modos, la práctica de utilizar variables de control que no se inicializan en el bucle no es recomendada para la legibilidad del código. En C se define en el primer parámetro del bucle junto con la variable de control.

 

    * Condición de control: en pseudolenguaje se ve representado por el valor final que puede tomar la variable de control (la sección A ValorFinal). En C es el segundo parámetro y puede ser cualquier condición (ni siquiera es obligación que esté la variable de control, aunque una vez más, esto no se considera una buena práctica).

 

    * Incremento: en pseudolenguaje se toma por defecto el valor 1, aunque puede explicitarse por medio de la sentencia PASO = ValorPaso cualquier número entero (léase bien entero, o sea que técnicamente podemos decrementar). En C es el último parámetro.

 

    * Cuerpo: es lo que se hará en cada iteración, pueden ser una o más instrucciones. En pseudolenguaje pesa la restricción de no poder alterar el valor de la variable de control; esto no es requerido en C, pero no se considera una buena práctica.

 

Usos

Su uso principal se orienta a los vectores, pudiendo modificar, agregar, eliminar o consultar datos que se encuentren según el índice. Por esto último, una condición mínima del vector es que debe ser ordenado, por que si se intenta leer un dato inexistente, esto genera un error de programación.

 

For en pseudolenguaje

La principal diferencia de un bucle PARA con respecto a los bucles MIENTRAS Y REPETIR, es que puede determinarse al comienzo del bucle cuántas veces se iterará el mismo, lo cual muchas veces puede redundar en una optimización del código por parte de los compiladores. Los condicionales constituyen junto con los bucles los pilares de la programación estructurada, y su uso es una evolución de una sentencia de lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de una condición.

 

El bucle PARA se ha convertido en el bucle más ampliamente utilizado en la programación, ya que con la evolución de los lenguajes la mayoría de las condiciones de fin

MIENTRAS NoFinDeTabla(tabla) HACER

 PróximoRegistro(tabla)

 HacerAlgo(ElementoActual(tabl

FIN MIENTRAS

 

Es lo mismo decir:

PARA i := 0 a CantidadRegistros(tabla) – 1, PASO = 1

 PróximoRegistro(tabla)

 HacerAlgo(ElementoActual(tabla))

FIN PARA

 

Otro uso común es utilizar los bucles PARA para recorrer vectores de dos o más dimensiones, en cuyo caso se anidan estas iteraciones.

 

PSEUDOLENGUAJE

Vector a[3][4][2]. // Estamos indicando un vector de 3 dimensiones y 24 elementos en total.

PARA i:= 0 A 2 HACER

  PARA j:= 0 A 3 HACER

    PARA k:= 0 A 1 HACER

      HacerAlgo(a[i][j][k])

    FIN PARA

  FIN PARA

FIN PARA

 

Ejemplo de PARA en pseudocódigo

PARA VariableControl := ValorInicial A ValorFinal, PASO = Incremento

  Cuerpo

 FIN PARA

donde VariableControl, ValorInicial, ValorFinal y Paso son enteros. La(s) instrucción(es) del cuerpo se ejecutará(n) (ValorFinal – ValorInicial + 1) veces, o sea que va desde ValorInicial a ValorFinal inclusive.

 

Ejemplo en C++

int main()

{

  int vector[10], i;

  for(i = 0; i < 10; i++)

  {

   vector[i] = i;

  }

}

 

En la definición del for, tenemos que la variable de control i se inicializa en un valor 0, luego se entrega la condición de control que debe ser falsa durante su ejecución, para completar el ciclo; y por último, tenemos el incrementador en una unidad.

 

Si por ejemplo en la condición colocamos i < 11, entonces el ciclo for se ejecutará desde [0…10], lo cual, al intentar acceder al elemento vector[10], esto generará error, ya que el vector (por definición) va desde [0..(n-1)].

 

Ejemplo anterior escrito en Léxico

tarea

{

los objetos vector[10], i son cantidades

variando i desde 0 hasta 9 haga

         copie i en vector[i]

}

 

 

Bucle Por Cada (For Each)

 

Este bucle es una evolución del concepto del bucle Para en algunos lenguajes. Se utiliza para recorrer estructuras repetitivas de datos de forma más simple y ágil. El bucle For Each puede describirse genéricamente (en pseudolenguaje) de la siguiente manera:

 

Por cada elemento de tipo en conjunto hacer

  Cuerpo

FIN FOR EACH

 

·         Elemento: es el nombre de la variable u objeto que toma el elemento iterado en el cuerpo del bucle.

·         Tipo de Dato: es el tipo de variable o la clase a la que pertenece el objeto que se quiere iterar.

·         Conjunto: es la estructura de datos que se quiere iterar. El uso más típico es con vectores o -en programación orientada a objetos- clases del tipo Colección.

·         Cuerpo: es lo que se hará en cada iteración, pueden ser una o más instrucciones. Si bien no se impone una obligación al respecto, lo más común es que en este Cuerpo exista alguna operación sobre el elemento iterado.

 

Necesidad de una nueva estructura de control

Esta estructura surge como una innovación en los lenguajes para permitir un código más ágil y legible en una situación que es una de las principales causas del uso del bucle PARA: aplicar la misma operación sobre todos los elementos de un vector, y no necesitar conocer la posición del elemento en el vector. Esta estructura con el bucle PARA se resuelve de la siguiente manera:

 

Con el bucle POR CADA esto se reduce a:

 

POR CADA x DE tipo EN Vector HACER

 x = AlgunaOperación(x)

FIN PARA

 

 

 

 

Las ventajas de utilizar la estructura POR CADA son las siguientes:

 

   1. No es necesario llamar a una función que obtenga el tamaño del vector

   2. No es necesario utilizar la incómoda notación de subíndices para referirnos al valor en cuestión, sobre todo teniendo en cuenta que si utilizamos esta estructura es porque no necesitamos el valor del índice.

   3. Nos permite hacer un chequeo en tiempo de compilación sobre el tipo de dato que representa el elemento.

 

El bucle POR CADAo no es un sustituto del PARA, es una mejora para el muy frecuente caso anteriormente mencionado. La diferencia esencial entre el bucle PARA y el POR CADA es que en el primero guía su iteración por una variable que se incrementa hasta cierto punto de corte; en cambio en el segundo lo que guía la iteración es el recorrido de todos los elementos de un vector. Ciertamente podemos transformar cualquier POR CADA en un PARA, pero transformar un bucle PARA en un bucle POR CADA requeriría inicializar y controlar manualmente las variables de control, con lo cual se perdería nuevamente legibilidad en el código. Por tanto, cuando en un lenguaje se nos da la posibilidad de utilizar ambas estructuras, la elección del POR CADA debe hacerse en aquellos casos para los que fue pensado: aplicar la misma operación a todos los elementos de un vector sin importar el orden en que se hagan; si bien no es necesario que la variable elemento sea utilizada en el cuerpo del bucle, su ausencia denota con seguridad una mala elección de estructura de control.

 

 

 

 

 

 

 

 

Función de un IF

En programación, una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no en función del valor de una condición.

 

Los tipos más conocidos de sentencias condicionales son el SI..ENTONCES (if..then), el SI..ENTONCES..SI NO (if..then..elsA) y el SEGÚN (case o switch), aunque también podríamos mencionar al lanzamiento de errores como una alternativa más moderna para evitar el “anidamiento” de sentencias condicionales.

 

Las sentencias condicionales constituyen, junto con los bucles, los pilares de la programación estructurada, y su uso es una evolución de una sentencia en lenguaje ensamblador que ejecutaba la siguiente línea o no en función del valor de una condición.

 

Lanzamiento de errores

En el caso de algoritmos donde se ejecutan muchas instrucciones que pueden devolver errores se vuelve a tener el caso de condicionales anidados que dificultan la lectura. Por ejemplo:

 

SI (LeerArchivo(f)) ENTONCES

   SI (AvanzarArchivo(f)) ENTONCES

       SI (ObtenerEntero(Leer(f)) ENTONCES

          Cuerpo

       SINO

          Imprimir “El valor no es entero”

       FIN SI

   SINO

       Imprimir “Se llegó al fin del archivo”

   FIN SI

SINO

   Imprimir “No se pudo abrir el archivo”

FIN SI

 

Si bien es un problema que este anidamiento puede llegar a ser muy grande, la principal razón para utilizar el lanzamiento de errores es que con el tipo de estructura anterior se pierde la noción del camino principal, y cuesta mucho más encontrar las sentencias de ejecución normal, (en este caso Cuerpo), por la presencia de las condiciones de error que entorpecen la legibilidad.

 

Algunos lenguajes como Java han tenido esto en cuenta y desarrollaron el lanzamiento de errores, que consiste en separar el tratamiento de errores al final de la instrucción, para no perder de vista el hilo de continuidad. Para esto, los métodos en lugar de devolver un valor lógico (verdadero o falso) para determinar si la operación se efectuó correctamente, deben “lanzar” excepciones.

 

El código es ejecutado normalmente hasta que ocurre una excepción, en este caso “salta” al manejo de errores adecuado; es decir las sentencias pueden o no ejecutarse, en función de si previamente se haya lanzado un error o no. En algunos casos puede darse que exista código que debe ejecutarse al final, independientemente de si se haya lanzado o no un error (en nuestro caso podría ser la operación de cerrar el archivo para que otros puedan acceder a él), para lo cual también hay sentencias especiales.

 

INTENTAR

       LeerArchivo(f)

       AvanzarArchivo(f)

       ObtenerEntero(Leer(f))

       Cuerpo

CAPTURAR Error1(ExcepciónDeAperturaDeArchivo)

       Imprimir “No se pudo abrir el archivo”

CAPTURAR Error2(ExcepciónDeLecturaDeArchivo)

       Imprimir “Se llegó al final del archivo”

CAPTURAR Error3(ExcepciónDeConversiónDeDatos)

       Imprimir “El valor no es entero)

FINALMENTE

       CuCerrarArchivo(f)

 

A su vez los procedimientos que lanzan excepciones deben contener alguna línea con el siguiente código:

 

LANZAR TipoExcepción

El código que llama a una subrutina que puede lanzar un error, tiene dos alternativas: o la trata él mismo (con la estructura anterior) o la “LANZA” a la subrutina superior que la invocó. Algunas veces no es obligatorio tratar estos errores.

 

En Java la estructura es la siguiente:

try {

       instrucciones

    }

catch (ClaseDeLaExcepción1 objetoExcepción1)

    {

       instruccionesPorError1

    }

catch (ClaseDeExcepción2 ojbetoExcepción2)

    {

       instruccionesPorError2

    }

finally {

       instruccionesFinales

    }

 

 

 

Diagrama de flujo

El diagrama de flujo o diagrama de actividades es la representación gráfica del algoritmo o proceso. Se utiliza en disciplinas como programación, economía, procesos industriales y psicología cognitiva.

 

En Lenguaje Unificado de Modelado (UML), un diagrama de actividades representa los flujos de trabajo paso a paso de negocio y operacionales de los componentes en un sistema. Un diagrama de actividades muestra el flujo de control general.

 

En SysML el diagrama de actividades ha sido extendido para indicar flujos entre pasos que mueven elementos físicos (e.g., gasolina) o energía (e.g., presión). Los cambios adicionales permiten al diagrama soportar mejor flujos de comportamiento y datos continuos.

 

Estos diagramas utilizan símbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin de proceso.

 

Características

Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término.

 

Las siguientes son acciones previas a la realización del diagrama de flujo:

·         Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el autor o responsable del proceso, los autores o responsables del proceso anterior y posterior y de otros procesos interrelacionados, así como las terceras partes interesadas.

·         Definir qué se espera obtener del diagrama de flujo.

·         Identificar quién lo empleará y cómo.

·         Establecer el nivel de detalle requerido.

·         Determinar los límites del proceso a describir.

 

Los pasos a seguir para construir el diagrama de flujo son:

·         Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.

·         Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.

·         Si el nivel de detalle definido incluye actividades menores, listarlas también.

·         Identificar y listar los puntos de decisión.

·         Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.

·         Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.

 

Descripción

 

En UML 1.x, un diagrama de actividades es una variación del diagrama de estado UML donde los “estados” representan operaciones, y las transiciones representan las actividades que ocurren cuando la operación es completa.

 

El diagrama de actividades UML 2.0, mientras que es similar en aspecto al diagrama de actividades UML 1.x, ahora tiene semánticas basadas en redes de Petri. En UML 2.0, el diagrama general de interacción está basado en el diagrama de actividades. El diagrama de actividad es una forma especial de diagrama de estado usado para modelar una secuencia de acciones y condiciones tomadas dentro de un proceso.

 

La especificación del Lenguaje de Modelado Unificado (UML) define un diagrama de actividad como:

 

“… una variación de una máquina estados, lo cual los estados representan el rendimiento de las acciones o subactividades y las transiciones se provocan por la realización de las acciones o subactividades.”[1]

 

El propósito del diagrama de actividad es modelar un proceso de flujo de trabajo (workflow) y/o modelar operaciones.

 

Una Operación es un servicio proporcionado por un objeto, que está disponible a través de una interfaz.

 

Una Interfaz es un grupo de operaciones relacionadas con la semántica.

 

Tipos de diagramas de flujo

·         Formato vertical: En él, el flujo y la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.

·         Formato horizontal: En él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.

·         Formato panorámico: El proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aún para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.

·         Formato Arquitectónico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectónico del área de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

 

 

Simbología y significado

·         Óvalo o Elipse: Inicio y término (Abre y/o cierra el diagrama).

·         Rectángulo: Actividad (Representa la ejecución de una o más actividades o procedimientos).

·         Rombo: Decisión (Fórmula una pregunta o cuestión).

·         Círculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).

·         Triángulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).

·         Triángulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).

 

Cursograma

Se trata de la más común y práctica entre todas las clases de flujogramas. Describe el flujo de información en un ente u organización, sus procesos, sistemas administrativos y de control. Permite la impresión visual de los procedimientos y una clara y lógica interpretación.

 

Simbología y normas del cursograma

·         Círculo: Procedimiento estandarizado.

·         Cuadrado: Proceso de control.

·         Línea ininterrumpida: Flujo de información vía formulario o documentación en soporte de papel escrito.

·         Línea interrumpida: Flujo de información vía formulario digital.

·         Rectángulo: Formulario o documentación. Se grafica con un doble de ancho que su altura.

·         Rectángulo Pequeño: Valor o medio de pago (cheque, pagaré, etcétera). Se grafica con un cuádruple de ancho que su altura, siendo su ancho igual al de los formularios.

·         Triángulo (base inferior): Archivo definitivo.

·         Triángulo Invertido (base superior): Archivo Transitorio.

·         Semi-óvalo: Demora.

·         Rombo: División entre opciones.

·         Trapezoide: Carga de datos al sistema.

·         Elipsoide: Acceso por pantalla.

·         Hexágono: Proceso no representado.

·         Pentágono: Conector.

·         Cruz de Diagonales: Destrucción de Formularios.

 

 

 

 

 

 

 

 

Según la normativa, el flujo presupuesto es de izquierda a derecha y de arriba hacia abajo, siendo optativo el uso de flechas. Cuando el sentido es invertido (de derecha a izquierda o de abajo hacia arriba), es obligatorio el uso de la flecha.

 

 

 

Historia

 

La paternidad del diagrama de flujo es en principio algo difusa. El método estructurado para documentar gráficamente un proceso como un flujo de pasos sucesivo y alternativos, el “proceso de diagrama de flujo”, fue expuesto por Frank Gilbreth, en la Sociedad Americana de Ingenieros Mecánicos (ASME), en 1921, bajo el enunciado de “Proceso de Gráficas-Primeros pasos para encontrar el mejor modo”. Estas herramientas de Gilbreth rápidamente encontraron sitio en los programas de ingeniería industrial.

 

Al principio de los 30, un ingeniero industrial, Allan H. Mogensen comenzó la formación de personas de negocios en Lake Placid, Nueva York, incluyendo el uso del diagrama de flujo. Art Spinanger, asistente a las clases de Mogesen, utilizó las herramientas en su trabajo en Procter & Gamble, donde desarrolló su “Programa Metódico de Cambios por Etapas”. Otro asistente al grupo de graduados en 1944, Ben S. Graham, Director de Ingeniería de Formcraft Standard Register Corporation, adaptó la Gráfica de flujo de procesos al tratamiento de la información en su empresa. Y desarrolló la Gráfica del proceso de múltiples flujos en múltiples pantallas, documentos, y sus relaciones. En 1947, ASME adoptó un conjunto de símbolos derivados de la obra original de Gilbreth como Norma ASME para los gráficos de procesos (preparada Mishad, Ramsan y Raiaan).

 

Sin embargo, según explica Douglas Hartree fueron originalmente Herman Goldstine y John von Neumann quienes desarrollaron el diagrama de flujo (inicialmente llamado “diagrama”) para planificar los programas de ordenador. Las tablas de programación original de flujo de Goldstine y von Neumann, aparecen en un informe no publicado, “Planificación y codificación de los problemas de un instrumento de computación electrónica, la Parte II, Volumen 1 “(1947), reproducido en las obras completas de von Neumann.

 

Inicialmente los diagramas de flujo resultaron un medio popular para describir algoritmos de computadora, y aún se utilizan con este fin. Herramientas como los diagramas de actividad UML, pueden ser considerados como evoluciones del diagrama de flujo.

 

En la década de 1970 la popularidad de los diagramas de flujo como método propio de la informática disminuyó, con el nuevo hardware y los nuevos lenguajes de programación de tercera generación. Y por otra parte se convirtieron en instrumentos comunes en el mundo empresarial. Son una expresión concisa, legible y práctica de algoritmos. Actualmente se aplican en muchos campos del conocimiento, especialmente como simplificación y expresión lógica de procesos, etc.

 

 

 

 

 

Ventajas de los diagramas de flujo

·         Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.

·         Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos, los flujos de los re-procesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.

·         Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el análisis de las mismas.

·         Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.

·         Al igual que el pseudocódigo, el diagrama de flujo con fines de análisis de algoritmos de programación puede ser ejecutado en un ordenador, con un IDE como Free DFD.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

¿Qué es un Algoritmo?

 

Los diagramas de flujo sirven para representar algoritmos de manera gráfica.

En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus y este a su vez del matemático persa Al-Juarismi) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Los algoritmos son el objeto de estudio de la algoritmia.

 

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrón. Algunos ejemplos en matemática son el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema lineal de ecuaciones.

 

Definición formal

 

En general, no existe ningún consenso definitivo en cuanto a la definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten los datos de un problema (entrada) en una solución (salida). Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versión modificada de la criba de Eratóstenes que nunca termine de calcular números primos no deja de ser un algoritmo.

 

A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemáticos como máquinas de Turing entre otros.[8] [9] Sin embargo, estos modelos están sujetos a un tipo particular de datos como son números, símbolos o gráficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos. En general, la parte común en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:

 

    Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados “computacionales” por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar).

 

    Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.

    Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.

 

En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definición abarca tanto a algoritmos prácticos como aquellos que solo funcionan en teoría, por ejemplo el método de Newton y la eliminación de Gauss-Jordan funcionan, al menos en principio, con números de precisión infinita; sin embargo no es posible programar la precisión infinita en una computadora, y no por ello dejan de ser algoritmos. En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda función calculable se puede programar en una máquina de Turing (o equivalentemente, en un lenguaje de programación suficientemente general):

 

    Aritmetizabilidad. Solamente operaciones innegablemente calculables están disponibles en el paso inicial.

 

Medios de expresión de un algoritmo

 

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

 

La descripción de un algoritmo usualmente se hace en tres niveles:

 

   1. Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.

   2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.

   3. Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.

 

También es posible incluir un teorema que demuestre que el algoritmo es correcto, un análisis de complejidad o ambos.

Diagrama de flujo

Diagrama de flujo que expresa un algoritmo para calcular la raíz cuadrada de un número x

Artículo principal: Diagrama de flujo.

Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

 

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.

 

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades del lenguaje natural. Dichas expresiones son formas más estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programación específico.

 

Pseudocódigo

Artículo principal: Pseudocódigo.

El pseudocódigo (falso lenguaje, el prefijo pseudo significa falso) es una descripción de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintácticas propias de lenguajes de programación, como asignaciones, ciclos y condicionales, aunque no está regido por ningún estándar. Es utilizado para describir algoritmos en libros y publicaciones científicas, y como producto intermedio durante el desarrollo de un algoritmo, como los diagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocódigo requieren menos espacio para representar instrucciones complejas.

 

El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementación. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente estructurado para que su implementación se pueda hacer directamente a partir de él.

 

Así el pseudodocódigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programación. Busque fuentes más precisas para tener mayor comprensión del tema.

Sistemas formales

 

La teoría de autómatas y la teoría de funciones recursivas proveen modelos matemáticos que formalizan el concepto de algoritmo. Los modelos más comunes son la máquina de Turing, máquina de registro y funciones µ-recursivas. Estos modelos son tan precisos como un lenguaje máquina, careciendo de expresiones coloquiales o ambigüedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementación.

Implementación

 

Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser implementados en otros medios, como una red neuronal, un circuito eléctrico o un aparato mecánico y eléctrico. Algunos algoritmos inclusive se diseñan especialmente para implementarse usando lápiz y papel. El algoritmo de multiplicación tradicional, el algoritmo de Euclides, la criba de Eratóstenes y muchas formas de resolver la raíz cuadrada son sólo algunos ejemplos.

Variables

 

Son elementos que toman valores específicos de un tipo de datos concreto. La declaración de una variable puede realizarse comenzando con var. Principalmente, existen dos maneras de otorgar valores iniciales a variables:

 

   1. Mediante una sentencia de asignación.

   2. Mediante un procedimiento de entrada de datos (por ejemplo: ‘read’).

 

 

Ejemplo:

    …

    i:=1;

    read(n);

    while i < n do begin

       (* cuerpo del bucle *)

       i := i + 1

    end;

     …

 

Estructuras secuenciales

 

La estructura secuencial es aquella en la que una acción sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. La asignación de esto consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:

 

   1. Simples: Consiste en pasar un valor constante a una variable (a ? 15)

   2. Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso (a ? a + 1)

   3. Acumulador: Consiste en usarla como un sumador en un proceso (a ? a + b)

   4. De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a ? c + b*2/4).

 

Un ejemplo de estructura secuencial, como obtener la área de un triángulo:

 

Inicio

    float b, h, a;

    printf(“Diga la base”);

    scanf(“%f”, &b);

    printf(“Diga la altura”);

    scanf(“%f”, &h);

    a = (b*h)/2;

    printf(“El área del triángulo es %f”, a)

Fin

 

Algoritmos como funciones

 

Artículo principal: Teoría de la computabilidad.

Esquemática de un algoritmo solucionando un problema de ciclo hamiltoniano.

 

Un algoritmo se puede concebir como una función que transforma los datos de un problema (entrada) en los datos de una solución (salida). Más aun, los datos se pueden representar a su vez como secuencias de bits, y en general, de símbolos cualesquiera. Como cada secuencia de bits representa a un número natural (véase Sistema binario), entonces los algoritmos son en esencia funciones de los números naturales en los números naturales que sí se pueden calcular. Es decir que todo algoritmo calcula una función f:\mathbf N\to \mathbf N donde cada número natural es la codificación de un problema o de una solución.

 

En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando entran a un bucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningún valor de salida, y podemos decir que la función queda indefinida para ese valor de entrada. Por esta razón se considera que los algoritmos son funciones parciales, es decir, no necesariamente definidas en todo su dominio de definición.

 

Cuando una función puede ser calculada por medios algorítmicos, sin importar la cantidad de memoria que ocupe o el tiempo que se tarde, se dice que dicha función es computable. No todas las funciones entre secuencias datos son computables. El problema de la parada es un ejemplo.

 

Análisis de algoritmos

Artículo principal: Análisis de algoritmos.

 

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El análisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada.

 

El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y, en la mayoría de los casos, su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas. Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces “codificar”) un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Lexico, cuyos códigos pueden estar en el idioma del programador.

 

Algunos escritores restringen la definición de algoritmo a procedimientos que deben acabar en algún momento, mientras que otros consideran procedimientos que podrían ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algún dispositivo físico que fuera capaz de funcionar eternamente. En este último caso, la finalización con éxito del algoritmo no se podría definir como la terminación de este con una salida satisfactoria, sino que el éxito estaría definido en función de las secuencias de salidas dadas durante un periodo de vida de la ejecución del algoritmo. Por ejemplo, un algoritmo que verifica que hay más ceros que unos en una secuencia binaria infinita debe ejecutarse siempre para que pueda devolver un valor útil. Si se implementa correctamente, el valor devuelto por el algoritmo será válido, hasta que evalúe el siguiente dígito binario. De esta forma, mientras evalúa la siguiente secuencia podrán leerse dos tipos de señales: una señal positiva (en el caso de que el número de ceros sea mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la devolución de valores exclusivamente positivos si hay más ceros que unos en la secuencia y, en cualquier otro caso, devolverá una mezcla de señales positivas y negativas.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Funciones y palabras reservadas.

Visual Basic tiene un conjunto de funciones que podremos usar. A continuación veremos las más representativas, si bien hay muchas más. Se aconseja ir a la ayuda para ampliar o profundizar sobre la cuestión

Palabras reservadas.

Rem: Nos permite incluir comentarios sobre el programa en  medio del código, la sintaxis es:

    Rem Comentario

Además, se puede conseguir lo mismo sin necesidad de escribir Rem, utilizando la comilla simple, es decir, la anterior orden es equivalente a:

    ‘Comentario

Observaremos como el editor de código reconoce los comentarios ya que les aplica como color del texto el verde.

Exit Sub: Nos permite acabar la ejecución del procedimiento en el que lo pongamos, y en punto del mismo donde se halle situado.

End: Nos permite acabar la ejecución del programa en el punto del mismo donde se halle situado.

Funciones.

MsgBox: Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve un tipo Integer correspondiente al botón elegido por el usuario.

Sintaxis

MsgBox(prompt[, buttons][, title][, helpfile, context])

La sintaxis de la función MsgBox consta de estos argumentos:

Parte

Descripción

prompt

Requerido. Cadena que representa el prompt en el cuadro de diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los caracteres utilizados. 

buttons

Opcional. Expresión numérica que corresponde a la suma de los valores que especifican el número y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botón predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0.

title

Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si se omite title, en la barra de título se coloca el nombre de la aplicación.

helpfile

Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de diálogo. Si se especifica helpfile, también se debe especificar context.

context

Opcional. Expresión numérica que es igual al número de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, también se debe especificar helpfile.


Valores

El argumento buttons tiene estos valores:

Constante

Valor

Descripción

VbOKOnly

0

Muestra solamente el botón Aceptar.

VbOKCancel

1

Muestra los botones Aceptar y Cancelar.

VbAbortRetryIgnore

2

Muestra los botones Anular, Reintentar e Ignorar.

VbYesNoCancel

3

Muestra los botones , No y Cancelar.

VbYesNo

4

Muestra los botones y No.

VbRetryCancel

5

Muestra los botones Reintentar y Cancelar.

VbCritical

16

Muestra el icono de mensaje crítico.

VbQuestion

32

Muestra el icono de pregunta de advertencia.

VbExclamation

48

Muestra el icono de mensaje de advertencia.

VbInformation

64

Muestra el icono de mensaje de información.

VbDefaultButton1

0

El primer botón es el predeterminado.

VbDefaultButton2

256

El segundo botón es el predeterminado.

VbDefaultButton3

512

El tercer botón es el predeterminado.

VbDefaultButton4

768

El cuarto botón es el predeterminado.

VbApplicationModal

0

Aplicación modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicación actual.

VbSystemModal

4096

Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes.

VbMsgBoxHelpButton

16384

Agrega el botón Ayuda al cuadro de mensaje.

VbMsgBoxSetForeground

65536

Especifica la ventana del cuadro de mensaje como la ventana de primer plano.

VbMsgBoxRight

524288

El texto se alinea a la derecha.

VbMsgBoxRtlReading

1048576

Especifica que el texto debe aparecer para ser leído de derecha a izquierda en sistemas hebreo y árabe.


El primer grupo de valores (0 a 5) describe el número y el tipo de los botones mostrados en el cuadro de diálogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botón predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman números para obtener el valor final del argumento buttons, se utiliza solamente un número de cada grupo.

Nota:  Estas constantes las especifica Visual Basic para Aplicaciones. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del código en vez de sus valores reales.

Valores devueltos

Constante

Valor

Descripción

vbOK

1

Aceptar

vbCancel

2

Cancelar

vbAbort

3

Anular

vbRetry

4

Reintentar

vbIgnore

5

Ignorar

vbYes

6

vbNo

7

No


Comentarios

Cuando se proporcionan tanto helpfile como context, el usuario puede presionar F1 para ver el tema de Ayuda correspondiente al context. Algunas aplicaciones como por ejemplo Microsoft Excel, también agregan automáticamente un botón Ayuda al cuadro de diálogo.

Si el cuadro de diálogo cuenta con un botón Cancelar, presionar la tecla ESC tendrá el mismo efecto que hacer clic en este botón. Si el cuadro de diálogo contiene un botón Ayuda, se suministra ayuda interactiva para ese cuadro de diálogo. Sin embargo, no se devuelve valor alguno hasta que se hace clic en uno de estos botones.

Nota: Si se desea especificar más que el primer argumento con nombre, se debe utilizar MsgBox en una expresión. Si deseamos omitir algún argumento de posición, debemos incluir el delimitador de coma correspondiente.

Ejemplo.

La siguiente orden genera un cuadro al cual le indicamos título, texto, le ponemos tres botones: Sí, No y Cancelar. Además le incluimos el icono de pregunta:

MsgBox “¿Esta seguro de que quiere continuar?”, vbYesNoCancel + vbQuestion, “Confirmación”

InputBox: Muestra un mensaje en un cuadro de diálogo, espera que el usuario escriba un texto o haga clic en un botón y devuelve un tipo String con el contenido del cuadro de texto.

Sintaxis

InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])

La sintaxis de la función InputBox consta de estos argumentos:

Parte

Descripción

prompt

Requerido. Cadena que se muestra como mensaje en el cuadro de diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los caracteres utilizados.

title

Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si omite title, en la barra de título se coloca el nombre de la aplicación.

default

Opcional. Expresión de cadena que se muestra en el cuadro de texto como respuesta predeterminada cuando no se suministra una cadena. Si omite default, se muestra el cuadro de texto vacío.

xpos

Opcional. Expresión numérica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo del cuadro de diálogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de diálogo se centra horizontalmente.

ypos

Opcional. Expresión numérica que especifica, en twips, la distancia en sentido vertical entre el borde superior del cuadro de diálogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de diálogo se coloca a aproximadamente un tercio de la altura de la pantalla, desde el borde superior de la misma.

helpfile

Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utilizará para proporcionar ayuda interactiva para el cuadro de diálogo. Si se especifica helpfile, también deberá especificarse context.

context

Opcional. Expresión numérica que es el número de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, también deberá especificarse helpfile.


Comentarios

Cuando se especifica tanto helpfile como context, el usuario puede presionar F1 para ver el tema de Ayuda correspondiente a context. Algunas aplicaciones como por ejemplo, Microsoft Excel, también agregan automáticamente un botón Ayuda al cuadro de diálogo. Si el usuario hace clic en Aceptar o presiona Entrar , la función InputBox devuelve lo que haya en el cuadro de texto. Si el usuario hace clic en Cancelar, la función devuelve una cadena de caracteres de longitud cero (“”).

Nota: Si deseamos especificar más que el primer argumento con nombre, debemos utilizar InputBox en una expresión. Si deseamos omitir algunos argumentos de posición, debemos incluir el delimitador de coma correspondiente.

Ejemplo.

La siguiente orden genera un cuadro al cual le indicamos texto, título y asignamos el texto que escriba el usuario a la variable cadena:

Dim cadena As String
cadena = InputBox(“Introduzca el nombre del usuario”, “Identificación”)

Observar que como asignamos el resultado de la función InputBox a una variable, debemos encerrar los argumentos entre paréntesis.

 

Format: Visual Basic proporciona una gran flexibilidad a la hora de presentar formatos de números, así como de fechas y horas. Puede presentar con facilidad formatos internacionales de números, fechas y horas.

La función Format convierte un valor numérico en una cadena de texto y le proporciona control sobre la apariencia de la cadena. Por ejemplo, podemos especificar el número de decimales, los ceros a la izquierda o a la derecha y los formatos de moneda. La sintaxis es:

Format(expresión[, patrón o máscara])

El argumento expresión especifica el número que se va a convertir y el argumento patrón o máscara es una cadena compuesta por símbolos que determinan el formato del número. En la tabla siguiente se enumeran los símbolos más comúnmente utilizados.

Símbolo

Descripción

0

Marcador de posición de dígito; imprime un cero a la izquierda o a la derecha en esa posición, si corresponde.

#

Marcador de posición de dígito; nunca imprime ceros a la izquierda ni a la derecha.

.

Marcador de posición decimal.

,

Separador de millares.

– + $ ( ) espacio

Carácter literal; los caracteres se presentan exactamente como están escritos en la cadena de formato.

Ejemplo: Format(32675,”##,##0.00″) mostraría en pantalla: 32.675,00

Formatos con nombre

Visual Basic proporciona varios formatos estándar para su uso con la función Format. En lugar de especificar símbolos en el argumento formato, puede especificar dichos formatos mediante un nombre en el argumento formato de la función Format. El nombre del formato tiene que ir siempre entre comillas dobles (“”).

En la tabla siguiente se enumeran los nombres de formato que puede usar.

Nombre de formato

Descripción

General Number

Muestra los números sin separador de millares.

Currency

Muestra los números con separador de millares, si procede; muestra dos dígitos a la derecha del separador decimal. El resultado se basa en los valores del sistema del usuario.

Fixed

Muestra al menos un dígito a la izquierda y dos dígitos a la derecha del separador decimal.

Standard

Muestra los números con separador de millares, al menos un dígito a la izquierda y dos dígitos a la derecha.

Percent

Multiplica el valor por 100 con un signo de porcentaje al final.

Scientific

Utiliza la notación científica estándar.

General Date

Muestra la fecha y la hora si expresión contiene ambas. Si expresión sólo es una fecha o una hora, no presenta la información que falta. La presentación de la fecha está determinada por los valores del sistema del usuario.

Long Date

Utiliza el formato Fecha larga especificado por los valores del sistema del usuario.

Medium Date

Utiliza el formato dd-mmm-aa (por ejemplo, 03-Abr-93). La presentación de la fecha está determinada por los valores del sistema del usuario.

Short Date

Utiliza el formato Fecha corta especificado por los valores del sistema del usuario.

Long Time

Muestra la hora según el formato de hora larga del sistema del usuario; incluye horas, minutos y segundos.

Medium Time

Muestra la hora, los minutos y “AM” o “PM” con el formato “hh:mm AM/PM”.

Short Time

Muestra la hora y los minutos con el formato hh:mm.

Yes/No

Cualquier valor numérico distinto de cero (normalmente -1) es Yes. Cero es No.

True/False

Cualquier valor numérico distinto de cero (normalmente -1) es True. Cero es False.

On/Off

Cualquier valor numérico distinto de cero (normalmente -1) es On. Cero es Off.

Imprimir fechas y horas con formato

Para imprimir fechas y horas con formato, utilizaremos la función Format con símbolos que representen fechas y horas. En los ejemplos siguientes se utilizan las funciones Now y Format para identificar y dar formato a la fecha y hora actuales. 

Sintaxis de Format

Resultado

Format(Now, “d/m/aa“)

1/12/01

Format(Now, “dddd, dd mmmm, aaaa“)

sábado, 01 diciembre, 2001

Format(Now, “d-mmm“)

1-dic

Format(Now, “mmmm-aa“)

diciembre-01

Format(Now, “hh:mm AM/PM”)

07:18 AM

Format(Now, “h:mm:ss a/p”)

7:18:00 a

Format(Now, “d-mmmm h:mm“)

1-diciembre 7:18


Int: Devuelve la parte entera de un número: Int(Número).

Len: Devuelve la longitud de una cadena: Len(Cadena).

Rnd: Devuelve un número aleatorio entre 0 y 1.

Val: Devuelve el valor numérico de una cadena alfanumérica, solo convierte hasta que encuentra el primer carácter que no es un número: Val(Cadena).

Aún hay muchas más funciones, cuando las necesitemos, ya las estudiaremos.

Propiedades comunes.

A continuación veremos algunas propiedades comunes a la mayoría de los controles, estas se podrán modificar desde la vista formulario, con el control activado y en la ventana de propiedades:

Nombre: Nombre que deseemos asignar al objeto, es un identificador interno para el código.

Caption: Habitualmente igual que el nombre del objeto, pero es la forma de identificar el objeto de cara al usuario, por ejemplo, si tenemos un botón en nuestro formulario que al pulsarlo nos acabe la ejecución, internamente le llamaremos BotonSalir, pero basta con que le pongamos como Caption Salir, que es lo que verá el usuario.

Enabled: Sólo admite dos valores: True o False, e indica si el control está o no activado.

Visible: Sólo admite dos valores: True o False, e indica si el control está o no visible.

Crear un EXE estandar, llamar Ejemplo2 al formulario, al cual le insertaremos un botón en la parte inferior derecha, ponerle como nombre  BotonSalir y como Caption Salir ( si queremos que el usuario pueda activar el botón con la combinación de teclas ALT + S, deberemos anteponer a la letra S del caption el símbolo &).

A este botón le insertaremos código de forma que cuando el usuario pulse, salga un cuadro por pantalla pidiendo confirmación para salir del programa, si el usuario pulsa Sí, debe acabar la ejecución y si pulsa No, no debe hacer nada.

Insertar otro botón en la parte inferior izquierda, ponerle como nombre  BotonFecha y como Caption Fecha y hora del sistema ( si queremos que el usuario pueda activar el botón con la combinación de teclas ALT + F, deberemos anteponer a la letra F del caption el símbolo &).

Referencia:

http://www.adrformacion.com/curso/visualbasic/leccion3/funciones_palabras_reservadas.htm

Manuales:

Libro1_Cap1

Libro1_Cap2

Libro1_Cap3

2 respuestas a Visual Basic

  1. Rubens dijo:

    k onda profe espero nos de clases nuevament,,,
    cuidec.
    sta bueno tod esto de visual basic

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s