jueves, 9 de agosto de 2012

INTRODUCCION A LA PROGRAMACION

Principios de la programación
Cuando existe la necesidad de resolver, de forma automatizada, tareas que requieren de mucho análisis y múltiples procesos, por lo general existen aplicaciones, o programas que son muy útiles para simplificar el trabajo. Sin embargo, existen casos en que los programas de aplicación actuales no son suficientes para cubrir todas las necesidades. Cuando se llega a este extremo, se hace necesaria la técnica de programación, que consiste en el diseño, paso a paso, de una aplicación o grupo de programas que logren satisfacer todas las necesidades de una función o proceso determinado.
Toda tarea o proceso que se desea llevar a cabo por medio de la computadora, requiere un manejo adecuado de la información por parte de los programas que se utilicen. Para hacer posible la técnica de la programación en la solución de un problema se debe tomar en cuenta, básicamente, tres etapas: Entrada, proceso y salida.
Entrada: La conforman un conjunto de datos que se deben proporcionar al programa en uso. Dichos datos los proporciona el usuario final del programa. Por ejemplo, sin un programa calcula la raíz cuadrada de un numero X, el usuario final debe proporcionar el valor de dicho numero como primer paso.
Proceso: Consiste en un conjunto de instrucciones que un programa realiza automáticamente tomando como referencia los datos de entrada para lograr obtener los resultados que se esperan del programa.
Salida: Son los datos que determinan la finalidad con que se diseña un programa, es decir los resultados que e esperan del proceso automático.
De los tipos de datos descritos previamente, el más importante para iniciar el diseño de un programa es el dato de salida, porque de allí se deduce con facilidad que datos se necesitan de entrada y que proceso se realizara para obtener la salida esperada. Una vez que se establecen los datos a utilizar, el orden en que el programa deberá manejarlos es el siguiente:





Algoritmo
Es la secuencia de pasos lógicos para llevar a cabo una tarea específica para la solución de un problema. Los algoritmos son independientes del lenguaje de programación es que se expresen como de la computadora que los ejecuta.
Por ejemplo: imagínese una receta de cocina, puede estar escrita en español, ingles, francés o italiano; sin importar el lenguaje en que este escrito o el cocinero que elabore los platos, los pasos a seguir serán siempre los mismos.
Un algoritmo es una secuencia de pasos lógicos necesarios para llevar a cabo una tarea específica, como la solución de un problema. Los algoritmos son independientes tanto el lenguaje de programación en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo el algoritmo será siempre el mismo.
En resumen: una analogía con la vida diaria, una receta de un plato de cocina se puede expresar en español, francés, ingles, pero cualquier que  sea el lenguaje, los pasos para la elaboración del plato se realizaran sin importar el cocinero.
Para legar a la realización de un programa es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir programa.
Características de los algoritmos.
Las características fundamentales que debe cumplir todo algoritmo son:
•Debe ser preciso e indicar el orden de realización de cada paso.
•Seguir un orden cuidadosamente correcto.
•Ser efectivos.
•Resolver el problema en un número finito de pasos.
Ejemplos:
El siguiente ejemplo muestra un algoritmo para cambiar un foco quemado. Cambiar un foco quemado podría resumirse en dos pasos:
1. Quitar el foco quemado.
2. Colocar un foco nuevo.



Sin embargo si deseamos darle las instrucciones a un robot, estas deberían ser:
3. Situar una escalera bajo el foco quemado.
4. Elegir un foco de reemplazo (de la misma potencia que el anterior)
5. Subir por la escalera hasta alcanzar el foco.
6. Girar el foco contra las manecillas del reloj hasta que este suelto.
7. Ubicar el foco nuevo en el mismo lugar que el anterior.
8. Enroscar en el sentido del as manecillas del reloj hasta que quede apretado.
9. bajar de la escalera.

Programa

Un programa es un conjunto de instrucciones (ordenes de computadora) que ejecutan una determinada tarea. En esencia, un programa es u medio para conseguir un fin. El fin contiene la información necesaria para solucionar un problema.
El proceso de programación y el desarrollo de un programa requieren de las siguientes fases:
1. definicion y análisis del problema
2. Diseño de algoritmos
-diagrama de flujo
-pseudocódigo

3. Codificación del programa
4. Depuracion y verificación del programa
5. documentación
6. mantenimiento
Definición y análisis del problema
Para resolver un problema, debemos formularlo con claridad. Si formulamos claramente el problema, tendremos más opciones para resolverlo.
Vamos a suponer que obtiene muchos datos de distintos orígenes. Si bien la mayoría de los daros son estrictamente numéricos, algunos valores contienen guiones y espacio en blanco además de números. Vamos a suponer, así mismo, que quieren eliminar todos los espacios en blanco y los guiones de dichos campos y guardar los datos numéricos.
En lugar de intentar eliminar los espacios en blanco y los guines de los datos originales, podría formular el objetivo del programa como:
Objetivo: Reemplazar los valores existentes de un campo por otros valores que contengan todo lo que contenían los valores originales, excepto los espacios en blanco y los guiones.
Esta formulación evita la dificultad que supone manipular una cadena de caracteres cuya longitud sigue cambiando a medida se trabaja con ella.
Descomponer el problema
Puesto que tiene que indicar instrucciones específicas a visual FoxPro en términos de operaciones, comandos y funciones, debe descomponer el problema en pasos discretos. La tarea más prudente para este problema seria examinar cada carácter de la cadena. Hasta que pueda examinar un carácter individualmente, no podrá determinar si se desea guardarlo.
Una vez que examine un carácter, deberá comprobar si se trata de un guion o de un espacio en blanco. En este momento, quizá desee refinar la declaración del problema.
¿Y si obtuviera mas adelante datos que contienen paréntesis de apertura y de cierre?
¿Y si desea deshacerse de los símbolos de monedas, comas y puntos?
Cuanto mas genérico sea el código, mas trabajo se ahorrara de ahora en adelante; lo principal es ahorrar trabajo. He aquí una formulación del problema valida para una variedad mucho mayor de datos.
Objetivo Refinado: Reemplazar los valores existentes en un campo por otros valores que contengan únicamente los caracteres numéricos de los valores originales.
Con esta formulación, ahora puede volver a plantear el problema a nivel de carácter: si el carácter es numérico, guardarlo; si el carácter es no numérico, pasar al siguiente. Cuando haya construido una cadena que solo contenga los elementos numéricos de la cadena inicial, podrá reemplazar la primera cadena  y pasar al siguiente registro hasta que haya terminado con todos los datos.
En resumen, El problema se descompone en lo siguientes elementos:
1.       Examinar cada carácter
2.       Decidir si el carácter es numérico o no
3.       Si es numérico , copiarlo a la segunda cadena
4.       Cuando haya terminado con todos los caracteres de la cadena original, reemplazar la cadena original con la cadena que solo contiene valores numéricos.
5.       Repetir estos pasos para todos los registros de la tabla.

Construir elementos
Cuando sepa que debe hacer, puede empezar a formular los elementos en términos de comandos, funciones y operaciones de visual FoxPro.
Como los comandos y funciones se usan para manipular datos, tiene algunos datos de prueba para trabajar con ellos. Los datos de prueba sirven para simular los datos verdaderos lo mejor posible.
Elementos utilizados en la solución de un programa.
•Identificadores
Representan los nombres de los objetos de un programa (constantes, variables, tipos de datos, procedimientos, funciones, etc.) Es una secuencia de caracteres que puede ser de cualquier longitud, deben seguir ciertas reglas, las cuales son:
1.       Debe comenzar con una letra o “_” y no puede contener espacios en blanco.
2.       Letras, dígitos y caracteres subrayados (“_”) están permitidos después del primer carácter.
3.       Los caracteres especiales (. , %”,”) no están permitidos.
Es decir, un identificador es un método para nombrar a las celdas de memoria en la  computadora, en lugar de aprendernos una dirección de memoria
•Constantes
Las constantes son valores que no pueden cambiar en la ejecución del programa. Recibe un valor en el momento de la compilación del programa y este no puede ser modificado.   Ejemplo: El numero Pi, el 12% de impuesto.
•Variables
Las variables son valores que se pueden modificar durante la ejecución de un programa. Al contrario de las constantes estas reciben un valor, pero este valor puede ser modificado durante la ejecución o la compilación del programa.
Importante: las variables no deben acentuarse, ni mucho menos contener espacios en blanco ok.
Operadores utilizados en programación

En todos los lenguajes de programación se utilizan operaciones para efectuar operaciones aritméticas. Combinando las variables y constantes en expresiones aritméticas, por medio de funciones  adecuadas.
Una expresión es un conjunto de datos o funciones unidos por operadores aritméticos.
Operadores aritméticos.
Operaciones de Relacionales.
En ocasiones en los programas se necesitan realizar comparaciones entre distintos valores, esto se efectúa utilizando los operadores relacionales, los cuales se listan a continuación:
Orden de Evaluación
Al incluir estos operadores con los operadores aritméticos, obtenemos un nuevo orden de evaluación:

 

Operadores Lógicos
Las expresiones lógicas pueden combinarse para formar expresiones más complejas utilizando los operadores lógicos and, or  y not. Estos se utilizan con constantes lógicas.
[operando1] operador operando2
El operando1 según el tipo de operador puede no existir.
La operación and combina dos condiciones simples y produce un resultado verdadero solo si los dos operando son verdaderos. La operación or es verdadera si uno de los dos operando es verdadero. La operación not actúa sobre una sola condición simple u operando y simplemente niega (o invierte) su valor.
Cuando la expresión lógica contiene varios tipos de operadores, es preciso seguir un nuevo orden de precedencia o prioridad para obtener el valor final de la expresión.
Diseño de algoritmos
Para la construcción de una casa lo primero que se hace es el diseño o sea el plano (instrucciones a seguir sobre el modelo y estilo) de la casa. Al igual que la construcción de una casa, para la elaboración de un programa, este debe ser diseñado previamente.
Diagramas de flujo
Un diagrama de flujo es la representación grafica del flujo lógico de datos que se utilizara en la formulación, generalmente de una determinada parte del programa. Esto quiere decir que los programas se dibujan antes de escribir el programa, para asegurar un desarrollo lógico.
Los símbolos mas utilizados son los siguientes:
Ejemplo básico de un diagrama de flujo:

El diagrama anterior representa la resolución de un programa que da como resultado el salario mensual de un empleado a partir de la lectura del nombre, horas trabajadas, precio por hora y el cálculo del sueldo diario.
Pseudocódigo
Es una herramienta utilizada para el diseño de programas permitiendo al programador expresar sus pensamientos en forma natural, mostrando el orden en que se ejecutaran, las sentencias del programa sin ninguna ambigüedad
En si es una mezcla de lenguaje de programación y de lenguaje natural. La idea del pseudocódigo consiste en aprovechar la flexibilidad y poder expresivo del lenguaje por un lado, y las reglas de composición de los lenguajes de programación de alto nivel por el otro.
Reglas de los pseudocódigos
•Utilizar palabras como Do while, EndDo o if, else, Endif, <nombre –proceso>, INVOCA <nombre proceso<, End <nombre –Proceso>, las que tienen un significado especial, generalmente coinciden con las palabras correspondientes a los lenguajes de programación utilizados por los programadores para dar solución a un problema.
•Seguir reglas de sangrado para mostrar las dependencias dentro de cada uno de los segmentos que corresponden al diseño del programa.
El Pseudocódigo generalmente consiste en un código falso (pseudo), o lenguaje natural, sin figuras. Las etapas de entrada, proceso y salida e manifiestan en términos que ese utilizan e la comunicación.
Al igual que un diagrama de flujo, un pseudocódigo debe indicar donde comienza (inicio) y donde finaliza (fin)
La resolución del ejercicio anterior será:

Inicio
Leer nombre, horas, precioh
S_Diario=horas*precioh
S_Mensual=S_Diario*30
Fin

Estilos de programación
Se entiende por estilos de programación los métodos  que existen para manejar la calidad de los programas de computación.
Programación Estructurada
Esta es una técnica utilizada para organizar programas dentro de una colección de pequeños módulos aislados. Los módulos pueden ser agrupados por una jerarquía o en una red y cada unidad tiene una entrada única y un punto de salida. El Procedimiento de líneas de código se ejecuta de arriba hacia abajo.
La programación estructurada nos permite construir un producto de software en grupo, en otras palabras varios programadores puede trabajar en diferentes partes en la elaboración de un producto.
La programación estructurada se basa en los siguientes puntos:
1.       Diseño del programa de lo general a lo particular.

2.        Todo programa puede ser diseñado utilizando únicamente las tres estructuras básicas:
•Secuencial
•Alternativa
•Repetitiva

Esto ayuda que los programas sean fácilmente leídos por cualquier persona, ke el número de errores en el proceso de programación sea bajo, que los programas sean autodocumentados y que puedan mantenerse fácilmente.
La programación estructurada hace los programas mas fáciles de escribir, verificar, leer y mantener utiliza un número limitado de estructuras de control que minimiza la complejidad de los problemas.
Estructura Secuencial
Cuando una instrucción se ejecuta después de otra se le llama ejecución secuencial. Las instrucciones se ejecutan en secuencia siguiendo el orden en que fueron escritas. Por ejemplo:

Estructura alternativa o de selección
Hay ocasiones en que la ejecución de una acción depende del resultado de una expresión sea esta verdadera o falsa.
La estructura de Selección si/sino/finsi (if)/else/Endif)
Ejemplo:
Se desea Calcular el importe de la venta de un determinado artículo, sabiendo que al comprar entre 1 y 15 unidades del mismo, el descuento es de un 10% y si la compra es superior a 15 unidades, el descuento es de 15%, el  diseño en pseudocódigo y diagrama de flujo seria:
La estructura de Selección si/finsi (if/Endif)
Si en el caso anterior simplemente se establece, calcular el importe de la venta de un determinado artículo, sabiendo que al comprar más de 10 unidades del ismo el descuento es de un 10%, el diseño seria:

La ejecución de una sentencia alternativa se realiza de la siguiente manera:
1.       Se realza la expresión para ver si es cierta o falsa.
2.       Si es cierta se ejecutan las sentencias que están después de if y si es falsa se ejecutan las sentencias que están después de Else (sino), si es que esta existe, continuando la ejecución en la siguiente secuencia después de Endif (Finsi)

En los siguientes ejercicios expuestos con anterioridad podemos observar que la expresión enunciada en la sentencia if puede ser simple o compuesta. Cuando la condición es simple solo hay una expresión, y cuando es compuesta, hay varios expresiones unidas por los operadores lógicos And (Y) y or (O).
Estructura Alternativa anidada
Dentro de una estructurada de tipo alternativo es posible que exista otra del mismo tipo.
Por ejemplo: Construir una rutina para determinar cual la mayor la menor de tres cantidades dadas a, b y c.

Pseudocódigo
Si a<b
      Si a<c
         Menor=a
Sino
         Menor=c
   Finsi
Sino
     Si b<c
         Menor=b
Sino
         Menor=c
  Finsi
Finsi

1 comentario: