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
exelente blog
ResponderEliminar