Copy Paste

32
1 ÍNDICE TEMA PÁGINA Introducción……………………………………………………………………...3 Desarrollo 1. Definiciones y conceptos generales 2. Problema ……………………………………………………………….4 3. Elementos y relaciones del problema……………………………………4 4. Herramientas computacionales para la solución de problemas……......4-5 5. Hardware………………………………………………………………..5-7 6. Sistema Operativo………………………………………………………..7 7. Programas de aplicación………………………………………………..7-8 8. Lenguajes de programación……………………………………………...9 9. Ciclo de desarrollo de Programas 10. Planteamiento del problema…………………………………………...10-13 11. Análisis del problema…………………………………………………..13 12. Elaboración de algoritmos……………………………………………...14 13. Codificación, edición y compilación………………….……..………… 16 14. Ejecución y depuración…………………………………………………17 15. Documentación………………………………………..………………..17

description

Este documento es chido GGG

Transcript of Copy Paste

Page 1: Copy Paste

1

ÍNDICE

TEMA PÁGINA

Introducción……………………………………………………………………...3

Desarrollo

1. Definiciones y conceptos generales2. Problema ……………………………………………………………….43. Elementos y relaciones del problema……………………………………44. Herramientas computacionales para la solución de problemas……......4-55. Hardware………………………………………………………………..5-7 6. Sistema Operativo………………………………………………………..77. Programas de aplicación………………………………………………..7-88. Lenguajes de programación……………………………………………...99. Ciclo de desarrollo de Programas10. Planteamiento del problema…………………………………………...10-1311. Análisis del problema…………………………………………………..1312. Elaboración de algoritmos……………………………………………...1413. Codificación, edición y compilación………………….……..…………1614. Ejecución y depuración…………………………………………………1715. Documentación………………………………………..………………..1716. Mantenimiento…………………………………………………………..1717. Expresiones y operadores 18. Asignación……………………………………………………………..18-1919. Operadores aritméticos………………………………………………...2020. Operadores relacionales………………………………………………….2021. Operadores lógicos……………………………………………………….2122. Precedencia de operadores y evaluación de expresiones………………21-2323. Técnicas de desarrollo de algoritmos

Page 2: Copy Paste

2

24. Diseño descendente…………………………………………………….2425. Refinación progresiva de solución26. Pseudocódigo y diagrama de flujo……………………………………24-2627. Prueba de escritorio……………………………………………………26

Cibergrafía……………………………………………………………………...26

Propósitos de la unidad (Introducción)

 Al finalizar la unidad el alumno aplicará la metodología de solución de problemas mediante la  construcción de algoritmos para formalizar el proceso de solución.

 

o Identifica los elementos que intervienen en los problemas y las relaciones entre ellos para obtener los resultados.

o Describe las características de las etapas que intervienen en la solución de problemas.

o Construye el algoritmo, el diagrama de flujo y el seudocódigo para los problemas planteados.

o Realiza la prueba de escritorio de los algoritmos desarrollados.

Page 3: Copy Paste

3

Definición y conceptos generales

¿Qué es un problema?

 Según el diccionario problema es: a) una cuestión que se trata de aclarar, b) proposición o dificultad de solución dudosa y  c) conjunto de hechos o circunstancias que dificultan la consecución de algún fin.

 Más aún problema es algo que preocupa; implica un  interrogante cuya respuesta es desconocida y que, en nuestro caso, se busca obtener.

 Estamos familiarizados a tratar de darle solución a los acontecimientos que nos rodean y en los que tenemos injerencia, si no podemos resolverlo comúnmente significa un problema para nosotros, entendiendo como problema todo aquello  a lo que no le encontramos una solución, lo consideramos un enigma o una cuestión no aclarada.

 Comúnmente sin darnos cuenta todos los días, los seres humanos al actuar, realizamos varias acciones y continuamos una serie de pasos o procedimientos que nos conducen a lograr un fin o resolver un problema.

Elementos y relaciones del problema.

Page 4: Copy Paste

4

Podemos decir que los elementos que constituyen un problema es todo aquello que afecta  e incide directamente en el flujo  de los pasos  o acontecimientos que nos llevan a realizar una actividad y lograr el fin propuesto.

En el  desarrollo de programas nuestros elementos son los datos con los que vamos a trabajar, número, texto, imagen, audio, video, y la relación de estos, nuestro problema depende directamente del resultado que queramos obtener. Entre menos elementos tengamos para trabajar más fácil será nuestro planteamiento del problema o los pasos a seguir, entre más elementos tengamos el planteamiento se volverá más complicado de obtener, y en caso de que los resultados nos exijan el empleo de muchos elementos, hay métodos  de programación que nos permiten obtenerlo de una manera estructurada y organizada.

Herramientas computacionales para la solución de problemas.

Las herramientas  computacionales que nos pueden auxiliar en la solución de los problemas que se nos presentan como datos multimedia[1], les llamamos programas[2], y lenguajes de programación, así como se nos presentan distintos tipos  de datos tenemos distintos tipos de programas y lenguajes para la resolución de problemas, a continuación brindamos una lista de estos:

 

o Compiladoreso Demostradores de teoremaso Editores de textoo Entornos de desarrollo integradoso Herramientas de desarrollo de videojuegoso Interpretadoreso Lenguajes de programacióno Sistemas de Control de Versiones

Hardware

El hardware se refiere a todos los componentes físicos (que se pueden tocar), en el caso de una computadora personal serían los discos, unidades de disco, monitor, teclado, la placa base, el microprocesador, etc. En cambio, el software es intangible, existe como información, ideas, conceptos, símbolos, pero no tiene sustancia. Una buena metáfora sería un libro: las páginas y la tinta son el hardware, mientras que las palabras, oraciones, párrafos y el significado del texto (información) son el software. Una computadora sin software sería tan inútil como un libro con páginas en blanco. 

Tipos de hardware

Page 5: Copy Paste

5

Se clasifica generalmente en básico y complementario, entendiendo por básico todo aquel dispositivo necesario para iniciar el funcionamiento de la computadora, y el complementario como su nombre lo dice sirve para realizar funciones específicas o más allá de las básicas.

Una computadora la podemos definir como una herramienta capaz de procesar datos programables y almacenar la información, aceptando datos de entrada, datos de programas  y  datos de salida, que se compone de dispositivos físicos propios de esta tecnología (dispositivos físicos, mecánicos y electrónicos) y secuencias de instrucciones que interactúan entre sí para una determinada función(algoritmos, lenguajes, ingeniería de software y sistemas operativos), reciben entradas (datos para su procesamiento), producen salidas (resultados del procesamiento), procesan información, y almacenan información.

Todo sistema de cómputo tiene componentes de hardware dedicados a estas funciones:

1. Periféricos de entrada2. Periféricos de salida3. Periféricos de entrada/salida4. Unidad central de procesamiento.5. Memoria.

 

Periféricos de entrada (I)

Son los que permiten al usuario que ingrese información desde el exterior. Entre ellos podemos encontrar: teclado, ratón (mouse), escáner, SAI (Sistema de Alimentación Ininterrumpida), micrófono, etc. 

Periféricos de salida (O)

Son los que muestran al usuario el resultado de las operaciones realizadas por el PC. En este grupo podemos encontrar: monitor, impresora, altavoces, etc.

Periféricos de entrada/salida (I/O)

Son los dispositivos que pueden aportar simultáneamente información exterior al PC y al usuario. Aquí se encuentran: módem (Modulador/Demodulador), unidades de almacenamiento (Discos duros, disquetes o floppy, ZIP, Memorias de pequeño tamaño, flash, etc.)

 Unidad Central de Procesamiento

La unidad central de procesamiento, CPU, ó simplemente el procesador. Es el componente en una computadora digital que interpreta las instrucciones y procesa los datos contenidos en los programas de computadora. Los CPU proporcionan la característica fundamental de la computadora digital, la programabilidad, y son uno de los componentes necesarios encontrados en los

Page 6: Copy Paste

6

ordenadores o computadores de cualquier tiempo, junto con el almacenamiento primario y las facilidades de entrada/salida. Es conocido como microprocesador el CPU que es manufacturado con circuitos integrados. Desde mediados de los años 1970, los microprocesadores de un solo chip han remplazado casi totalmente todos los otros tipos de CPU, y hoy en día, el término "CPU" es aplicado usualmente a algún tipo de microprocesador. 

Memoria

Corresponde a un conjunto de registros direccionables a través del bus de direcciones. Cada registro de está, se constituye por un determinado número de unidades básicas, bit, que a su vez constituyen una celda de almacenamiento. Sirve para almacenar programas datos o resultados.

En general podemos decir que la computadora trabaja con tres tipos de memoria:

o Memoria RAM (Random access Memory).- En español memoria de acceso aleatorio es un

dispositivo que permite el almacenamiento temporal de información para que la unidad de procesamiento central (CPU)  pueda ser capaz de ejecutar sus programas.

 

o Memoria ROM (Read Only Memory).- En español memoria de solo lectura, es un

dispositivo que permite el almacenamiento de la información del  BIOS de la computadora, es un programa que nos se puede borrar, y en donde se leen y se habilitan  todos los dipositivos periféricos conectados a la computadora.

o Memoria tipo CACHE. Es un espacio asignado en el disco duro para almacenar

información, que permite el rápido y fácil despliegue de está y de la ejecución de varios programas, es un tipo de memoria virtual.    

Hardware Gráfico

El hardware gráfico lo constituyen las tarjetas gráficas. Poseen su propia Unidad de Proceso (GPU) y memoria.

Sistema operativo.

Es un programa o conjunto de programas destinado a permitir la   comunicación del usuario con un computador y gestionar sus recursos de una forma eficaz. Comienza a trabajar cuando se enciende la computadora, y gestiona el hardware de la máquina desde los niveles más básicos. Los sistemas operativos más comunes son: Windows, Linux, Macintosh(MACOS), Unix, Solaris, Android.

Programas de aplicación.  

Antes de hablar de los programas de aplicación debemos dejar en claro el concepto de software el cual algunos autores lo definen como la parte intangible de una tecnología, la parte lógica y se define como el conjunto de instrucciones que interactúan entre sí para una determinada función.

Page 7: Copy Paste

7

Partiendo de este concepto, un programa, concepto desarrollado por Von Neumann en 1946, es un conjunto de instrucciones que sigue la computadora para alcanzar un resultado específico. El programa se escribe en un lenguaje de programación a partir de un diagrama de flujo diseñado con anterioridad.

Cuando se logra todo esto, se sabe que hay un programa, para realizar cada una y cada cual de las funciones específicas  para las cual fue diseñado y   de acuerdo a la función que realizan o a la aplicación que tiene los podemos clasificar como:

o PROGRAMA DE INGENIERÍA.-Utiliza una computadora principalmente para procesar

números( hacer operaciones aritméticas, resolver  ecuaciones algebraicas o trigonométricas, encontrar la solución de una ecuación diferencial, en general operaciones matemáticas)

o PROGRAMA DE PROCESAMIENTO DE PALABRAS.- Utiliza una computadora para

procesar texto( Moverlo, eliminarlo, justificarlo entre otras funciones)o PROGRAMA DE PROCESAMIENTO DE AUDIO.- Utiliza una computadora para

reproducir pistas de audio e introducir cualquier tono de sonido como datos.o PROGRAMA DE PROCESAMIENTO DE imágenes.- Utiliza una computadora para

manipular imágenes( crearlas, reducirlas ampliarlas, rotarlas entre otras funciones).

Utilerías

Son programas de servicios que sirven de apoyo al procesamiento de los trabajos. 

En informática, una utilidad es una herramienta que sirve de soporte para la construcción y ejecución de programas, en donde se incluyen las bibliotecas de sistema, middleware, herramientas de desarrollo, etc.

Page 8: Copy Paste

8

* UTILERIAS DEL SISTEMASe ejecutan bajo el control del sistema operativo y se utilizan para preparar algunos recursos usados por el sistema. Son de uso interno.

* UTILERIAS PARA ARCHIVOSManejan información de los archivos tales como imprimir, clasificar, copiar, etc.

* UTILERIAS INDEPENDIENTESRealizar funciones que se relacionan con la iniciación de dispositivos de Entrada/Salida, carga del sistema operativo, etc.

Algunos ejemplos de utilerias son winzip, reproductores de audio y video, grabadores de audio y video, antivirus, juegos, programas p2p, etc.

Lenguajes de programación

Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos, respectivamente. Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más.

Page 9: Copy Paste

9

Según la forma de ejecución

Lenguajes compilados

Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una corrida de compilación antes de procesar los datos de un problema.

Los compiladores son aquellos cuya función es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con código binario).

Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el código.

Lenguajes interpretados

Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante la corrida de compilación para utilizarlo en una corrida de producción futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el código objeto para utilizarlo posteriormente.

La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instrucción del ciclo tendrá que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en

Page 10: Copy Paste

10

tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). El intérprete elimina la necesidad de realizar una corrida de compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de producción.

Algunos ejemplos de lenguajes de programación son: Java, PHP, Pascal, .NET, C, C++, Basic, Algol, ADA, Cobol, ASP, etc,. 

Ciclo de desarrollo de programas

Planteamiento del problema

Un elemento fundamental en la solución de un problema lo es la variable, la cual puede ser de algún tipo de dato como “alfanumérica, numérica o alfabética.

Una variable es un dato cuyo valor cambia durante el desarrollo de un algoritmo, una variable consiste en un elemento al cual le damos un nombre y le asignamos un contenido o bien, le atribuimos un determinado tipo de información, el cual puede ser “alfabético o numérico”, las variables son consideradas como la base de la solución de problemas, en virtud de que son las encargadas de manipular la información durante la solución del problema.

Variable  → Nombre de la Variable → Contenido.

Ejemplo 1. 

1. Encuentra el contenido de una variable llamada “estación” haciendo referencia a las diferentes estaciones del año.

            Nombre de la variable      Contenido

 

                      estación               →    primavera

Page 11: Copy Paste

11

                      estación               →    verano

                      estación               →    otoño

                      estación               →    invierno

 

2. Encuentra el contenido de una variable llamada “pares” haciendo referencia a los números del 1 al 10.

Nombre de la Variable       Contenido

              pares                   →       2

              pares                   →       4

              pares                   →       6

              pares                   →       8

              pares                   →      10

 

 

3. Encuentra el contenido de una variable llamada “Terminal” haciendo referencia a los nombre de las estaciones de la línea del metro Rosario-Martín Carrera.

 

Nombre de la Variable         Contenido

                terminal           →  El Rosario

                terminal           →  Tezozomoc

                terminal           →  Azcapotzalco

                terminal           →  Ferrería

                terminal           →  Norte 45

                terminal           →  Vallejo

                terminal           →  Instituto Mexicano del Petróleo

                terminal           →  Lindavista

Page 12: Copy Paste

12

                terminal           →  18 de Marzo

                terminal           →  La Villa

                terminal           →  Martín Carrera

 

Ejemplo 2 (propuesto).

1      Encuentra el contenido de una variable llamada “Equipo” haciendo referencia a los equipos de futbol de la primera división.

2      Encuentra el contenido de una variable llamada “Nombre” y de otra llamada “Edad”, haciendo referencia a tus 5 mejores amigos.

3      Encuentra el contenido de una variable llamada “Ingresos”, haciendo referencia a 5 de tus familiares.

 

 Relaciones entre los elementos que conducen para obtener resultados.

Podemos observar que las variables las podemos relacionar entre sí a través de operaciones aritméticas suma, resta, multiplicación y división, (+,-,*,/),operaciones relacionales, operaciones lógicas o bien signos de agrupación, originando con ello una nueva variable que nos puede conducir al resultado deseado, un ejemplo de ello, sería lo siguiente.

Se definirán las variables  a y b.a="perro"  b="muerde"  Donde la variable que nosotros llamamos "a" posee un elemento de información de tipo texto que es "perro". Asimismo, la variable "b" contiene el valor "muerde".Podríamos dar origen a una  tercera variable que fuese la suma de estas dos:c=a+bSi se deseara observar el contenido  de la variable c:El resultado sería: “perro muerde”Otro ejemplo de ello podría ser si trabajamos con variables cuyo contenido serían números, por ejemplo.a=3b=4

Podríamos dar origen a una tercera variable que fuese la suma de estas dosc=a+bSi se deseara observar el contenido de la variable c.El resultado sería 7

Page 13: Copy Paste

13

 

La resolución de problemas (Análisis del problema)

“Para la resolución de un problema es conveniente aplicar un método. Un método es, fundamentalmente, una actitud, una estrategia, una filosofía, que frente a una situación problemática orienta en la búsqueda de una solución.

A continuación planteamos las diversas etapas de un método, aplicables a la resolución de problemas.

Uno: reconocimiento del problema. 

Los alumnos individualizan la situación problemática, vinculada al quehacer tecnológico, que despierta su curiosidad o interés, destacando las implicaciones  de orden técnico, científico, cultural, económico o social presentes en el caso.

Dos: formulación y análisis del problema.

Formulan en término de problema el caso individualizado en la etapa anterior. Esta formulación debe ser clara: explicitando los aspectos tecnológicos del problema, precisando los objetivos a alcanzar, buscando información y analizando el problema y las soluciones existentes. En este punto es importante investigar las técnicas distintas que se han utilizado para resolver el mismo problema o similares.

Tres: búsquedas de alternativas de solución

Generan alternativas para solucionar el problema, partiendo de los conocimientos con que cuentan o con los que pueden adquirir (nueva información, pruebas, contrastación de datos, etc.).

Cuatro: selección de la solución.

Seleccionar la solución que mejor se adapte a los objetivos planteados, teniendo en cuenta el marco económico y social en el que está inserto el problema.

Cinco: evaluación de la solución.

Verificar el comportamiento de la solución en un contexto global y ajustar su funcionamiento, optimizándola.

Page 14: Copy Paste

14

Seis: presentación de la solución.

Detallar la solución, el proceso que se siguio para lograrla, sus características técnicas (especificaciones, rendimiento, etc.) y justificar las ventajas que presenta.

El método presentado no se sigue en forma lineal, sino que entre las etapas hay retroalimentación que permite ir y venir entre cada una de ellas.

Elaboración de Algoritmos

En matemáticas, ciencias de la computación, y disciplinas relacionadas, un es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema. Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un estado final, obteniendo una solución. Los algoritmos son objeto de estudio de la algoritmia, y su definición queda formalizada por el modelo computacional de la Máquina de Turing.

Su importancia radica en mostrar la manera de llevar a cabo procesos y resolver mecánicamente problemas matemáticos o de otro tipo. Al igual que las funciones matemáticas, los algoritmos reciben una entrada y la transforman en una salida, comportándose como una caja negra. Sin embargo, para que un algoritmo pueda ser considerado como tal, debe ser determinista, tener un número finito de instrucciones y debe acabar. Por determinista se entiende que, si se sigue el mismo proceso más de una vez, se llega siempre al mismo resultado.

El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de programa. Mientras el primero es la especificación de un conjunto de pasos (operaciones, instrucciones, órdenes) orientados a la resolución de un problema, el segundo es ese conjunto de operaciones especificadas en un determinado lenguaje de programación y para un computador concreto, susceptible de ser ejecutado (o compilado o interpretado). Un algoritmo, estrictamente hablando, no puede ejecutarse hasta que se implementa, ya sea en un lenguaje de programación, en un circuito eléctrico, en un aparato mecánico, usando papel y lápiz, o en algún otro modelo de computación.

Page 15: Copy Paste

15

En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales muestran algoritmos para usar el aparato en cuestión o inclusive en las instrucciones que recibe un trabajador por parte de su patrón. También existen ejemplos de índole matemática, como el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para calcular el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un Sistema lineal de ecuaciones.

HERRAMIENTAS PARA EL DISEÑO DE ALGORITMOS

Las dos herramientas más utilizadas para diseñar algoritmos son el Pseudocódigo y el Diagrama de flujo.

1. Pseudocódigo

Es un lenguaje simplificado para describir un algoritmo utilizando una mezcla de frases en lenguaje común, y palabras claves que indican el inicio y el fin del algoritmo y las instrucciones específicas a realizar.

Por ejemplo, el siguiente pseudocódigo corresponde al algoritmo para calcular el área del rectángulo: el algoritmo calcula el área (a) de un rectángulo cualquiera, si se le suministra la longitud de de la base (b) y la longitud de la altura (h).

Las palabras subrayadas se llaman palabras reservadas, se deben utilizar sangrías que facilitan la lectura del algoritmo Las instrucciones en pseudocódigo son fáciles de codificar en un lenguaje de programación.

2. Diagrama de flujo

El diagrama de flujo es la representación gráfica de un algoritmo; para ello se utiliza un conjunto de símbolos estándares mundialmente utilizados y desarrollados por organizaciones tales como ANSI (American National Institute) e ISO (International Standard Organization para la elaboración de diagramas de flujo;

En el diagrama cada símbolo representa una acción en concreto; y cada instrucción del algoritmo se visualiza dentro del símbolo adecuado. Los símbolos se conectan con flechas para indicar el orden en que se ejecutan las instrucciones.

Page 16: Copy Paste

16

Codificación  

Una vez que hemos resuelto el problema podemos pasar a codificar la solución, creando un archivo o un conjunto de archivos que contengan el código fuente. Para ello se necesita un programa editor que permita escribir y guardar nuestro programa. En las prácticas se va a utilizar el editor que proporciona el entorno de desarrollo Codelite, pero vale cualquier editor que utilice el conjunto de caracteres que admite un compilador de C. Durante la codificación es muy habitual incorporar código disponible en bibliotecas software, que puede haber sido desarrollado por el propio programador o por terceros. La reutilización es un aspecto fundamental del desarrollo software. Los lenguajes de programación establecen mecanismos para importar y utilizar dichas librerías aunque no estén disponibles los archivos con su código fuente.

Es importante, aunque no necesario para que un programa funcione, seguir unas “buenas prácticas” de programación a la hora de escribir el código. Las primeras “buenas prácticas” que debe aprender son:

•  Utilizar nombres significativos para variables y funciones, evitando nombres que no ayuden a entender el propósito de una variable o función. Hilando más fino, se recomienda utilizar sustantivos para los nombres de variables y verbos para las funciones.

•  Documentar adecuadamente el código. No se trata de documentar hasta la última declaración de variable, pero sí aquellos detalles que ayudan a entender por qué se ha escrito ese código. La documentación es esencial para entender o modificar código fuente.

 

Compilación y ensamblado del programa  

El programa que hemos editado es código fuente y no puede ser ejecutado directamente por ningún computador: es necesario traducirlo a código máquina. Para ello necesitamos un compilador o un intérprete. Existen lenguajes de programación, como C, en que el código fuente es traducido por un compilador a código máquina y se genera un archivo directamente ejecutable. La figura 2 muestra el proceso completo de generación de un programa ejecutable en C a partir del código fuente. Otros lenguajes, como Java, se compilan a un lenguaje intermedio (que en el caso de Java se denomina bytecode) que posteriormente es interpretado y ejecutado por un programa especial que se denomina intérprete. Además, los programas habitualmente no se encuentran en un único archivo, sino distribuidos en muchos, que deben ensamblarse para dar lugar a un programa ejecutable. La obtención de un programa ejecutable implica, por un lado, la traducción de los archivos en código fuente a archivos con código objeto y, por otro, el ensamblado de los archivos con código objeto.

 

Ejecución, prueba y depuración del programa  

Page 17: Copy Paste

17

Dependiendo del lenguaje y de la plataforma de ejecución que utilicemos, para ejecutar un programa puede bastar con escribir su nombre como un comando en una consola o hacer doble clic en un icono o puede ser necesario utilizar algún programa auxiliar que lance al nuestro. En cualquier caso, que nuestro programa sea capaz de ejecutarse no significa que realice correctamente la tarea que tiene encomendada. En programación es muy difícil acertar a la primera. Normalmente es necesario ejecutar el programa una y otra vez hasta conseguir detectar y corregir todos sus fallos. Existen técnicas para probar los programas de forma exhaustiva y utilidades (depuradores) que ayudan a detectar y corregir los errores de programación. Los errores de programación se clasifican en:

•Errores de compilación (sintácticos). Detectados por el compilador cuando el código fuente no se ajusta a lenguaje C. Ejemplos: falta de de paréntesis, llaves, punto y coma al final de cada línea, utilización de palabras reservadas como identificadores, etc.

• Errores en tiempo de ejecución (semánticos). El programa compila pero no resuelve correctamente el problema, su comportamiento no se ajusta al esperado, el programa “se cuelga”, etc. Estos errores son generalmente difíciles de detectar, ya que el compilador no ayuda a detectarlos. Hay que recurrir al uso de técnicas de depuración, como la impresión de trazas del funcionamiento del programa, y al uso de programas depuradores.

Documentación

La documentación de un producto software debe servir para enseñar a los usuarios a utilizarlo y ayudar a los programadores a desarrollarlo y mantenerlo y se debe realizar utilizando técnicas estructuradas como diagramas de flujo, algoritmos, diagramas nassi-schneiderman y seudocódigo. 

Mantenimiento

El mantenimiento de un producto de software es efectuado rutinariamente a lo largo de su vida para reparar defectos (mantenimiento correctivo), adaptarlo a los cambios en su entorno operativo o extender y/o modificar su funcionalidad.

Mantenimiento correctivo:

Comienza tras la detección de un error y su corrección podría requerir revisar todas las fases del desarrollo de software, pero si el proceso se realizó correctamente, la corrección sólo se realizará en la fase de codificación., Entonces se tendría que pasar al proceso de depuración del código, que consiste en reproducir el error, diagnosticar la causa, corregir el error y verificar la corrección y, una vez que se ha realizado el cambio, actualizar la documentación externa.

Expresiones y Operadores

Asignación  

La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona

Page 18: Copy Paste

18

será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma:

o Simples: Consiste en pasar un valor constante a una variable (a 15)o Contador: Consiste en usarla como un verificador del numero de veces que se realiza un

proceso (a a + 1)o Acumulador: Consiste en usarla como un sumador en un proceso (a a + b)o De trabajo: Donde puede recibir el resultado de una operación matemática que involucre

muchas variables (a c + b*2/4).En general el formato a utilizar es el siguiente:

< Variable >    ←  <valor o expresión >

El símbolo    ←  debe leerse “asigne”.

Escritura o salida de datos

Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Esta instrucción presenta en pantalla el mensaje escrito entre comillas o el contenido de la variable. Este proceso se representa así como sigue:

Lectura o entrada de datos

La lectura o entrada de datos consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor o dato. Este dato va a ser almacenado en la variable que aparece a continuación de la instrucción. Esta operación se representa así:

Declaración de variables y constantes

Page 19: Copy Paste

19

La declaración de variables es un proceso que consiste en listar al principio del algoritmo todas las variables que se usarán, además de colocar el nombre de la variable se debe decir qué tipo de variable es.

Contador:   ENTERO Edad, I:   ENTERO

Direccion: CADENA DE CARACTERES

Salario_Basico:REAL Opcion:CARACTER 

En la anterior declaración de variables, Contador, Edad e I son declaradas de tipo entero; Salario_Basico es una variable de tipo real, Opcion es de tipo carácter y la variable Direccion está declarada como una variable alfanumérica de cadena de caracteres.

En el momento de declarar constantes debe indicarse que lo es y colocarse su respectivo valor.

CONSTANTE: Pi=3.14159

 CONSTANTE: Msg= “Presione una tecla para continuar”

CONSTANTE: ALTURA= 40

Cuando se trabaja con algoritmos por lo general no se acostumbra a declarar las variables ni tampoco constantes debido a razones de simplicidad, es decir, no es camisa de fuerza declarar las variables. Sin embargo en esta unidad lo haremos para todos los algoritmos que realicemos, con esto logramos hacerlos más entendibles y organizados y de paso permite acostumbrarnos a declararlas ya que la mayoría de los lenguajes de programación (entre ellos el PASCAL y C++) requieren que necesariamente se declaren las variables que se van a usar en los programas.

OperadoresOperadores aritméticos Los operadores aritméticos son aquellos que me permiten relacionar variables con la ayuda de operaciones aritméticas.

Operador Significado

+ Suma

- Resta

Page 20: Copy Paste

20

* Multiplicación

/ División

** Exponenciación

 Operadores relacionales

Los operadores relacionales son aquellos que me permiten relacionar variables con la ayuda de operaciones relacionales. 

Operador Significado

> Mayor que

>= Mayor o igual que

< Menor que

<= Menor o igual que

= Igual

<> Diferente

 

Operadores lógicos

Los operadores lógicos son aquellos que me permiten relacionar variables con la ayuda de operaciones lógicas.

 

Operador Significado

Page 21: Copy Paste

21

Or O

And Y

Not No

Precedencia de operadores y evaluación de expresiones

Elaboración de Algoritmos

Veamos algunos ejemplos donde se aplique todo lo que hemos visto hasta el momento sobre algoritmos:

Técnicas de desarrollo de algoritmos.

A continuación se presentan una serie de técnicas que se siguen para la elaboración de los algoritmos que nos conducen a la solución de problemas de diversos tipos.

Estructuras Secuenciales

La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. 

Secuencial

Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el número de renglón. Es decir que las instrucciones se ejecutan de arriba hacia abajo.

Instrucción1

Instrucción2

Instrucción3

Instrucciónn

 

En Pseudocódigo una Estructura Secuencial se representa de la siguiente forma:

Page 22: Copy Paste

22

Observa el siguiente problema de tipo cotidiano y sus respectivos algoritmos representados en Pseudocódigo y en diagrama de flujo:

• Problema. Tengo un teléfono y necesito llamar a alguien pero no sé como hacerlo.

El ejemplo anterior, es un sencillo algoritmo de un problema cotidiano dado como muestra de una estructura secuencial.

Ejemplo 1: Escriba un algoritmo que acepte dos números y muestre como resultado la suma de estos. Use Pseudocódigo y diagrama de flujo.

Page 23: Copy Paste

23

 

Ejemplo 2: Escriba un algoritmo que permita conocer el área de un triángulo a partir de la base y la altura. Exprese el algoritmo usando Pseudocódigo y diagrama de flujos.

Técnicas de desarrollo de algoritmos

Diseño Descendente

La metodología de diseño descendente de programas consiste en:

Page 24: Copy Paste

24

1) Definir una solución de un problema en términos de la composición de soluciones de problemas que a priori son más sencillos de resolver, o de esquemas de solución ya conocidos. 2) La primera solución del problema corresponderá a una composición de acciones sobre los objetos al más alto nivel de abstracción, es decir, a los involucrados en la especificación del problema. 3) Aplicar refinamiento sucesivo, el cual consiste en refinar tanto las acciones como los datos hasta conseguir que el algoritmo inicial se convierta en un programa.

Refinación progresiva de solución

Pseudocódigo y diagrama de flujo

Pseudocódigo (falso léxicas y lenguajes de programación, pero sin llegar a la rigidez de semántica, normalmente se utiliza en las fases de análisis o diseño de algoritmo. Forma parte de las distintas herramientas de la compilador o programación estructurada.

Diagrama de flujo

El diagrama de flujo representa la forma más tradicional, practica, segura, universal, sistemática, independiente, sentimental y duradera para especificar los detalles algorítmicos de un proceso. Se utiliza principalmente en programación, economía y procesos industriales; estos diagramas utilizan una serie de símbolos con significados especiales. Son la representación gráfica de los pasos de un proceso, que se realiza para entender mejor al mismo. Son modelos tecnológicos utilizados para comprender los rudimentos de la programación lineal.

Otra definición del diagrama de flujo es:

"Es un esquema para representar gráficamente un algoritmo. Se basan en la utilización de diversos símbolos para representar operaciones específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan por medio de flechas para indicar la secuencia de operación. Para hacer comprensibles los diagramas a todas las personas, los símbolos se someten a una normalización; es decir, se hicieron símbolos casi universales, ya que, en un principio cada usuario podría tener sus propios símbolos para representar sus procesos en forma de Diagrama de flujo. Esto trajo como consecuencia que sólo aquel que conocía sus símbolos, los podía interpretar. La simbología utilizada para la elaboración de diagramas de flujo es variable y debe ajustarse a un patrón definido previamente."

Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona.

Page 25: Copy Paste

25

 

 

No es necesario usar un tipo especial de símbolos para crear un diagrama de flujo, pero existen algunos ampliamente utilizados por lo que es adecuado conocerlos y utilizarlos, ampliando así las posibilidades de crear un diagrama más claro y comprensible para crear un proceso lógico y con opciones múltiples adecuadas. Se utilizan los símbolos indicados a continuación, estandarizados según ISO 5807:

o Flecha. Indica el sentido y trayectoria del proceso de información o tarea.o Rectángulo. Se usa para representar un evento o proceso determinado. Éste es controlado

dentro del diagrama de flujo en que se encuentra. Es el símbolo más comúnmente utilizado. Se usa para representar un evento que ocurre de forma automática y del cual generalmente se sigue una secuencia determinada.

o Rombo. Se utiliza para representar una condición. Normalmente el flujo de información

entra por arriba y sale por un lado si la condición se cumple o sale por el lado opuesto si la condición no se cumple.el rombo además especifica que hay una bifurcación

o Círculo. Representa un punto de conexión entre procesos. Se utiliza cuando es necesario

dividir un diagrama de flujo en varias partes, por ejemplo por razones de espacio o simplicidad. Una referencia debe de darse dentro para distinguirlo de otros. La mayoría de las veces se utilizan números en los mismos.

Existen además un sin fin de formas especiales para denotar las entradas, las salidas, los almacenamientos, etcétera.

De acuerdo al estándar ISO, los símbolos e incluso las flechas deben tener ciertas características para permanecer dentro de sus lineamientos y ser considerados sintácticamente correctos. En el caso del círculo de conexión, se debe procurar usarlo sólo cuando se conecta con un proceso contenido dentro de la misma hoja. Existen también conectores de página, que asemejan a una casita y se

Page 26: Copy Paste

26

utilizan para unir actividades que se encuentran en otra hoja. En los diagramas de flujo se presuponen los siguientes aspectos:

o Existe siempre un camino que permite llegar a una solución.o Existe un único inicio del proceso.o Existe un único punto de fin para el proceso de flujo, salvo del rombo que indica una

comparación con dos caminos posibles y además una gran ayuda.A su vez, es importante que al construir diagramas de flujo, se observen las siguientes recomendaciones:

o Evitar sumideros infinitos, burbujas que tienen entradas pero no salidas.o Evitar las burbujas de generación espontánea, que tienen salidas sin tener entradas, porque

son sumamente sospechosas y generalmente incorrectas.o Tener cuidado con los flujos y procesos no etiquetados. Esto suele ser un indicio de falta de

esmero, pero puede esconder un error aún más grave: a veces el analista no etiqueta un flujo o un proceso porque simplemente no se le ocurre algún nombre razonable.

Prueba de Escritorio

Consiste en  dar valores a las variables que hemos definido y que siguen  el flujo del programa para comprobar  si al final el resultado es el acertado. 

Por ejemplo: - No ingresar un dato  de nacimiento que sea mayor que la fecha actual.- No ingresar un número negativo donde deber ir uno positivo o sin decimales;- No ingresar un valor numérico donde solo debe ir texto;- No ingresar un valor fuera del rango establecido;etc.,

En casos de generar algun  error, el programa tendra que  enviar al usuario  un mensaje indicándole esto y dándole la oportunidad de corregir.

Cibergrafía

http://tupcmaestra.galeon.com/

http://es.ccm.net/contents/304-lenguajes-de-programacion

http://aprendizajealgoritmos.blogspot.mx/2011/02/metodologia-de-solucion-de-problemas_16.html