jueves, 7 de agosto de 2014

INTRODUCCIÓN A LA PROGRAMACIÓN

RESOLUCIÓN DE PROBLEMAS

Pasos

Análisis del problema: requiere que el problema sea definido y comprendido claramente para que pueda ser analizado con todo detalle.
Diseño o desarrollo de algoritmos: procedimiento paso a paso para solucionar el problema dado.
Resolución del algoritmo elegido en la computadora: consiste en convertir el algoritmo en programa, ejecutarlo y comprobar que soluciona verdaderamente el problema.
¿Qué virtudes debería tener nuestra solución?
  • Corrección y eficacia: si resuelve el problema adecuadamente.
  • Eficiencia: si lo hace en un tiempo mínimo y con un uso óptimo de los recursos del sistema.
Para conseguirlo, cuando afrontemos la construcción de la solución tendremos que tener en cuenta los siguientes conceptos:
  1. Abstracción: se trata de realizar un análisis del problema para descomponerlo en problemas más pequeños y de menor complejidad, describiendo cada uno de ellos de manera precisa. Divide y vencerás, esta suele ser considerada una filosofía general para resolver problemas y de aquí que su nombre no sólo forme parte del vocabulario informático, sino que también se utiliza en muchos otros ámbitos.
  2. Encapsulación: consiste en ocultar la información para poder implementarla de diferentes maneras sin que esto influya en el resto de elementos
  3. Modularidad: estructuraremos cada parte en módulos independientes, cada uno de ellos tendrá su función correspondiente.
La fase más importante es la Abstracción. Dedicar un breve momento a desgranar el problema hasta hacerlo comprensible y manipulable nos ahorra mucho tiempo y seguramente encontraremos soluciones acorde a lo que se plantea.

ALGORITMOS Y PROGRAMAS

Algoritmo: secuencia ordenada de pasos, descrita sin ambigüedades, que conducen a la solución de un problema dado.
Un algoritmo, en informática, particularmente en programación, es un conjunto de pasos para lograr un resultado, por lo general, un algoritmo tiene datos de entrada, proceso de datos, y datos de salida, por ejemplo, el siguiente es un algoritmo muy sencillo que suma dos números que ingresas por el teclado: 

Solicita num1 //Datos de entrada 
Solicita num2 
res = num2 + num2 // proceso de datos 
regresa res //datos de salida 

Como puedes ver, ese algoritmo está de risa, sin embargo, existen algoritmos más complejos, por ejemplo, el que ordena una serie de números, el que obtiene una raiz cuadrada, hasta simuladores de complejos procesos químicos o físicos.

La diferencia fundamental entre algoritmo y programa es que, en el segundo, los pasos que permiten resolver el problema, deben escribirse en un determinado lenguaje de programación para que puedan ser ejecutados en el ordenador y así obtener la solución.
PARADIGMAS DE LA PROGRAMACIÓN

El término paradigma significa «ejemplo» o «modelo».
Paradigma de programación: es un modelo básico para el diseño y la implementación de programas. Este modelo determinará como será el proceso de diseño y la estructura final del programa.
  • lo que se debe observar y escrutar
  • el tipo de interrogantes que se supone hay que formular para hallar respuestas en relación al objetivo
  • cómo deben estructurarse estos interrogantes
  • cómo deben interpretarse los resultados de la investigación científica

¿Cuál es el objetivo que se busca con la aplicación de los diferentes enfoques? Fundamentalmente, reducir la dificultad para el mantenimiento de las aplicaciones, mejorar el rendimiento del programador y, en general, mejorar la productividad y calidad de los programas.
CONCEPTOS A CONOCER

Compilación: Es el proceso por el cual se traducen las instrucciones escritas en un determinado lenguaje de programación a lenguaje que la máquina es capaz de interpretar.
Compilador: programa informático que realiza la traducción. Recibe el código fuente, realiza un análisis lexicográfico, semántico y sintáctico, genera un código intermedio no optimizado, optimiza dicho código y finalmente, genera el código objeto para una plataforma específica.

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.
Intérprete: programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

Mantenimiento del software: es el proceso de mejora y optimización del software después de su entrega al usuario final. Involucra cambios al software en orden de corregir defectos y dependencias encontradas durante su uso, así como la adición de nuevas funcionalidades para mejorar la usabilidad y aplicabilidad del software.
Ciclo de vida del software: es una sucesión de estados o fases por las cuales pasa un software a lo largo de su "vida".
Lenguaje de programación: Conjunto de reglas sintácticas y semánticas, símbolos y palabras especiales establecidas para la construcción de programas. Es un lenguaje artificial, una construcción mental del ser humano para expresar programas.