Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore 01 apuntes ver 2020

01 apuntes ver 2020

Published by programacion.tecnico, 2020-03-24 21:43:56

Description: 01 apuntes ver 2020

Search

Read the Text Version

Manejo de Técnicas de Programación --------------------------------

Manejo de Técnicas de Programación SOLUCIÓN DE PROBLEMAS USANDO UNA COMPUTADORA El proceso de resolución de un problema con una computadora conduce a la escritura de un programa y a su ejecución en la misma. Aunque el proceso de diseñar programas es esencialmente un proceso creativo, se pueden considerar también como una serie de fases o pasos comunes que generalmente deben seguir todos los programadores. Las siguientes son las etapas que se deben cumplir para resolver con éxito un problema de programación: 1. Definición del problema 2. Análisis del problema 3. Selección de la mejor alternativa 4. Diseño del Algoritmo 5. Codificación 6. Compilación 7. Pruebas 8. Documentación Definición del Problema Está dada por el enunciado del problema, el cual debe ser claro y preciso. Es importante que conozcamos exactamente lo que se desea que la computadora realice; mientras que esto no se comprenda no tiene caso pasar a la siguiente etapa. Análisis del Problema Entendido el problema (que se desea obtener de la computadora), para resolverlo es preciso definir:  Los datos de entrada que se deben suministrar.  Los resultados que se esperan.  El proceso al que se requiere someter dichos datos a fin de obtener los resultados esperados. Una recomendación muy práctica es que nos pongamos en el lugar de la computadora, y analizar que es necesario que me ordenen y en que secuencia para poder producir los resultados esperados. Página 1

Manejo de Técnicas de Programación Selección de la Mejor Alternativa Analizado el problema posiblemente tengamos varias formas de resolverlo; lo importante es determinar cuál es la mejor alternativa. Esto es, la que produce los resultados esperados en el menor tiempo y al menor costo. Diseño del Algoritmo Una vez que sabemos cómo resolver el problema, pasamos a expresar el método de solución como una serie ordenada de pasos elementales (Algoritmo). El algoritmo se puede expresar en diferentes maneras:  Por medio de un Diagrama de Flujo (Representación gráfica del algoritmo).  Por medio de un Pseudocódigo (Instrucciones en un código especial) Codificación Una vez que hayamos elaborado el algoritmo, codificamos el programa en el lenguaje de programación seleccionado. Esto es, colocamos cada paso del algoritmo en una instrucción o sentencia utilizando un lenguaje que la computadora reconoce. Este programa es el que se conoce como Código Fuente (Source Code). Compilación Utilizamos ahora un programa Compilador, el cual analiza todo el programa fuente y detecta errores de sintaxis ocasionados por fallas en la codificación. Las fallas de lógica que pueda tener nuestro programa fuente no son detectadas por el compilador. Cuando no hay errores graves en la compilación, el compilador traduce cada instrucción del código fuente a instrucciones propias de la máquina (Lenguaje de Maquina), creando el Programa Objeto. Cuando hay errores, éstos se deben corregir sobre el mismo programa fuente. El paso de compilación se repite hasta eliminar todos los errores y obtener el programa ejecutable. Pruebas Cuando tenemos el programa ejecutable (en lenguaje de maquina) ordenamos al computador que lo ejecute, para lo cual suministramos datos de prueba. Página 2

Manejo de Técnicas de Programación Los resultados obtenidos se analizan para identificar cualquiera de las siguientes situaciones:  La lógica del programa está bien, pero hay errores sencillos, los cuales se corrigen modificando algunas instrucciones o incluyendo unas nuevas; el proceso debemos repetirlo desde el paso 5.  Hay errores muy graves ocasionados por fallas en la lógica, y lo más aconsejable es que regresemos al paso 2 para analizar nuevamente el problema y repetir todo el proceso.  No hay errores y los resultados son los esperados. En este caso, el programa lo podemos guardar permanentemente para usarlo cuando necesitemos ejecutarlo nuevamente. Documentación Es el documento que nos permite comprender, usar o modificar el programa. Se divide en tres partes: Documentación interna: son los comentarios o mensajes que se añaden al código fuente para hacer más claro el proceso seguido.   Nombre del Autor  Algoritmo  Código fuente  Documentación externa: es un documento escrito que contempla los siguientes puntos:   Descripción del problema Manual del usuario: describe paso a paso la manera en que funciona el programa, con el fin de que el usuario obtenga el resultado deseado. Página 3

Manejo de Técnicas de Programación ALGORITMOS Definición de Algoritmo La palabra algoritmo se deriva de la traducción al latín de la palabra árabe Alkhowarismi, nombre de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. Un algoritmo es una secuencia de pasos necesarios que se deben seguir para realizar una actividad (resolver un problema específico). Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. Es decir que, un lenguaje de programación es tan sólo un medio para expresar un algoritmo y que una computadora es sólo un procesador para ejecutarlo. Representación de Algoritmos Los algoritmos se pueden representar en diferentes maneras:  Narrativamente, por medio del idioma que utilizamos en forma cotidiana.  En forma gráfica, por medio de un diagrama de flujo o un diagrama de Nassi-Schneiderman.  En forma de código, por medio de instrucciones en un código especial llamado Pseudocódigo. Características de los Algoritmos Las características fundamentales que debe cumplir todo algoritmo son: a) Ser preciso e indicar el orden de realización de cada paso. b) Estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. c) Ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe tener un número finito de pasos. Un algoritmo debe reunir las siguientes características generales:  Legibilidad. Ha de estar escrito de tal forma que facilite su lectura y comprensión.  Portabilidad. Su diseño debe permitir la codificación en diferentes lenguajes de programación, así como su instalación en diferentes sistemas –que se pueda ejecutar en diferentes plataformas hardware-. Página 4

Manejo de Técnicas de Programación  Modificabilidad. La de facilitar su mantenimiento, esto es, las modificaciones y actualizaciones necesarias para adaptarlo a una nueva situación.  Eficiencia. Se deben aprovechar al máximo los recursos del computador, minimizando la memoria utilizada y el tiempo de proceso o ejecución.  Modularidad. Ha de estar subdividido en bloques o módulos, cada uno de los cuales realizará una parte del conjunto del trabajo.  Estructuración. Debe cumplir las reglas de la “programación estructurada” para facilitar la verificación, depuración y mantenimiento del programa. Elementos para diseñar algoritmos Identificadores Son los nombres que el Programador escoge para referenciar variables, funciones y otros objetos de un algoritmo (Programa). Las reglas para formar identificadores son las siguientes:  Un identificador debe comenzar por una letra.  La primera letra puede ir seguida de: o Letras o Dígitos numéricos o Carácter guion bajo o subrayado ( _ )  No se permiten espacios en blanco. Al formar un identificador, existe diferencia entre mayúsculas y minúsculas. Ejemplos de identificadores correctos: Edad para representar la edad de una persona. Sup para representar la superficie de un terreno. Datos_1 para representar un dato cualquiera. Tipos de datos elementales Página 5

Manejo de Técnicas de Programación Todos los datos tienen un tipo asociado con ellos. Este tipo es importante porque por medio de él, la computadora los distingue y los trata. Numérico. Es el conjunto de los valores numéricos que el procesador sabe tratar. Pueden ser con o sin signo; enteros o reales. Ejemplos: 100 -100 2.718 3.14 Caracter. Es cuando se almacena uno y sólo uno del conjunto de caracteres (letras, dígitos y signos especiales). Los apóstrofes no forman parte del caracter. Ejemplos: ‘#’, ‘H’, ‘7’ Cadena. Es una secuencia de caracteres alfanuméricos que permiten representar valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc. Es posible representar números como alfanuméricos, pero estos pierden su propiedad matemática, es decir no es posible hacer operaciones con ellos. Este tipo de datos se representan encerrados entre comillas. Ejemplos: “Real Madrid”, “5 de mayo #66 int.3” Dentro de la cadena si hay espacios se los cuenta como caracter. Lógico. Son aquellos que solo pueden tener dos valores (cierto o falso) ya que representan el resultado de una comparación entre otros datos (numéricos o alfanuméricos). Variables y Constantes Variable Es una magnitud que puede cambiar su valor a lo largo de un proceso. En programación es una zona de memoria a la cual se le asigna un nombre con el fin de almacenar en ella un dato durante la ejecución de un proceso. En un instante concreto sólo puede tener un valor. Todas las variables son de un determinado tipo y sólo pueden tomar valores de ese tipo Por ejemplo: Sup = base * altura Las variables son Sup, base y altura Constantes Página 6

Manejo de Técnicas de Programación Son valores fijos que no se alteran durante un proceso. Existen diversos tipos de constantes: Numéricas enteras: 14, 1320 Numéricas reales: -1.18, 34.1002 De carácter: ‘a’, ‘*’ De cadena de caracteres: “Hoy es un bonito día”, “9731708” Operadores Son elementos que nos permiten manipular valores. Operadores aritméticos Se utilizan para realizar operaciones aritméticas básicas. Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. Operación Operador aritmético Ejemplo Suma + a+b Resta - 3-c Multiplicación * División / A * 3.21 División(Modulo) % X/2 exponenciación ^ X%2 A^3 Jerarquía de los operadores aritméticos Se refiere al orden en que la computadora efectúa las diferentes operaciones que se presentan en una expresión: Exponenciación ( ^ ) Multiplicación y división ( *, / ) Suma y resta ( +, - ) Esta jerarquía se ve alterada cuando en una expresión aparecen paréntesis, el contenido de los cuales se realiza primero. Por ejemplo, en la expresión 5 * ( 5 + ( 6 – 2 ) + 1) Página 7

Manejo de Técnicas de Programación Se realiza primero la operación 6 – 2 (el contenido de los paréntesis más internos) La expresión queda: 5 * ( 5 + 4 + 1 ) La siguiente operación que se lleva a cabo es el contenido de los paréntesis, en donde se encuentran dos operaciones de suma que tienen la misma jerarquía realizándose primero la suma de 5 + 4 debido a que la computadora evalúa las expresiones de izquierda a derecha, en seguida este resultado se suma a uno que es la siguiente operación indicada en el paréntesis. Después de lo anterior la expresión ha quedado: 5 * 10. Se realiza la multiplicación y el resultado final de la expresión es 50 Operador de asignación ( = ) Sirve para asignar el valor de la derecha a la variable situada a su izquierda. A una variable se le puede asignar: • Un valor constante • El valor de otra variable • El valor de una constante • El resultado de evaluar una expresión Los valores asignados deben ser del mismo tipo que la variable Por ejemplo: Grados = 18, Base = 3.21 Operadores de relación Se utilizan para establecer una relación entre dos valores. Compara estos valores entre si y esta comparación produce un resultado de certeza o falsedad (verdadero o falso). Los operadores relaciónales comparan valores del mismo tipo. Operación Operador Ejemplo Menor que < a<b Menor o igual que <= a <= b Igual que == a == b Mayor que > a>b Mayor o igual que >= a >= b Diferente que != a != b Operadores lógicos Página 8

Manejo de Técnicas de Programación Se utilizan para representar expresiones de relación compuestas. Operación Operador Ejemplo Y lógica And a > b and a > c O lógica Or x == y or x >= 3.23 Negación not not(w > t) El resultado de este tipo de expresiones es también un valor falso o verdadero. Funciones Intrínsecas Son herramientas que nos permiten realizar diversas actividades dentro de un programa. Estas funciones son proporcionadas por el lenguaje de programación y para utilizarlas solo es necesario su nombre así como los valores que necesita para trabajar (argumentos). Algunas de estas funciones se muestran en la siguiente tabla: Función Actividad abs(x) Valor absoluto de x arctan(x) Arco tangente de x cos(x) ln(x) coseno de x log10(x) Logaritmo natural de x pow(x,n) Logaritmo decimal de x sin(x) Exponenciación de x a la n sqrt(x) Seno de x Raíz cuadrada de x Expresiones Son combinaciones de constantes, variables, funciones y operadores. Según el tipo de objetos que manejan, las expresiones se clasifican en:  Expresiones aritméticas: Por ejemplo, la expresión: X = a  b  c , se representa en lenguaje algorítmico (utilizando 2 los operadores aritméticos) en la forma siguiente: X = (a + b + c ) / 2  Expresiones alfanuméricas: Página 9

Manejo de Técnicas de Programación Se utilizan operadores alfanuméricos y producen resultados de tipo alfanuméricos. Ejemplo: “Lic. “ + NOM El operador aquí usado: +, es el operador de concatenación (unión) de cadenas.  Expresiones relacionales  Expresiones lógicas Jerarquía de los operadores en general Todos los operadores de una expresión siguen el siguiente orden al evaluarlos: Jerarquía Operador 1 Paréntesis 2 3 Potencia 4 Multiplicación y División 5 6 Suma y Resta 7 Concatenación Relación Lógicos Cuando en una expresión aparece más de un operador de cualquier tipo, el orden de evaluación comienza por el operador de mayor prioridad; si dos o más operadores son de la misma prioridad se evalúan de izquierda a derecha. Operaciones de entrada y salida Se utilizan para intercambiar información con un medio externo. Operación de Entrada • Se le asigna a una variable un valor dado desde el exterior (p.ej. un teclado) Operación de Salida • Se transfiere el valor de una variable a un dispositivo de salida (p.ej. la pantalla Estructuras de control Página 10

Manejo de Técnicas de Programación En el diseño de algoritmos, toda acción se puede realizar utilizando tres estructuras básicas de control, la estructura secuencial, alternativa y repetitiva: Secuencial Una acción sigue a otra sin romper la secuencia Condicional Se realiza una acción u otra dependiendo del resultado de la evaluación de una expresión lógica Repetitiva, iterativa o en bucle Se repiten un conjunto de acciones 0 o más veces Programación Modular Consiste en dividir el programa en módulos. El problema se dividirá en forma lógica, en partes perfectamente diferenciadas que pueden ser analizadas, diseñadas, programadas y puestas a punto independientemente. La programación modular se basa en el diseño descendente (top-down) que permite comprobar el funcionamiento de cada módulo mediante módulos ya comprobados. El módulo está constituido por una o varias instrucciones físicamente contiguas y lógicamente encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes puntos de un programa. Un módulo puede ser: a) Un programa b) Una función c) Una subrutina (o procedimiento). Cada módulo sólo puede tener una entrada y una salida que lo enlazan con el módulo principal, incluso habiendo estructuras repetitivas y alternativas dentro de un módulo. Requisitos de la programación modular: a) Establecimiento de un organigrama modular b) Descripción del módulo principal c) Descripción de los módulos básicos o secundarios y d) Normas de la programación. Página 11

Manejo de Técnicas de Programación El organigrama modular se realiza mediante bloques, en el que cada uno corresponde a un módulo y muestra gráficamente la comunicación entre el módulo principal y los secundarios. El módulo principal debe ser claro y conciso, reflejando los puntos fundamentales del programa. Los módulos básicos deben resolver partes bien definidas del problema. Sólo pueden tener un punto de entrada y un punto de salida. Si un módulo es complejo de resolver, conviene se subdivida en submódulos. Ningún módulo puede ser llamado desde distintos puntos del módulo principal. Las normas de programación dependerán del análisis de cada problema y de las normas generales o particulares que haya recibido el programador. Las técnicas de programación modular aportan un método o filosofía para la descomposición eficaz de un problema en problemas o módulos más sencillos. Se pueden utilizar criterios de programación modular y posteriormente utilizar métodos de programación estructurada dentro de cada módulo independientemente. Una vez terminado el diseño de los programas de cada módulo, realizar el montaje del programa completo mediante un diseño ascendente. Programación Estructurada La programación estructurada fue desarrollada en sus principios por Dijkstra, al que siguieron una gran lista de nombres que realizaron lenguajes de programación adaptados a la aplicación directa de estas técnicas. La programación estructurada es una forma de programar con la cual la estructura de un programa (relaciones entre sus partes) resulta muy clara. Existen diversas definiciones de la programación estructurada que giran sobre el denominado Teorema de la estructura. Teorema de la estructura. Se basa en el concepto de diagrama o programa propio que consiste en que toda estructura tenga un solo punto de entrada y un solo punto de salida. “Todo diagrama o programa propio, cualquiera que sea el trabajo que tenga que realizar, se puede hacer utilizando tres únicas estructuras de control que son: Secuenciales, Selectivas y repetitivas” Página 12

Manejo de Técnicas de Programación Un programa estructurado es entonces:  Fácil de leer y comprender.  Fácil de codificar en una amplia gama de lenguajes y en diferentes sistemas.  Fácil de mantener.  Eficiente, aprovechando al máximo los recursos del computador.  Modularizable. En síntesis, se debe realizar un programa siguiendo técnicas o métodos estandarizados, los más empleados son: la programación modular y la programación estructurada. Estas técnicas suelen ser complementarias, ya que el análisis de un problema puede utilizar criterios de programación modular para dividirlo en partes independientes y utilizar métodos de estructuración en la programación de cada módulo. Todo ello, para evitar:  Programas muy rígidos con problemas de adaptación a nuevas configuraciones  Pérdida de tiempo en la corrección de errores  Difícil comunicación entre los programadores  Evitar que el programa tenga una relación estrecha con el programador que lo realizó  Modificaciones difíciles de hacer, implicando mucho tiempo y elevado coste de mantenimiento, lo que conduce a colocar “parches” que complican el diseño inicial o que el programa caiga en desuso, frente al elevado coste de actualización que al final se optará por crear una nueva aplicación que sustituya a la existente  Deficiencias en la documentación Diagramas de flujo Página 13

Manejo de Técnicas de Programación Es la representación gráfica de un algoritmo. Está formado por bloques de diferentes formas geométricas unidos por medio de flechas. Cada bloque representa un paso (una instrucción) del algoritmo. Las flechas indican el orden en que se llevan a cabo las operaciones (instrucciones). Símbolos más comunes para representar diagramas de flujo Símbolo Acción que representa Bloque de inicio o de fin. Indica el inicio o la terminación de un diagrama. Bloque de proceso. indica o describe la acción a ejecutar Bloque de lectura. Indica la entrada de información por cualquier medio. Bloque de decisión Indica una decisión. En base a esta el proceso sigue hacia un conjunto específico de instrucciones. Bloque de salida. Indica salida de información por medio de impresora. Bloque de control de ciclos. Indica la ejecución de un conjunto de instrucciones varias veces durante el programa. Página 14

Manejo de Técnicas de Programación Símbolos más comunes para representar diagramas de flujo (continuación) Símbolo Acción que representa Bloque para conexión Indica que el flujo se interrumpe y continúa en la misma página. Bloque para conexión Indica que el flujo se interrumpe y continúa en diferente página. Bloque de llamada a subprograma Bloque de decisión múltiple Indica una decisión. En base a esta el proceso sigue hacia un conjunto específico de instrucciones. ------- [ comentario Comentario Flechas Indican el flujo (orden) de las operaciones Página 15

Manejo de Técnicas de Programación Recomendaciones para el diseño de Diagramas de Flujo  Se deben de usar solamente líneas de flujos horizontales y/o verticales.  Se debe evitar el cruce de líneas utilizando los conectores.  Se deben usar conectores solo cuando sea necesario.  No deben quedar líneas de flujo sin conectar.  Se deben trazar los símbolos de manera que se puedan leer de arriba hacia abajo y de izquierda a derecha.  Todo texto escrito dentro de un símbolo deberá ser escrito claramente, evitando el uso de muchas palabras. Pseudocódigo Es una herramienta para representar algoritmos. No depende de un lenguaje de programación particular. Utiliza palabras y frases del lenguaje natural (en este caso: el español), y sujetas a determinadas reglas. La traducción de un algoritmo escrito en pseudocódigo a un programa en un lenguaje de programación determinado es relativamente simple. ALGORITMO nombre declaraciones INICIO instrucciones FIN La declaración de constantes y variables se realiza de la siguiente manera: Declaración de una constante: nombre valor Declaración de una variable: tipo nombre Página 16

Manejo de Técnicas de Programación Estructuras algorítmicas Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en: - Asignación Secuenciales - Entrada - Salida Estructuras Condicionales - Simples Algorítmicas - Múltiples Iterativas - Hacer para - Hacer mientras - Repetir hasta Operación de Asignación La forma general de esta operación es: Variable = expresión Por ejemplo: a = x + 45 Operación de entrada Esta operación se realizara por medio de la palabra especial LEER en la forma siguiente: LEER nombre_variable Donde: nombre_variable es la variable en la cual se almacenara el valor leído (de entrada) Operación de salida Esta operación se realizara por medio de la palabra especial ESCRIBIR en la forma siguiente: ESCRIBIR nombre_variable Donde: nombre_variable es la variable en la cual se encuentra almacenado el valor que se escribirá (de salida) Página 17


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook