Parte 3: Terminologia y procesos de desarrollo de algoritmos

Parte 3:

 3.1. Terminología y procesos de desarrollo de algoritmos.

·         Estructura de los algoritmos:

       Al escribir un algoritmo,  se efectúan  descripciones  en lenguaje natural de los pasos  que definen  las propiedades de coherencia a medida de que se obtenga consecuentemente  operaciones ejecutables para tener los resultados requeridos.   Un algoritmo es un método  para resolver  un problema en donde exige el diseño , es un fórmula  cuyo término  de origen se le debe  al Padre de la Algoritmia  Mohamme  Alko  Wẫzrizmi  que fue un emblemático matemático   para el siglo IX  y la traducción de su apellido al latín  significa algorismus.

·          Representación gráfica de los algoritmos:

       El lenguaje de especificación de los algoritmos. Los pseudocódigos  hace la traducción  del lenguaje natural a un lenguaje de programación por que los pseudocódigos  se originan  como un lenguaje  homónimos del inglés; es por elo  que cuando se presentan estructuras  de control de programación  estructurada  como especie de un borrador  que es donde se planifica el programa ( su diseño) el bosquejo  es centrado en la lógica pura y  en las estructura de control.

·         Diagramas:

Los diagramas de Nassi Shneiderman (N/S) o Chapin son similares a los diagramas de flujo, la diferencia es que omiten las flechas  que orientan las líneas de comando e instrucciones por cajas sucesivas o recuadros con caracteres y acciones diferentes.

·          Estructura general de un programa:

       Un programa  es un conjunto de instrucciones  que son generadas para que la máquina  debe producirlos para obtener la resolución del problema.  Se tiene que diseñarse  el  bosquejo del problema “ buscar y evaluar todos los casos para determinar que tipo de programación  se desea efectuar para que sea factible los resultados, tal es el caso de que el programador emplee la programación modular o estructurada”;  después diseña el algoritmo, precisando de tal manera todos los pasos e instrucciones que generen esos datos de salida;   se codifica el programa, es el paso de llevarlo a lenguaje máquina  para depurarlo si se obtienen errores tras la compilación , pues, se verifica en esta fase todo el proceso del programa;  se efectúa el mantenimiento y la documentación de dicho programa finalmente.


·         Partes  de un programa:

Dentro  de las fases del proceso de programación,  están  las especificaciones  que son la entrada, la salida  a través de los algoritmos de solución, éstas son proporcionadas por el programador bajo un proceso consecuente de transformación, de tal manera  las entradas del programa son los datos  y cuya salida son los resultados,  de manera que son reflejados la salida de datos   a través de los dispositivos periféricos de salida: la impresora o la pantalla por ejemplo.

·          Tipos de instrucciones:

Un programa es lineal  si las instrucciones  se ejecutan   de forma secuencial  de esta forma son las acciones como: acción 1, acción 2, acción 3,  acción n. En el caso de un programa no lineal,  la secuencia es interrumpida por la bifurcación como un salto de la acción o de la lía de comando;  omitiendo otros pasos cuando la salida imprimible ( resultados ) de un caso lo requiere hasta llegar al fin del proceso del programa diseñado.   En un lenguaje  de programación, equitativamente es dependiente del lenguaje donde se interacciona con el lenguaje nativo de la máquina. Las instrucciones o acciones básicas  se pueden especificar de la siguiente forma:

ü   Inicio:  es el proceso del proceso que en pseudocódigo en inglés   en begin.

ü  Entrada ( lectura  de datos ingresados):  read / leer . En los elementos básicos de un programa , donde los lenguajes de programación  son combinados con los elementos  de sintaxis  para construir los comandos e instrucciones  de modo que la máquina lo interprete correctamente. De esta forma,  están las palabras reservadas  con inicio, fin, fin si, si entonces,….etc.
ü        En el caso de los identificadores ( nombre de asignación de las variables, funciones del programa) y aquellos caracteres especiales como los signos y apóstrofos, los comandos e instrucciones  que poseen las expresiones  que conforman   a igual que otros elementos  del programa y a partir del diseño del  algoritmo y su codificación;  posee a su vez, de los siguientes elementos: bucles, contadores, interruptores, estructuras ( secuenciales, selectivas repetitivas).

ü  Salida ( escritura ): write / escribir.   En los procesos de salida,  la escritura de los resultados   se escriben en el dispositivo de salida como lo es el teclado y se expresa como escribir; es decir,  se visualizarán  en pantalla  o imprimible  los valores que pueden guardarse en las variables asignadas.

ü   Fin proceso: end  en pseudocódigo. 

ü  Asignaciones: valor que se guarda dentro de una variable.

·         Instrucciones de bifurcación:

Es el punto en el que el programa  se bifurca hacia adelante o hacia atrás,  esto sucede cuando el programador habilita en el desarrollo lineal  de un programa la interrupción  de la ejecución en función de  la evaluación de las condiciones y de los resultados que se expresan.   La bifurcación del condicional depende del cumplimiento  de una determinada  condición , si se cumple, se acciona.


3.2.  Estructuras de datos  y algoritmos:


     El objetivo de todo ordenador es del manejo de la información , es por ello que los datos  son la representación general de  los objetos del computador  de acuerdo a su especificación de valores  y operaciones de dichos datos. Los tipos de datos  son:

·         Básicos o simples: son aquellos datos en donde no se ven reflejadas las estructuras  y de la cual se pueden construir   otros datos a partir del mismo  estableciendo las uniones, enumeraciones, vectores y matrices , cadenas ( arrays) y tablas.

·         Agregados ( estructurados  y compuestos):  un ejemplo de  algunos lenguajes de programación es FORTRAN en donde es admisible datos complejos para el tratado de la información    como los números más complejos  y se encuentran otros lenguajes como Pascal  en donde la definición  y declaración de sus propios datos como enumeraciones y  subrango.

·          Datos numéricos: del tipo entero o real,   pertenecen al conjunto  de los valores numéricos . en los valores enteros ( integer) conforma un subconjunto  finito de números  enteros   y complejos que no posean partes   o componentes fraccionarios  o decimales, puede ser tanto negativo como positivo ; es relevante que los números enteros se pueden representar  en cadena de 8 bits  , 16 o 32 bits  que origina  una escala de números cuyo rango  dependerá de la máquina; es decir,   como enteros ( cortos / largos) modificadores con signo (signe)y sin signo (unsigne) por lo que los números enteros se denominan como números de punto fijo .
      En el caso de ser valores reales,  conformado por subconjuntos de  números reales  que toman  tanto positivos como negativos , y en aplicaciones científicas,  se requiere de una especial  representación de éstos números  y esa es la  notación exponencial  o científica  para manejar cantidades muy grandes o pequeñas, debido a que se descompone en dígitos  de tres grupos   para que sea expresado en potencia  y es así que surge  la representación con coma flotante.


·         Datos lógicos ( booleanos): es el dato que toma valores  de falso y verdadero   en donde representa las alternativas   del (si/no)  a condiciones  en lenguajes de alto nivel como C++ y Java, FORTRAN que soportan el tipo de dato  bool.

·          Datos  carácter y tipo cadena:  el tipo carácter  es un conjunto finito  y ordenado  de caracteres  que el ordenador reconoce; es decir,  un dato  del tipo carácter  posee un solo carácter   ya sea alfabético, numéricos o carácter especiales  que son los signos de puntuación por ejemplo.
Una cadena ( string)  de caracteres sucesivos,  están delimitados por   una comilla  ( apóstrofo)  o doble comilla  según el tipo de lenguaje  de programación , pues , la longitud de la cadena  de caracteres  es el número  entre las comillas  que son los delimitadores o los separadores de cada carácter .

·         Datos locales y datos globales:  en un programa  de alto nivel ( procedimental)  tal es el caso de C, un programa de gran magnitud  se conforma de numerosas funciones  y uno de esos  componentes se encuentran en dos tipos de datos:


ü   Datos locales, son los que se encuentran ocultos  en el inerior  de la función  y son empleados  sólo por la función  que desempeñan, es decir,  estos datos locales  se asocian con las funciones  propias y protegidas  de modificaciones alternas por otras funciones.

ü  Datos globales,  son la que conllevan  una gran conexión a gran escala  entre funciones y datos que dificultan  su comprensión y su lectura, de esta manera  todas lass conexiones múltiples   originaría problemáticas que hacen el difícil  acceso a la conceptualización del programa , provocando de tal manera  una difícil  modificación del programa  porque en cambios de datos  globales puede solicitar la redacción nuevamente de cada una de las funciones  de la cual acceden a los mismo, este es el caso en que suele suceder  que en dichas modificaciones  de los datos globales  no sean lo suficientemente aceptables  por las funciones que intervienen en la fase procedimental del programa,  La ventaja de los datos globales, consiste   en que el punto de acceso es mas factible; es decir, desde cualquier función del programa , en más de ods funciones, inclusive,  se logra acceder a esos mismos datos  siempre y cuando cumpla con la condición de que sean globales.


ü  Modelado del mundo real: se refiere   a la programación estructurada  que mejora la calidad  del mantenimiento  de los programas  en el mundo físico  en donde se tratan los objetos  complejos. El objeto  en los lenguajes  orientados a objetos POO  consiste en  combinar, asociar o tratar unidades o módulos;   así como de datos y de funciones  que operan sobre esos mismos datos en donde las funciones de un objeto  se llaman miembro en  C++  o metódico .   La representación de los objetos  en UML ( Lenguaje Unificado de Modelado)  como los recuadros se presentan lo que se denotan como case , por ejemplo:  (Toyota: carro); (Secretaria: persona).

ü  Datos de un objeto o atributos , llamados también como  variables de instancia, es cuando si se desea leer los datos de un objeto  se le llama a la función de ese objeto; es decir,  al acceder a los datos, se devuelve un valor en consecuencia de esa solicitud  de información.

ü  Atributos  o características de los objetos: los atributos   del mundo real  tienen su equivalente   a los datos de un programa.  El POO  se considera como uno de los  paradigmas de la programación  más empleado en los software  y de la ingeniería , en cuanto se presenten problemas más complejos,  se implementan diseños  de la programación estructurada  a diferencia de la programación  procedimental  que en esta sólo se resalta los algoritmos y que  POO buscar estratégicamente   reajustar el lenguaje  del problema con el objeto  de diseño  de los datos  de acuerdo a las características del problema.


ü  Comportamiento  de los POO: en los objetos  se ejecutan acciones   del mundo real  como respuesta instantánea  a los datos y funciones . Un leguaje orientado a objetos se describe  en los datos  y funciones que se encuentran encapsuladas  en una entidad; es decir, el encapsulamiento de los datos   y la ocultación de éstos   son la clave que permite  protegerlos sin alteraciones, en el caso de que se desea una modificación  de los datos  ya conociendo las funciones  y su interacción  con los miembros del objeto no podrá ninguna otra función alterna  acceder a los datos .

   En C++   está compuesta  de objetos numerados  que se comunican  entre si  mediante otras funciones  miembro  en donde envía un mensaje a otro  , es por ello que el paradigma  de POO  es la organización  de los objetos  que poseen datos y operaciones .

·         Propiedades de POO

ü  Abstracción (TAD): Los Tipos abstractos de datos y clases son la propiedad fundamental de los POO  que consiste   en utilizar  propiedades externas   de una entidad externa y los detalles  de la entidad interna, es por ello  que  diseñan los sistemas  de una forma compleja de componente entre componente  . Mediante este proceso, se determinan las características  y cómo es el comportamiento de los niveles de abstracción. Para ello,   las herramientas abstractas se  visualizan  por cada nivel  en donde se van describiendo los atributos  y el comportamiento  de un objeto como en las operaciones; así como unas colecciones de datos pueden ser arrays, listas, pilas, árboles, árboles binarios, grafos, ….,  pueden haber como otro ejemplo, los tipos de objetos físicos que serían lo carros, aviones, trenes , barcos, bicicletas, son medios de transporte.

Cuando nos referimos   al centro de POO,  es que visualiza  y utiliza  todos los enfoques  en donde describe un proceso, la cual   asocian los objetos   determinándose  las entidades de manera individual,  pues, un sistema se caracteriza  por un estado  y comportamiento  del objeto y los valores que toman esos datos ( atributos ) que se conforman   estructuras  de los objetos  ( funciones o métodos).

ü  Encapsulamiento  y ocultación de los datos:  se procede  a agrupar  los datos y operaciones  bajo la misma unidad, van relacionadas  para que el aspecto del componente   definido por la interfaz estén separados y ocultos esos datos  ( information hiding)  y encapsulamiento  de los datos ( data encapsulation).

ü  Clases:  En POO, son la esencia   de los tipos de datos  al igual que un dato que se encuentre definido,  en un lenguaje de programación , como una descripción  de unos números  de objetos  similares al compartir  los mismos atributos   y operaciones, es decir, si una clase encapsula  las abstracciones de los datos y las operaciones necesarias para la descripción de un  objeto en el mundo real, en UML por ejemplo, la representación de clases sería  definir las clases de personas, autos, hechiceros, cleros, animale, etc.  El jugador de futbol/ Nombre/ altura/peso/vida/ edad/ patear/ saltar…

ü  Herencia: se refiere a la generalización  como la propiedad que permite  el compartimiento de la información entre dos entidades  en donde se evite la  redundancia, sólo se enfoca en la clase y la superclase, por ejemplo, (refrigerador/ electrodoméstico).  También la especialización  es otra propiedad en la que  se efectúa el proceso inverso  de la generalización   en el que se dan definiciones a clase a partir de las ya existentes. Básicamente la herencia  en orientación a objetos es donde se implementan  la propiedad de generalización debido a que comparte las características  comunes de su derivando, por ejemplo ,  en C++ la clase original  es denotada como  clase base y las clases que se la derivan se les llaman clases derivadas.

ü  Reusabilidad: ya cuando se ha escrito  la clase,  es creada y depurada  para que se pueda distribuir  a otros programadores para la utilización de programas propios  (reusability) y en POO,  muchas empresas  emplean la reutilización de la clase para minoría de costos ( escatimar costes)  de inversión en la programación.

ü    Poliformismo:  ES la consistencia  y reducción de los códigos  como la ventaja de definir la  herencia; es decir, el poliformismo es una función del objeto  que lo llama  en tiempo de ejecución  y durante la compilación en donde una case está denominada en distintas formas; por ejemplo: animal/ mamífero/ reptiles/ felinos/ herbívoros/ omnívoros/ arácnidos/….n .   

ü   Diseño de POO:  un programa de alto nivel  como los POO  posee  la identificación de los objetos del sistema, la agrupación  en clases a todos los objetos   que tengan características  y comportamientos similares en lo que las relacionan,  la identificación  de los datos y operaciones es de vital importancia   en cada una de las clases para conllevar a la  identifcación de las realciones.



·         Constantes y variables. en los programas de un ordenador tienen valores definidos que no se pueden cambiar  en la fase de la ejecución de dicho programa   y se les denominan como constantes, sólo los valores que pueden cambiar en la fase de ejecución  son las variables.

El carácter   válido está  queda dentro de los apóstrofos  y cundo se expresan en sucesiones  se concadena; es decir,  si se quiere unir dos caracteres ´MIGUEL´+ ´CERVANTES´ en pantalla al concadenar se  imprime MIGUEL DE CERVANTES  

·         Las constantes lógicas  o booleanas , existen sí y sólo si  hay verdadero o falso,  las variables tienen atributos  que son el nombre de la asignación  y el uso que se le dará,   y se le conoce a las variables como los identificadores   que constan  a los caracteres alfanuméricos.

·         Expresiones : se refiere al la combinación  de constantes , variables, símbolos  o signos de operación y de agrupación como los paréntesis  y el nombre de las funciones  especiales. Se emplean los paréntesis  para indicar el orden de los cálculos. Una expresión   consta básicamente de operandos y operadores  que se clasifican en: 

ü  Expresiones aritméticas  que se denotan análogas  a las fórmulas matemáticas , las variables  y constantes son numéricas ya sea real o entera, mod % que es módulo o resto, se emplea los operadores aritméticos. Todos los operadores aritméticos no están presentes en todos los lenguajes de programación  como en FORTRAN  no existe el div y el mod .


ü  Operadores  como div (/) y mod(%) se emplean para la división real  y la división entera  por que el operador div y el operador mod son los que representan  el resto de la división entera . Por ejemplo: A div B  solo se usa si A y B son expresiones  enteras y al obtener esa parte entera  A/B  se asigna   19/ 6 = 19div6  toma el valor 3.  así cuando se comprueba 19 div3 equivale a 6 y 19 mod 6 equivale a 1. Entre los operadores están los denominados incremento y decremento; el operador incremento  (++) aumenta el valor en una unidad y el decremento (−−) la disminuye.  Para as cadenas con el incremento en i  en 1   y después se emplea  el valor de 1  en la expresión ( ++i);   en el caso de que usa el valor de i  en la expresión   de la que se encuentre y después se incrementa en 1  es (i++);  cuando decremento en 1 y después  utiliza de nuevo el valor de i en la expresión correspondiente ( −−i); al utilizar el valor de i  en la expresión  en que se encuentra  y después  se incrementa  en 1 es (i−i−). Ejemplo: con el algoritmo ejecutado se tiene  que n=4 y al escribir n  que es asignado como valor de 4 y si se escribe n++ el 4 en la siguiente acción o la transformación es que ha aumentado un valor de su unidad ( incremento) se escribe  de n++ es 5 y el valor de n torna a 5  de ese n=4 se escribiera ++n  sería 5 y el n=5.

ü   Expresiones lógicas ( booleanas):   con dos condiciones de verdadero ( true) o falso ( false)  posee a su vez en las expresiones booleanas unos operadores lógicos  denominados como not, or, and  de los cuales también existen  los operadores relacionales   o de comparación  <menor que; > mayor que; =  igual que ; == igual en doble implicación ( bicondicional); <= menor o igual que ; >= mayor o igual que ; <>distinto así como de distinto en caso de ser negada la expresión  quedaría así !=. Con lógica podremos  deducir lo siguiente: no 5>8 es verdadera , ya que  5>8 es falsa; caso de que 1<7 y 7<20 es verdadero(true.


 Referencias: Luis Joyanes Aguilar. QA, 9.58. J 68, 2008. Edic. 3



Comentarios