You are on page 1of 24

Universidad Nacional de Lans

Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Clase 1 Introduccin
La resolucin de problemas con computadora
El objetivo final para el uso de una computadora es poder resolver un problema. Esto significa que solo el uso de las computadoras me garantizan la resolucin de los problemas?. La repuesta es categricamente NO. Lo que me permite el uso de la computadora es: Utilizar su velocidad. Asegura que se cumplirn siempre los pasos previamente definidos. Siempre que ingrese la misma informacin obtendr el mismo resultado. Manejar y controlar distintos dispositivos en forma automtica.

Todo problema que se resuelve por el uso de una computadora es el resultado de un trabajo que de alguna manera le indica a la computadora que debe hacer. Y como es que se le indica a la computadora que debe hacer? Si intentamos dar una rpida respuesta a esta pregunta deberemos considerar a la computadora como lo que realmente es:

una maquina.
Una maquina compuesta por distintos elementos (electrnicos, mecnicos, magnticos, etc.) interrelacionados entre si, que necesitan de una serie de instrucciones que controlan su funcionamiento.

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Esa serie de instrucciones es lo que conocemos por: PROGRAMA.

Un programa es una secuencia de instrucciones, definidas de una forma que puede ser interpretada por los circuitos propios de esa computadora a lo que llamamos: LENGUAJE.

Por lo cual vemos que pueden existir distintos tipos (o lenguajes) de programacin como distintos tipos de circuitos, caractersticas de computadoras existan.

Definamos que es Programacin?


Recordemos nuestra definicin inicial sobre: que es Programacin? Es el uso de tcnicas y procedimientos, que permiten la abstraccin necesaria para definir el problema y llegar a generar el algoritmo que lo resuelva, independientemente de donde se ejecute. Debe permitir su posterior codificacin a un lenguaje de programacin, que nuestro ordenador pueda interpretar, a fin de utilizar los recursos sistmicos para ejecutarlo y obtener el resultado esperado. Es decir, primero debo lograr la definicin del problema y la creacin del algoritmo, el cual debe ser genrico y permitir que el mismo pueda ser traducido al o los lenguajes de programacin utilizados por distintos ordenadores. En esta operacin se realiza la DIGRAMACION DEL ALGORITMO. Como vemos, existen componentes (ordenes e instrucciones) los cuales permiten a una maquina (ordenador) que entienda (interprete) y realice (ejecutar) la operacin esperada. Dichos componentes deben estar presentados en un lenguaje conocido por dicha maquina (lenguaje de programacin). En esta etapa se logra la CODIFICACION.

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Es decir, podemos ver que para cumplir esta definicin, sobre que es programacin, aparecen distintos conceptos: 1. ALGORITMO: conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute 2. LENGUAJE: diccionario de palabras, con sus reglas y relaciones , conocido como SOFTWARE 3. ORDENADOR: conjunto de: maquina, dispositivos y perifricos, conocido como HARDWARE Si bien algunos piensan que disear programas es un proceso totalmente libre y a criterio de quien lo encare, la realidad dista mucho de este concepto. En la actualidad existen metodologas y buenas practicas internacionales, reconocidas y auditadas y que deben ser cumplidas. Adems, dentro de la profesin de sistemas existen especialidades, que tienen certificaciones y normas reconocidas y aceptadas, que llevan a la utilizacin de mtodos y a realizar desarrollos que estn alineados con dichas normas de seguridad y calidad mundial. Todo esto sirve y ayuda a evitar las omisiones, repetir errores, reducir el tiempo de desarrollo y de resolucin de problemas, permitir mejores controles, etc., etc. Por lo cual podemos ver que existen pasos, fases o etapas que debemos cumplir, las cuales las podemos agrupar en: 1. 2. 3. 4. 5. 6. 7. Anlisis del problema. Diseo del algoritmo. Codificacin. Compilacin y ejecucin. Verificacin. Depuracin. Documentacin.

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Anlisis del Problema


Es el proceso mediante el cual sirve para recopilar e interpretar los hechos, diagnosticar problemas y utilizar estos hechos a fin de mejorar el sistema, en el anlisis se especifica que es lo que el sistema debe hacer y como alcanzar el objetivo, este trabajo lo realiza el Analista de Sistemas Consiste en definir claramente el problema, en unos casos requerir de conversaciones con el futuro usuario de la aplicacin, en otros de una lectura detenida de un ejercicio o de la reflexin y abstraccin de un experimento. Esta es la fase principal del desarrollo de la programacin posterior, pues sin un buen anlisis la programacin se convierte en una actividad intil y llena de complicaciones. Es primordial haber comprendido el problema que queremos trasladar y resolver por medio de la ayuda de una computadora. Por lo tanto, antes de emprender cualquier accin que resulte en decisiones o conclusiones, es importante contestarnos las siguientes preguntas acerca del problema que queremos resolver: 1- Tengo en claro los datos que necesito par resolver el problema, considerando que un dato es la minima unidad de informacin que utilizo como entrada de un algoritmo para crear mas informacin. 2- Puedo determinar claramente las relaciones que existen entre ellos 3- Identifico quienes generan esos datos 4- Se a quienes les debo enviar los resultados

Un lenguaje de programacin esta formado por un conjunto de sentencias representan rdenes dadas a la computadora con el fin de resolver un problema.

que

Llamamos resolucin de problemas a la formulacin de una determinada cantidad de pasos tendientes a cumplir con el objetivo preasignado. Por Ej.: si el problema fuera un clculo matemtico, al determinar que cuentas se debe realizar, en que orden y como presentar el resultado tendramos el problema resuelto

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

En la vida cotidiana, nos enfrentamos a un sin fin de problemas, que resolvemos en forma automtica. Pero cuando nos presentan el desafo de realizar una hoja de ruta, donde detallamos claramente y sin ambigedades las tareas que hacemos, con el fin que otra persona leyendo esa hoja las realice y con la condicin que solo realizara lo indicado en nuestra hoja, sin asumir ni considerar ningn conocimiento externo a la misma, es cuando descubrimos las dificultades de dicha tarea Si tuviramos que desarrollar la accin REALIZAR UNA LLAMADA TELEFONICA, todos diramos que la misma se describe claramente con las siguientes acciones: a. b. c. d. e. Camino hacia el telfono Tomo el telfono Marco el numero Cuando me responden realizo la conversacin Cuelgo

Pero, si bien esos son los pasos normales y entendidos por todos, no se si as si o les doy un telfono de principios del siglo 20, a manivela y horquilla, que por no conocer algunos detalles sobre su uso, a cada uno de nosotros se le complicaran las tareas de TOMAR y MARCAR, por lo cual deberamos ampliar la explicacin de las mismas. Tambin debemos considerar las excepciones o situaciones que pueden no llevar a realizar la llamada, por ejemplo f. Tomo el telfono pero el mismo no tiene tono, que hago? cuelgo?y si vuelvo a levantar y vuelvo a no tener tono, cuelgo otra ves?, cuantas veces repito esta operacin si me da el mismo resultado? Y despus que hago?, desisto de hacer la llamada o llamo al servicio tcnico? g. Marco el numero, y si me da ocupado , que hago? Cuelgo y desisto o cuelgo y vuelvo a llamar?, cuantas veces repito esta operacin?, hasta que me atiendan?, hasta que realice n llamadas? Cuantas? h. Y si quien me contesta no es la persona con quien quiero hablar? Que hago? Entiendo que existen ms situaciones que pueden ser usadas de ejemplo. Pero sirven para demostrar como algo que hacemos rutinariamente puede transformarse en una maraa de acciones y decisiones. Pero que debemos dejar muy en claro si quien debe seguir estas instrucciones, justamente, no tiene la capacidad de hacer o decidir algo que no este claramente y explcitamente indicado.

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Herramientas de esta etapa


Diagrama de flujo de datos (DFD por sus siglas en espaol e ingls) es una representacin grfica del "flujo" de datos a travs de un sistema de informacin. Un diagrama de flujo de datos tambin se puede utilizar para la visualizacin de procesamiento de datos (diseo estructurado) El desarrollo de un DFD ayuda en la identificacin de los datos de la transaccin en el modelo de datos. Durante el armado del DFD debemos abstraernos de como el sistema se instalara o los elementos tcnicos asociados a este punto. Los elementos que utiliza son: Proceso: Tambin conocido como burbuja o funcin. Muestra una parte del sistema, su funcin es trasformar entradas en salidas. Se suele representar por medio de un cuadrado Flujo de datos: Se representa por una flecha que entra o sale de un proceso, segn sea entrada o salida de datos. El flujo se utiliza para indicar, justamente, salidas o entradas de bloques de informacin de una parte del sistema a otra. Almacn de datos: Sirve para representar un paquete de datos en reposo, se representa generalmente por un par de lneas paralelas. Terminador: generalmente lo representaremos con un rectngulo, e indica una entidad externa, con la cual el sistema se comunica.

Especificaciones de proceso: son las descripciones a nivel de detalle de las acciones, relaciones y controles que se debe realizar en cada proceso. Existen diferentes mtodos de representacin, como ser: Diagrama de flujo o flowchart. Diagramas N-S Tablas de Decisin Formulas Algoritmos, que desarrollaremos en el curso de esta materia.

Diccionario de Datos: es en si una enumeracin precisa y consistente para la comprensin a nivel de negocios y a nivel de IT de todos los datos del sistema.

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Entes intervinientes en la Resolucin de Problemas


Estos conceptos pueden ser considerados como los elementos bsicos comunes a todos los problemas, por lo que me parece importante que nos pongamos de acuerdo con su significado. En general, si frente a un proceso, somos capaces de determinar y obtener todos y cada uno de estos, estaremos ms cerca de resolver el problema. Procesador: toda entidad capaz de comprender y ejecutar el trabajo para el cual fue seleccionado. Vemos que podemos considerar procesador tanto a una computadora, una personal o una mquina capaz de realizar la accin. Si consideramos procesador desde el punto de vista de la tecnologa informtica, podemos decir que es un trmino relativamente moderno, y viene a reemplazar al trmino Unidad Central de Proceso, como se lo conoca en la poca de los Mainframes o grandes computadoras. Actualmente podemos hablar de procesadores multi ncleos y de maquinas con varios procesadores, lo que lleva pasar del multi-threading al hiper-threading Ambiente: conjunto de todos los recursos necesarios para hacer un trabajo. Este es especfico para el trabajo que se ha de realizar y de la obtencin o no de los mismos depender la posibilidad de resolucin (o su imposibilidad) y la forma de adoptarla para hacerlo. En lo que hace a determinar el ambiente, volviendo al ejemplo de tomar un bao, podemos ver que para tomar un bao el ambiente debera tener todo lo necesario para ejecutar la accin (agua, jabn, ducha, etc.) Podra ocurrir que en lugar de ducha hubiese una baera, con lo cual, mi ambiente satisface en cuanto al objetivo del problema, pero tendra que variar la forma de tomar el bao (mi ambiente condicion la solucin elegida) En muchos casos escucharemos AMBIENTE como la referencia a distintos estadios de mi desarrollo, para lo cual existen equipos independientes, los cuales generan los ambientes en los cuales se ira desarrollando nuestro sistema. Desde un ambiente propio del programador, con los elementos focalizados en la programacin, conocido como AMBIENTE DE DESARROLLO Para que una vez que el proceso esta programado y probado de manera independiente por el programador, se pueda ensamblar con el resto de los procesos con los que interactuara, se lo pasa a un AMBIENTE DE TESTEO o PRUEBA, el cual simula las condiciones del ambiente real, pero con datos de prueba, por lo que la modificacin de los mismos y el anlisis de los resultados de estas operaciones son uno de los objetivos buscados, al igual que su relacin con el resto de los procesos.

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin Adems quien realiza las pruebas no es quien lo programo, esta operacin la realiza otra persona o grupo de personas. Por ultimo podemos considerar un AMBIENTE DE PRE-PRODUCCION, el cual si tiene las mismas condiciones que el ambiente definitivo y nos permite generar situaciones reales y de interaccin total con el resto de la arquitectura, evaluar si falto algn elemento y si todos los componentes estn en sus versiones correctas. Una vez confirmado el correcto funcionamiento en este entorno se promueve al prximo nivel, el cual es conoce como AMBIENTE OPERATIVO o PRODUCCION. Accin: es un evento que modifica el ambiente, ya sea generando nuevos recursos o modificando los existentes ya sea en valor o forma. Podramos considerar como acciones tanto: abrir una canilla, realizar un clculo matemtico, buscar un fichero, etc. Estas acciones pueden ser simples o complejas. Condicin: Afirmacin lgica que puede ser verdadera o falsa sobre el estado del problema en el momento de la observacin. Cuando tratamos con procesadores no humanos, no podemos permitirnos ambigedades, ya que provocaramos errores de interpretacin al carecer de la capacidad de razonar. Podramos preguntar si algo es blanco o negro, si llueve o hace fro, pero no podramos preguntar si est ms o menos nublado. Algoritmos: secuencia ordenada de acciones y condiciones que pueden ser ejecutadas por un procesador y que lleve a la solucin de un problema dado. Debemos tener en cuenta que las condiciones deben ser expresadas en forma Exacta para que no preste a confusiones. Estamos acostumbrados a considerar como Algoritmos a procedimientos matemticos pero la definicin en forma clara y exacta de cmo realizar una llamada telefnica tambin puede considerarse como un algoritmo. Sentencia: se puede definir como cada una de las acciones que contiene o realiza un algoritmo. Programa: puede definirse como un algoritmo codificado en un lenguaje compatible con la computadora. Metodologa: Se define como conjunto de tcnicas que nos permiten representar algoritmos. Estudia los puntos de vista para resolver un problema. (Tcnicas, Medios), son los puntos de vista que se deben adoptar para resolver algoritmos. Una vez que tengamos lo ms claramente posible las respuestas a las preguntas anteriores, ser mucho ms sencillo el diseo de los correspondientes algoritmos y programas. Por ejemplo el diagrama de flujo es una herramienta ideal para representar de forma grfica el proceso que debe seguir la aplicacin. En muchas ocasiones no es el propio programador el que hace el anlisis sino que son los analistas-programadores los que obtienen la mejor solucin al problema.

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin Quedndonos todava un termino, que usaremos en reiteradas veces, y que es el producto que debemos obtener, que es el: SISTEMA

Que es un Sistema?.
En el sentido ms amplio, un sistema es un conjunto de componentes, con un objetivo propio, que interactan para alcanzar un objetivo comn, razn y causa de la creacin del sistema. Utilizando informacin de entrada, procesando y transformando a la misma y obteniendo una nueva informacin de salida. En general, un sistema, debe interactuar con su medio ambiente. Del medio ambiente recibe estmulos, presiones, cambios, problemas y requiere que se adapte y modifique a fin de seguir logrando obtener el objetivo por el cual fue creado.

Entrada

Sistema

Salida

Medio ambiente

Un negocio es un claro ejemplo de un sistema. Sus partes tienen nombres tales como: marketing, produccin, ventas, contabilidad, investigacin y personal. Estos componentes trabajan todos juntos para crear una utilidad que beneficia a alguien, a los dueos o accionistas de la empresa

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin Ahora bien, cada una de estas partes es un sistema en si mismo. El dpto de contabilidad puede ser el lugar donde se analizen y procesen las cuentas por cobrar o por pagar, se emita la facturacin, se realicen los controles de auditoria, etc. Cuando se comienza a ver lo abundante que son los sistemas no sorprende darse cuenta que cada sistema del negocio depende de uno o ms entidades abstractas llamadas Sistemas de Informacin, Por medio de estos sistemas, los datos, pasan de una persona o departamento a otro y pueden servir de vnculos casi cualquier cosa, desde comunicaciones entre oficinas telefnicamente hasta un sistema de computadoras que genere informaciones peridicas para diferentes usuarios. Los sistemas de informacin, de hecho, sirven a todos los sistemas de un negocio, como se vera mas adelante. Ellos son el lazo que mantienen unidos a diferentes componentes en forma total para que puedan trabajar de manera efectiva hacia el mismo objetivo

Caractersticas de un sistema
El objetivo de un sistema es la razn de su existencia; para cumplir sus propsitos los sistemas interactan con su medio ambiente, es decir cualquier entidad que se site fuera de los lmites del sistema. Las fronteras separan los sistemas de su medio ambiente. Los sistemas que interactan con su medio ambiente reciben entradas y producen salidas, son los sistemas abiertos, en contraste con los sistemas que no interactan con sus alrededores y que se conocen como sistemas cerrados. El elemento de control se relaciona con la diferencia entre si los sistemas son abiertos o cerrados. Existen niveles aceptables de rendimientos llamados estndares. Los rendimientos reales se comparan contra los estndares. Las actividades que estn muy por encima o por debajo de estos estndares deben anotarse de manera que se puedan estudiar y se logran los ajustes necesarios. La informacin suministrada a travs de la comparacin de los resultados con los estndares y el informe de los elementos de control sobre las diferencias, se denominan retroalimentacin.

10

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin Para resumir, los sistemas utilizan un modelo de control bsico que consiste: 1. 2. 3. 4. Un estndar para rendimiento aceptable Un mtodo de medicin de ese rendimiento real Una forma para comparar el rendimiento real contra el estndar Un mtodo para retroalimentacin

Los sistemas que pueden ajustar sus actividades a niveles aceptables continuaran funcionando, los que no pueden hacerlo se detienen. El concepto de interaccin dentro de un medio ambiente que caracteriza a los sistemas abiertos es esencial para el control, por medio de la recepcin de la entrada y la evaluacin de la misma un sistema puede determinar cuan bien esta operado. Si un negocio por ejemplo, produce objetos o servicios caros o bajos en calidad la gente probablemente no lo comprara. Las cifras de ventas bajas por la retroalimentacin, que le indica a la gerencia? que necesita ajustar los productos y la manera de produccin para mejorar el rendimiento y ajustarse a las expectativas.

Sistemas de Negocios.
Todos los sistemas de produccin tienen semejanzas: Su propsito es producir bienes o productos que satisfagan las demandas que hay para ellos en el mercado. Para alcanzar este objetivo los sistemas interactan con su medio ambiente para: Adquirir los materiales necesarios, personal y conocimientos para producir bienes, ningunas de estas entradas se pueden omitir para que pueda continuar la produccin, los sistemas de produccin no podrn manufacturar muchos productos si los trabajadores faltan. Los sistemas de produccin tambin producen salidas que consisten en productos terminados, desperdicios, tecnologas de produccin, etc. Para continuar con su funcionamiento los sistemas de produccin deben de estar bajo control: por ejemplo cumplir con ciertos estndares de rendimientos. La cantidad de productos manufacturados debe cumplir con cuotas ya presupuestadas y alcanzar niveles aceptables de calidad y costos. Los gerentes continuamente vigilan los rendimientos reales y los comparan con la productividad planeada; si existen diferencias o la eficiencia est por debajo de las expectativas, se realizan cambios en este sentido Los sistemas de produccin son autorregula torios y auto ajustables: Remplazaran al personal, compraran nuevos equipos o modificaran los procedimientos si no es

11

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin satisfactorio el ajuste interno ;esto significa que hay muchas fallas , la calidad esta peligrosamente baja o los precios son poco razonables por lo tanto, las fuerzas reguladoras del medio ambiente intervendrn.

Los sistemas de produccin son subsistemas dentro de las grandes empresas y estn integradas por otros subsistemas para la adquisicin de materiales, mantenimiento de equipos y capacitacin de los trabajadores. Los sistemas de produccin son algunos de las muchas clases que existen ,aun cuando las caractersticas generales de todos los sistemas fueran parecidas. Se puede comenzar a examinar cualquier sistema con este marco de referencia en mente y aadir los detalles especficos conforme se necesiten o se aprendan.

Sistemas de Informacin
Los sistemas de informacin son, como cualquier otro sistema dentro de la empresa, en cuanto tiene propsitos de interactuar con otros componentes de la compaa. La tarea de los sistemas de informacin consiste en procesar la entrada, mantener archivos de datos en relacin con la empresa y producir informacin informes y otras salidas. Los sistemas de informacin estn integrados por subsistemas que incluyen el hardware, software y almacenamiento de los datos para los archivos y bases de datos. Procedimientos especficos describen los sistemas utilizados. El conjunto particular del subsistema, es decir, el equipo especifico, programa, archivos y procedimientos, comprenden una aplicacin del sistema de informacin. Por lo tanto, los sistemas de informacin pueden tener aplicaciones de compras, contabilidad o ventas. Dado que los sistemas de informacin dan apoyo a otros sistemas de la empresa, los analistas deben estudiar primero el sistema de la compaa como un todo y despus los detalles de los sistemas de informacin Con frecuencia el personal utiliza organigrama para describir las relaciones de los componentes de la empresa, como divisiones, departamentos, oficinas y personal.

12

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin Aunque los organigramas pueden mostrar las relaciones formales entre los componentes con cierta exactitud, no dicen como opera el sistema de negocios, dado que muchos detalles de importancia no se ponen en las cajas del diagrama. Ejemplos de otros datos en relacin con el sistema que son importantes para los analistas de sistemas incluye:

1.- Canales no formales: que interacciones existen entre el personal y los departamentos, pero que no aparecen en el organigrama o en los procedimientos de operacin previamente establecidos? 2.- Interdependencias: En que otros departamentos y componentes de la empresa se encuentra una dependencia especifica? 3.- El personal clave y las funciones: Cuales individuos y elementos del sistema son ms importantes para su existencia exitosa? 4.- Relaciones criticas de comunicaciones: Como circula la informacin y las instrucciones entre los componentes de la empresa y como interactan las diferentes reas con las dems?

Sistemas en lnea
Un sistema en lnea es aquel que acepta material de entrada directamente del rea donde se creo. Tambin es el sistema en el que el material de salida, o el resultado de la computacin, se devuelven directamente a donde es requerido. Generalmente los usuarios de estos sistemas interactan desde terminales, donde la distancia entre estas y el sistema puede ser considerable. Este tipo de sistemas permite recuperar el dato almacenado de manera individual, en contraposicin con los sistemas en lotes o batch , utilizados en los aos 60/70 los cuales necesitaban una bsqueda secuencial hasta encontrar el dato que se buscaba; Es por eso que en estos sistemas los datos pueden recuperarse, modificados o ambas cosas rpidamente y sin tener necesariamente que efectuar accesos a otros componentes de informacin del sistema.

Sistemas en tiempo real


Un sistema computacional de tiempo real puede definirse como aquel que controla un ambiente recibiendo datos, procesndolos y devolvindolos con la suficiente rapidez como para influir en dicho ambiente en ese momento. Decir con suficiente rapidez esta, desde luego, sujeto a muchas interpretaciones, si bien en sistemas bancarios, de bolsa o reservas, se espera que reaccionen en segundos, 13

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin estos tipos de sistemas estn pensados en reacciones de milisegundos, para ser utilizados en: Sistemas de control de procesos. Sistemas de cajeros automticos. Sistemas de alta velocidad de adquisicin de datos. Sistemas de gua de proyectiles. Sistemas de conmutacin telefnica. Sistemas de vigilancia de pacientes.

Sistemas de apoyo a decisiones y de planeamiento estratgico.


En los ltimos aos se desarrollaron sistemas que sirven para confrontar con decisiones tomadas por humanos u otros sistemas. Esto sistemas no toman decisiones por si mismos, sino ayuda a administradores o especialistas o trabajadores del conocimiento a tomar decisiones inteligentes. Podemos mencionar en esta categora, desde las tpicas planillas de clculo, hasta complejos sistemas de segunda opinin. Estos sistemas cumplen el proceso de aplicar en forma mecnica reglas de evaluacin provistas por el usuario. Y permite al usuario revisar la lgica de estas reglas y su validez.

Sistemas basados en el conocimiento.


La meta de los cientficos de la computacin que trabajan en el campo de la inteligencia artificial es producir programas capaces de imitar el desempeo humano en una gran variedad de tareas inteligentes. Estos sistemas contienen grandes cantidades de diversos conocimientos que emplean en el desempeo de una tarea dada. Los sistemas expertos son una especie de sistema basado en el conocimiento, aunque ambos trminos a menudo se utilizan indistintamente. Por lo que podemos ampliar y decir que un sistema experto es un programa de computadora que contiene conocimiento y la capacidad para desempearse en un nivel experto, es decir por ejemplo como el nivel de desempeo de un medico que llevan a cabo diagnsticos y procesos teraputicos o de fsicos u otras personas de gran experiencia que llevan a cabo tareas de ingeniera, de administracin o cientficas. El sistema experto es un apoyo de alto nivel intelectual para el experto humano lo cual explica su otro nombre, asistente inteligente. 14

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Principios Generales de Sistemas


Todos los ejemplos vistos hasta ahora tienen una cosa en comn: todos son sistemas. Si bien pueden diferir en algunas cosas, tambin poseen muchas caractersticas comunes. El estudio de estas caractersticas comunes se conoce como teora general de sistemas. Podemos hacer un resumen de estos Principios Generales de Sistemas, en el cual incluimos: Entre ms especializado sea el sistema, menos capaz es de adaptarse a circunstancias inteligentes. Cuanto mayor sea el sistema mayor es el nmero de sus recursos que deben dedicarse a su mantenimiento diario. Los sistemas siempre forman parte de sistemas mayores y siempre pueden dividirse en sistemas menores. Los sistemas crecen

15

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Diseo:
En la etapa de anlisis del proceso de programacin se determina el QUE, hace el programa. En la etapa de diseo se determina COMO hace el programa la tarea solicitada. En esta fase se traduce, por ejemplo a pseudocdigo, diagrama de flujo, Top-Down o a lenguaje natural la solucin al problema, si esta fase esta bien hecha, programar se convierte en una tarea sencilla y agradecida muy cercana a la traduccin de lenguas. Las especificaciones de diseo describen las caractersticas del sistema, los componentes o elementos del sistema y la forma como estos aparecern ante el usuario Para muchos usuarios el xito de un sistema esta relacionado con la idea que el sistema tenga las caractersticas adecuadas. Para evaluar la calidad de una presentacin del diseo, se deben establecer criterios tcnicos para un buen diseo como son:

Un diseo debe presentar una organizacin jerrquica que haga un uso inteligente del control entre los componentes del software. El diseo debe ser modular, es decir, se debe hacer una particin lgica del Software en elementos que realicen funciones y subfunciones especificas. Un diseo debe contener abstracciones de datos y procedimientos. Debe producir mdulos que presenten caractersticas de funcionamiento independiente. Debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los mdulos y el entorno exterior. Debe producir un diseo usando un mtodo que pudiera repetirse segn la informacin obtenida durante el anlisis de requisitos de Software.

Estos criterios no se consiguen por casualidad. El proceso de Diseo del Software exige buena calidad a travs de la aplicacin de principios fundamentales de Diseo, Metodologa sistemtica y una revisin exhaustiva. Cuando hablamos sobre que debemos disear, nos referimos a los siguientes elementos: Flujos de datos: movimientos de datos hacia, alrededor y desde el sistema. Almacenes de datos: conjuntos temporales o permanentes de datos. Procesos: actividades para aceptar, manejar y suministrar datos e informacin. Pueden ser manuales o basadas en computadoras.

16

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin Procedimientos: mtodos y rutinas para utilizar al sistema de informacin.

Controles: estndares y lineamientos para determinar en forma anticipada si las actividades se encuentran bajo control. Funciones del personal: las responsabilidades de todos los involucrados que tienen que ver con el nuevo sistema.

Como veremos estos elementos aparecen ms de una vez en muchas de las caractersticas de los sistemas de informacin. Por lo que todos estos elementos tienen la misma importancia al estructurar el diseo.

17

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Codificacin:
En esta fase se escribe, en el lenguaje de programacin que mejor se adapte a las necesidades de la aplicacin, el programa Hasta este punto la aplicacin es totalmente independiente del lenguaje de programacin, la plataforma, etc. A partir de esta fase la aplicacin toma toda su dimensin y pasa a tener una forma definida y unas limitaciones fruto de lenguaje de programacin y la plataforma escogidos. Caractersticas Deseables del Cdigo: Modularidad: Un cdigo escrito pensando en las funciones y que guarda la relacin Una funcin = un fichero Es un cdigo ms fcil de mantener, documentar y mejorar. Esto adems favorece la reutilizacin del cdigo en proyectos futuros. Por lo tanto la modularidad es la capacidad que tiene un sistema de ser estudiado, visto o entendido como la unin de varias partes que interactan entre s y que trabajan para alcanzar un objetivo comn, realizando cada una de ellas una tarea necesaria para la consecucin de dicho objetivo. Cada una de esas partes en que se encuentre dividido el sistema recibe el nombre de mdulo. Idealmente un mdulo debe poder cumplir las condiciones de caja negra, es decir, ser independiente del resto de los mdulos y comunicarse con ellos (con todos o slo con una parte) a travs de unas entradas y salidas bien definidas. Portable: Un cdigo escrito con la mentalidad de que sea ejecutado en distintas mquinas es un cdigo que tiene mayores probabilidades de subsistir en el tiempo y de ser reutilizado. El esfuerzo que en algunas ocasiones requiere la portabilidad se ve compensado con grandes ahorros de tiempo en cuanto el cdigo debe ser alterado o mejorado, que es durante la fase de operacin o mantenimiento, que es el momento donde se encontrara en la mayor parte de su vida. Bien comentado y documentado: Si el cdigo de una funcin no se inicia con una breve explicacin de que hace dicha funcin seguramente no podremos saber en un futuro que se hace y donde; por ello es deseable que el cdigo se comente con la intencin de ahorrar tiempo a la hora de documentar.

18

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin Adems por lo general si el cdigo esta bien comentado, documentarlo se reduce a copiar y pegar. Bien "Indentado": Un cdigo que no guarde los mrgenes con propiedad se suele convertir en un cdigo difcil de seguir y de depurar. Indentacin es un anglicismo (de la palabra inglesa indentation) y significa mover un bloque de texto hacia la derecha insertando espacios o tabuladores para separarlo del texto adyacente, lo que en el mbito de la imprenta se ha denominado siempre como sangrado o sangra. En los lenguajes de computacin, la indentacin se utiliza para mejorar la legibilidad del cdigo por parte de los programadores, teniendo en cuenta que raramente se consideran los espacios en blanco como sentencias de un programa. Sin embargo, en ciertos lenguajes de programacin como Haskell, Occa, y Python, la indentacin se utiliza para delimitar la estructura del programa permitiendo establecer bloques de cdigo. Son frecuentes discusiones entre programadores sobre cmo o dnde usar la indentacin, si es mejor usar espacios en blanco o tabuladores, ya que cada programador tiene su propio estilo. Vale aclarar que esta palabra no esta reconocida por la Real Academia de Lengua, y en su lugar se debera usar SANGRADO, pero por el uso y costumbre que tiene en la jerga informtica para nuestro curso la tomamos como valida. Por lo que siempre debemos intentar identificar o marcar los bloques de instruccin de esta manera que ayuda a la legibilidad del cdigo Legibilidad: Debe estar hecho de manera que se pueda leer fcilmente. Los lenguajes de ms alto nivel generalmente son los ms comprensibles, es decir son ms parecidos a nuestro lenguaje. El lenguaje C no es un lenguaje muy legible por su naturaleza, ya que permite programar a bajo nivel y tener un control casi total de la computadora. Modificabilidad: El programa fuente debe poder ser cambiado lo ms fcilmente posible. Recordemos que la mayor parte de la vida de un proceso la pasa en la etapa de operacin, y es en el momento que para que pueda seguir siendo til debe poder adaptarse a los cambios de negocios, de la empresa, reglamentaciones legales, nuevos mercados, etc.

19

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin La forma como fue pensado el mismo, nos facilitara o no esta etapa; por lo cual este concepto es de fundamental importancia al pensar en el proceso. Eficiencia: Dentro de lo posible, ya que por hacer un programa demasiado eficiente se nos pueden complicar otras cuestiones perjudicando alguna otra de las caractersticas aqu nombradas. Por ejemplo el utilizar determinadas sentencias y formas de programacin pueden ayudar a mejorar la eficiencia de nuestro programa, pero pueden ser contraproducentes si las mismas no son de uso comn entre los programadores o generan un cdigo que es complejo y denso para el momento que se necesite realizar alguna adaptacin o mejora. En este criterio es que se debe evaluar las mejoras de eficiencia con la complejidad que las mismas pueden generar. Estructuracin: Un algoritmo esta estructurado cuando su confeccin est basada en una pautas estructurales que no son otra cosa que el orden que hay que seguir al programar. Se deben evitar bajo todo punto de vista las ideas y vueltas hacia cualquier parte del cdigo sin que las mismas estn ordenadas por estructuras que nos facilitan el seguimiento de las mismas, es decir que permitan realizar operaciones del tipo recursivas pero que se autocontrolen con clusulas de escape y seguimiento de la estructura descendente del proceso.

Compilacin y ejecucin del programa:


Pasamos el cdigo escrito en un lenguaje concreto a un programa ejecutable slo en una plataforma concreta, de este modo obtenemos el producto final que se ha buscado desde el inicio del proceso. En esta fase se detectan los errores propios de las fases anteriores, a partir de aqu surgen los fallos de la fase de codificacin y si el programa esta mal diseado ser al ejecutar el programa cuando podremos ver si el programa funciona correctamente o no. Grficamente se puede representar con el siguiente diagrama de bloques: Problema Algoritmo Programa
Edicion

Programa codificado
Compilacin

Programa ejecutable 20

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin Un compilador es un programa que permite programar en un lenguaje de programacin determinado. Cada lenguaje de alto nivel, tiene su propio compilador. Al compilar a nuestro programa, le hacemos pasar por una serie de controles, que nos ayudan a identificar cualquier error que se hubiera cometido, principalmente a nivel semntico de las instrucciones que estamos usando. Nos controla la correcta declaracin de las variables as como las referencias que hacemos de los campos definidos Por eso es que, cada compilador, debe llevar una relacin directa con el lenguaje que tomara como fuente, dado que deber controlar las caractersticas del mismo. En cada compilacin nos indicara los errores y si el proceso esta listo para ejecutarlo. El fin de la compilacin es la generacin de un programa ejecutable que es el que nosotros ejecutamos o corremos en nuestro sistema.

Tipos de lenguaje de programacin


Existen dos tipos: El lenguaje Mquina: Es el lenguaje propio de la mquina, el nico que la computadora entiende. Simblicos: Palabras simblicas que especifican las instrucciones. Existen dos clases: 1. Ensamblador (BAJO NIVEL): Cada instruccin en este lenguaje equivale a una instruccin en el lenguaje maquina. 2. Lenguajes de Alto Nivel como pueden ser Cobol, Pascal, Fortran, Logo, Basic, Visual Basic, etc. Cada instruccin de un lenguaje de alto nivel equivale a muchas instrucciones del lenguaje mquina. Descripcin breve de los tipos de lenguaje de alto nivel: Cobol: Hace unos 20 aos que fue creado para gestionar informacin almacenada en archivos. Un lenguaje orientado a la gestin comercial.

21

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin Fortran: Es aun ms antiguo que Cobol, y fue creado para trasladar formulas con el objetivo de la resolucin de problemas de tipo cientfico. Pascal: Es el lenguaje que se utiliza normalmente para ensear a programar, es un lenguaje de uso general. Las versiones ms modernas posibilitan la programacin orientada a objetos. Logo: Lenguaje educativo, pensado para ensear a programar. ADA: Lenguaje desarrollado por una multinacional, para su uso privado, el cual esta pensado para programar muy estructuradamente. C: Esta pensado para funcionar a bajo y alto nivel, y por tanto tiene caractersticas propias de los lenguajes de bajo nivel, pensado principalmente para programas de tipo tcnico, tales como sistemas operativos, etc... Basic: Lenguaje destinado al usuario comn, de fcil comprensin, y pensado para computadores poco potentes. Visual Basic: Maneja la sintaxis normal de Basic, incorporando la capa de programacin visual, desarrollado para el entorno Windows.

Verificacin:
En esta fase se prueba si el programa hace todo aquello para lo que ha sido diseado y si se ajusta a las necesidades de los usuarios. Es recomendable que aqu los usuarios finales empiecen a probar a conciencia el programa. Para esta fase, se debe desarrollar una amplia gama de datos de test, valores normales de entrada, valores extraos de entrada que comprueben los limites del programa.

Depuracin:
Si el programa ha pasado todos los test de ejecucin, este es un buen momento para repasar el cdigo, el programa puede hacer aquello para lo que ha sido diseado pero quiz se pueda escribir en menos lneas o de forma ms elegante, por ello en esta fase es recomendable repasar el cdigo en busca de posibles mejoras. Resumiendo es el proceso de encontrar los errores y corregirlos o eliminarlos. Pueden producirse tres tipos de errores: 1. Errores de compilacin: Se producen en general por el mal uso de la sintaxis del lenguaje de programacin, por lo que la computadora no entiende la instruccin.

22

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin 2. Errores de ejecucin: Estos se producen porque las instrucciones pueden ser comprendidas por la computadora mas no pueden ejecutarlas. Por ejemplo: divisin por cero. 3. Errores lgicos: Se producen en la lgica del programa, y la fuente del error suele ser el diseo del algoritmo. Estos errores son los mas difciles de detectar, ya que el programa puede funcionar y no producir errores de compilacin ni de ejecucin, y solo advertir el error por la obtencin de resultados incorrectos. En este caso se debe volver a la fase de diseo del algoritmo, modificarlo, cambiar el programa fuente, y compilar y ejecutar

Documentacin:
Por lo general esta es una fase en la que se puede medir la calidad de un programa, si la documentacin es buena, esta fase ser muy breve y dar como fruto un manual que explicaran de forma breve y directa que hace el programa. Es deseable que la documentacin se escriba dentro del mismo cdigo como comentarios y que se haga al mismo tiempo que se escribe el cdigo con el fin de facilitar despus tanto su mantenimiento como la creacin de documentacin. o Documentacin Interna: Introduccin de texto en castellano, dentro del cdigo fuente, para aclarar cuestiones referentes al propio programa de forma que lo pueda entender otra persona que tenga que modificarlo. o Documentacin Externa: Instrucciones para usar el programa.

23

Universidad Nacional de Lans


Campus Virtual Carrera: Licenciatura en Informtica Educativa Materia: Tcnicas de Programacin

Resumiendo
En este capitulo hemos visto una introduccin a algunos de los trminos y conceptos usados en el mundo informtico. Enumeramos y describimos brevemente las distintas etapas o fases que existen para desarrollar un sistema Vimos los principales tipos de sistemas y sus caractersticas. Ahora, en el prximo capitulo, comenzaremos a ver el concepto de ALGORITMOS

24

You might also like