sábado, 25 de febrero de 2017

2.2 Representación de algoritmos: gráfica y pseudocódigo.

Las herramientas de programación utilizadas como lenguajes algorítmicos son:


  • Pseudocódigo: es un lenguaje algorítmico, muy parecido  al español pero más conciso que permite la redacción  rápida del algoritmo.
  • Diagramas de flujo: ha sido la herramienta de programación por excelencia, y aún hoy sigue siendo muy  utilizada. Es fácil de diseñar pues el flujo lógico del  algoritmo se muestra en un diagrama en lugar de palabras.

Pseudocódigo
Es un lenguaje de pseudoprogramación, muy parecido a un lenguaje de programación. El pseudocódigo es muy fácil de utilizar, ya que es muy  similar al español.   Algunas palabras utilizadas en el pseudocódigo:

– Inicio
– Fin
– Leer
– Escribir
– Asignar (x← y+z)

Ejemplo Programa Calculo Área Rectángulo

1.     Inicio

2. Leer; base, altura

3. Área ← base x altura

4.Escribir; base, altura, área

5.     Fin

 Para desarrollar un pseudocodigo se necesita saber los tipos de datos que se deben tener :

entero: Subconjunto finito de los números enteros, cuyo rango dependerá del lenguaje en el que posteriormente codifiquemos el algoritmo y del ordenador.

El rango depende de cuantos bits utilice para codificar el numero, normalmente 2 byes.Para numeros positivos, con 16 se pueden almacenar 216

real: Subconjunto de los números reales limitado no sólo en cuanto al tamaño, sino también en cuanto a la precisión

Lógico: Conjunto formado por los valores Cierto y Falso. ‘1’ y ‘0’.

Carácter: Conjunto finito y ordenado de los caracteres que el Ordenador

Diagramas

Un diagrama de flujo utiliza símbolos estándar en el que  cada paso del algoritmo se visualiza dentro del símbolo  y en el orden en que estos pasos se ejecutan, se indica conectándolos con flechas llamadas líneas de flujo, ya que indican el flujo lógico del algoritmo.

El diagrama de flujo es la representación gráfica del algoritmo o proceso. Se utiliza en disciplinas como la programación, la economía, los procesos industriales y la psicología cognitiva. Estos diagramas utilizan símbolos con significados bien 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.

Solución gráfica del ejemplo anterior:





2.1 Análisis del problema

Las fases en la construcción de un programa para resolver un problema mediante la computadora son, en orden, las siguientes:

  • Análisis del problema
  • Diseño del algoritmo
  • Programación
  • Ejecución y pruebas

El paso cero sería Entender el problema, parece banal, pero no lo es cuando se piensa en la gran cantidad de proyectos de computación que se desarrollaron sin haber comprendido bien para que se hacían, o cual era el problema que supuestamente iban a resolver.

Comprender la importancia de entender con claridad el problema antes de abocarnos a encontrar una solución.

El análisis consiste en una clara definicion del problema, donde se contemple exactamente lo que debe hacer el programa y el resultado o solucion deseada.

Dado que se busca una solución por computadora, se precisan especificaciones detalladas de entradas y salidas.

Para resolver un problema con un ordenador hay que disponer de los datos de entrada, estudiar el tratamiento que se ha de realizar a dichos datos, la información que se desea obtener como resultado y de que manera debe presentarse.

Es decir, después de analizar el problema, se han de conocer claramente tres cosas.


  •    Datos de Entrada de que se dispone
  •    Proceso o Tratamiento que ha de realizarse con estos datos.
  •    Información de salida  deseada.

Una de las técnicas mas empleadas recibe el nombre de H.I.P.O. (Hierarchy the plus input process output) que consiste en esquematizar cada programa, o una parte del mismo en los tres bloques (los descritos anteriormente)..

ENTRADA  ————– PROCESO ————— SALIDA

Ejemplo:

Sin entrar en el campo de la informática, para hacer la nómina de los mejores alumnos de una carrera, se necesita saber:

ENTRADA: Los datos de cada uno de los alumnos y  si estos datos están  en papel o en un fichero donde está toda la información de los alumnos.

PROCESO: La fórmula matemática para calcular el promedio de notas es:

(nota 1 + nota 2 + nota 3 + …..+ nota n) / cantidad de notas.

SALIDA: El modelo del informe donde se desean imprimir el promedio de los alumnos.

Teniendo en cuenta que un algoritmo es un método para resolver problemas, una vez analizado el mismo se precisa diseñar un algoritmo que indique claramente los pasos a seguir para resolverlo.

Para realizar un determinado proceso, se le debe suministrar al ordenador una fórmula para la resolución de un problema (algoritmo), cuyo diseño debe ser independiente de la computadora que resuelve el problema.

Dada la importancia del algoritmo en la ciencia de la computación, un aspecto muy importante será el diseño del algoritmo.

1.10 Consola de línea de comandos

Es un método que permite a las personas dar instrucciones a algún programa informático por medio de una línea de texto simple. Debe notarse que los conceptos de CLI, Shell y Emulador de Terminal no son lo mismo, aunque suelen utilizarse como sinónimos.

La Línea de Comandos de Windows es una implementación de la consola MS-DOS para la interfaz gráfica de las diversas versiones Microsoft Windows.

La línea de comandos ha estado presente en forma activa en el sistema operativo Windows desde la versión 3.0 hasta la versión Windows 98, donde los programas de la interfaz gráfica eran ejecutados por medio de la consola y sobre la cual todo el sistema operativo era montado.1

A partir de la versión de Windows XP, la línea de comandos pasó a segundo plano como un complemento de sistema, sin que perdiera la funcionalidad de la misma.

1.9 Ejecutables

Un ejecutable es un archivo diseñado para poder iniciar un programa. En su interior están pues las instrucciones precisas para poder ejecutar un programa determinado o varios. Los ordenadores pueden realizar todo tipo de tareas, pero para ello debe indicárseles como. Son como un niño a quien debe decírsele paso a paso lo que hacer y cuando. En su memoria base suelen cargarse las instrucciones básicas, y el sistema operativo carga comandos adicionales, que le permiten realizar las tareas más simples. La tarea de un programador cuando hace un programa es decirle al ordenador como debe usar esos comandos básicos que ya sabe para poder realizar lo que el programa quiere hacer, sea mostrar una imagen, escribir texto, guardar un documento... etc.

Generalmente la extensión más común para los ejecutables es la .EXE en Windows (que viene de abreviar EXECUTABLE en inglés), pero también existen diversos tipos de ejecutables con extensiones distintas: por ejemplo, los .COM (que fueron los primeros), los .BAT (archivos de procesamiento de lotes, que permitían encadenar la ejecución de varios programas sucesivamente), incluso algunas librerias como .DLL que contienen información adicional para el sistema operativo y pueden ser ejecutados por este. Es de reseñar que en general cualquier archivo ejecutable necesita un sistema operativo para ejecutarse, puesto que es el sistema operativo quien le permite al ordenador entender lo que dice el archivo y llevarlo a cabo, (recordemos que es el S.O. quien carga en el ordenador las órdenes básicas que luego servirán para ejecutar el programa). Hay excepciones a esta norma, pero son pocas.

El archivo ejecutable puede venir solo o bien acompañado de más archivos. El caso es que será siempre él quien inicie la ejecución, carga y manejo de esos archivos. Es como el interruptor que dá paso a que la luz se encienda. Para crearlos, el programador suele usar un lenguaje de programación que le permitirá crear un código fuente entendible para él y luego codificarlo para que pueda ser entendido por el ordenador (proceso que se llama ensamblaje). La codificación genera un resultado en código ASCII, que puede ser leido por el ordenador, pero no por el porpio programador. Los lenguajes de programación varían según la plataforma y el objetivo, existiendo muchos y muy distintos.

Un caso que merece mención son los archivos autoejecutables, que ya incluyen en su interior las instrucciones para realizar las labores necesarias por su cuenta. La ventaja de estos autoejecutables es que no precisan el programa original para ejecutarse, por lo que pueden ser ejecutados en cualquier computador.

1.8 Compiladores e intérpretes

Compilador

Acepta programas escritos en un lenguaje de alto nivel y los traduce a otro lenguaje, generando un programa equivalente independiente, que puede ejecutarse tantas veces como se quiera.

En un compilador hay que distinguir tres lenguajes diferentes:


  • El de los programas de partida (LA)
  • El de los programas equivalentes traducidos (LB), normalmente el lenguaje de máquina
  • El lenguaje en que está escrito el propio compilador (LC), que puede ser igual o diferente a uno de los otros dos.

Los programas interpretados suelen ser más lentos que los compilados, pero los intérpretes son más flexibles como entornos de programación y depuración. Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.

Intérprete

Traduce un código fuente en lenguaje máquina también. El intérprete difiere del compilador en que ejecuta cada orden una vez que se traduce. Este proceso puede hacer más lenta la ejecución del programa, así que los intérpretes se utilizan menos que los compiladores. Un intérprete es otra manera de implementar un lenguaje de programación. La interpretación comparte muchos aspectos con el compilador. Los análisis léxico, sintáctico y verificación de tipos son exactamente los mismos que en un compilador.

Pero en lugar de generar código del árbol sintáctico, el árbol sintáctico se procesa directamente para evaluar expresiones y ejecutar sentencias, y así hasta terminar. Un intérprete puede necesitar evaluar la misma parte del árbol sintáctico varias veces (por ejemplo cuando se hacen ciclos), por eso la interpretación puede ser más lenta que la ejecución de un programa compilado. Pero escribir un intérprete es más fácil de mover a una máquina diferente, así que para aplicaciones donde la velocidad no importa, lo mejor es utilizar un intérprete.

Es muy útil sabe cómo se hace un intérprete o un compilador, porque esto permite a los programadores tener una idea de lo que hacen los programas de alto nivel, lo que a su vez, ayudará a los programadores para crear código más eficiente. Otras razones. Los errores que devuelven los compiladores proporcionan una manera fácil de entender el código fuente; además, se conoce la diferencia entre errores léxicos, sintácticos y errores de tipos.

1.7 Editores de texto.

Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos únicamente por texto sin formato, conocidos comúnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes leídos según el código de caracteres que usa el editor. Hoy en día es comúnmente de 7 u 8-bits en ASCII o UTF-8, rara vez EBCDIC.

Por ejemplo, un editor ASCII de 8 bits que lee el número binario 0110 0001 (decimal 97 ó hexadecimal 61) en el archivo lo representará en la pantalla por la figura a, que el usuario reconoce como la letra "a" y ofrecerá al usuario las funciones necesarias para cambiar el número binario en el archivo.

Los editores de texto son incluidos en el sistema operativo o en algún paquete de software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos de configuración, scripts o el código fuente de algún programa.

El archivo creado por un editor de texto incluye por convención en DOS y Microsoft Windows la extensión ".txt", aunque pueda ser cambiada a cualquier otra con posterioridad. Tanto Unix como Linux dan al usuario total libertad en la denominación de sus archivos.

Al trasladar archivos de texto de un sistema operativo a otro se debe considerar que existen al menos dos convenciones diferentes para señalar el término de una línea: Unix y Linux usan sólo retorno de carro en cambio Microsoft Windows usa al término de cada línea retorno de carro y salto de línea.


1.6 Paradigmas de programación

Un paradigma de programación es una propuesta tecnológica que es adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que unívocamente trata de resolver uno o varios problemas claramente delimitados. La resolución de estos problemas debe suponer consecuentemente un avance significativo en al menos un parámetro que afecte a la ingeniería de software. Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de definición. Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente.

Paradigma de la Programación Orientada a Objetos

Probablemente el paradigma de programación que actualmente es el más usado a todos los niveles es la orientación a objeto. El núcleo central de este paradigma es la unión de datos y procesamiento en una entidad llamada "objeto", relacionable a su vez con otras entidades "objeto".

Tradicionalmente datos y procesamiento se han separado en áreas diferente del diseño y la implementación de software. Esto provocó que grandes desarrollos tuvieran problemas de fiabilidad, mantenimiento, adaptación a los cambios y escalabilidad. Con la orientación a objetos y características como el encapsulado, polimorfismo o la herencia se permitió un avance significativo en el desarrollo de software a cualquier escala de producción.

La orientación a objeto parece estar ligado en sus orígenes con lenguajes como Lisp y Simula aunque el primero que acuño el título de programación orientada a objetos fue Smaltalk.