33 lenguajes programacion.docx

48
UNIVERSIDAD NORORIENTAL PRIVADA “GRAN MARISCAL DE AYACUCHO” FACULTAD DE INGENIERÍA NUCLEO BARCELONA EDO.ANZOATEGUI ASIGNATURA: Introducción a la Programación Sede Barcelona Profesor: Bachilleres: Arneodo Iscarndar José García V-18.766.104 Corintia Cortez V-22.191.201 Introd ucción al lengua je

Upload: anagretgarciasabino

Post on 08-Sep-2015

223 views

Category:

Documents


1 download

TRANSCRIPT

UNIVERSIDAD NORORIENTAL PRIVADAGRAN MARISCAL DE AYACUCHOFACULTAD DE INGENIERANUCLEO BARCELONA EDO.ANZOATEGUIASIGNATURA: Introduccin a la ProgramacinSede Barcelona

Introduccin al lenguaje

Profesor: Bachilleres:

Arneodo Iscarndar Jos Garca V-18.766.104 Corintia Cortez V-22.191.201 Braiam Guzmn V- 25.062.829

INTRODUCCION

Se puede decir que la programacin es la proyeccin, planificacin o ejecucin de una tarea o proceso, es decir describir lo que debe hacer la computadora para resolver un problema concreto utilizando un determinado lenguaje de programacin .Estos lenguajes son herramientas las cuales nos permiten crear programas; existen varios tipos de lenguajes.El siguiente trabajo de investigacin nos ayudar a profundizar nuestros conocimientos sobre el mencionado tema y aprender la verdadera esencia de la programacin que es tan importante para la vida cotidiana, las matemticas, la ciencia en toda su extensin y por supuesto para la ingeniera en general.

1. ELDIAGRAMA DE FLUJO(DIAGRAMA DE ACTIVIDADES)

1.1. Definicin Es larepresentacin grficadel algoritmoo proceso. Se utiliza en disciplinas comoprogramacin,economa,procesos industrialesypsicologa cognitiva.1.2. Caractersticas

De uso: permite facilitar su empleo. De destino: permite la correcta identificacin de actividades. De comprensin einterpretacin: permite simplificar su comprensin. Deinteraccin: permite el acercamiento ycoordinacin. De simbologa: disminuye la complejidad y accesibilidad. De diagramacin: se elabora con rapidez y no requiere derecursossofisticados.

1.3. Ventajas de los Diagramas de flujo Favorecen la comprensin del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy fcilmente los dibujos. Un buen diagrama de flujo reemplaza varias pginas de texto.

Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos, los flujos de los re-procesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisin.

Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el anlisis de las mismas.

Son una excelente herramienta para capacitar a los nuevos empleados y tambin a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.

Al igual que elpseudocdigo, el diagrama de flujo con fines de anlisis dealgoritmosdeprogramacinpuede ser ejecutado en un ordenador, con unIDEcomo Free DFD.

1.4. Tipos de diagrama de flujo

De primer nivel o dedireccindescendente.

Muestralos pasos principales de un proceso y puede incluir tambin los resultados intermedios de cada paso (elproductooservicioque se produce) y los subpasos correspondientes. Este tipo de flujograma se usa por lo general para obtener un panorama bsico del proceso e identificar los cambios que se producen en el proceso. Es sumamente til para identificar los miembros correctos para el equipo (aquellas personas que participan en el proceso) y para elaborarindicadorespara observar y seguir el proceso por su concentracin en los resultados intermedios.

De segundo nivel o detallado:

Indica los pasos o actividades de un proceso e incluye, por ejemplo, puntos de decisin, perodos de espera, tareas que se tienen que volver a hacer con frecuencia (repeticin de tareas o tareas duplicadas) y ciclos de retroalimentacin. Este tipo dediagrama de flujoes til para examinar reas del proceso en forma detallada y para buscarproblemaso aspectos ineficientes.

De Ejecucin o matriz:

Representa en forma grfica el proceso en trminos de quin se ocupa de realizar los pasos. Tiene forma dematrize ilustra los diversos participantes y el flujo de pasos entre esos participantes. Es muy til para identificar quin proporciona los insumos oserviciosa quin, as como aquellas reas en las que algunas personas pueden estar ocupndose de las mismas tareas.

Formato vertical: En l, el flujo y la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la informacin que se considere necesaria, segn su propsito.

Formato horizontal: En l, el flujo o la secuencia de las operaciones, va de izquierda a derecha.

Formato panormico: El proceso entero est representado en una sola carta y puede apreciarse de una sola mirada mucho ms rpido que leyendo el texto, lo que facilita su comprensin, aun para personas no familiarizadas. Registra no solo en lnea vertical, sino tambin horizontal, distintas acciones simultneas y la participacin de ms de un puesto o departamento que el formato vertical no registra.

Formato Arquitectnico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectnico del rea de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

1.5. Simbologa y significado

valooElipse: Inicio y trmino (Abre y cierra el diagrama).

Rectngulo: Actividad (Representa la ejecucin de una o ms actividades o procedimientos).

Rombo: Decisin (Formula una pregunta o cuestin).

Crculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).

Tringuloboca abajo: Archivo definitivo (Guarda un documento en forma permanente).

Tringulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento)

1.5.1. CursogramaSe trata de la ms comn y prctica entre todas las clases de flujogramas. Describe el flujo de informacin en un ente u organizacin, sus procesos, sistemas administrativos y de control. Permite la impresin visual de los procedimientos y una clara y lgica interpretacin. Simbologa y normas del cursograma Crculo: Procedimiento estandarizado. Cuadrado: Proceso de control. Lnea continua: Flujo de informacin va formulario o documentacin en soporte de papel escrito. Lnea interrumpida: Flujo de informacin va formulario digital. Rectngulo: Formulario o documentacin. Se grafica con un doble de ancho que su altura. Rectngulo Pequeo: Valor o medio de pago (cheque, pagar, etc.). Se grafica con un cudruple de ancho que su altura, siendo su ancho igual al de los formularios. Tringulo (base inferior): Archivo definitivo. Tringulo Invertido (base superior): Archivo Transitorio. Semi-valo: Demora. Rombo: Divisin entre opciones. Trapezoide: Carga de datos al sistema. Elipsoide: Acceso por pantalla. Hexgono: Proceso no representado. Pentgono: Conector. Cruz de Diagonales: Destruccin de Formularios.

Segn la normativa, el flujo presupuesto es de izquierda a derecha y de arriba hacia abajo, siendo optativo el uso de flechas. Cuando el sentido es invertido (de derecha a izquierda o de abajo hacia arriba), es obligatorio el uso de la flecha.

2. ALGORITMO2.1. Definicin formal En general, no existe ningn consenso definitivo en cuanto a la definicin formal de algoritmo. Muchos autores los sealan como listas de instrucciones para resolver unclculoo unproblema abstracto, es decir, que un nmero finito de pasos convierten los datos de un problema (entrada) en una solucin (salida).Un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigedad y sin hacer referencia a una computadora en particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definicin abarca tanto a algoritmos prcticos como aquellos que solo funcionan en teora.2.2. Medio de expresin de un algoritmoLos algoritmos pueden ser expresados de muchas maneras, incluyendo allenguaje natural,pseudocdigo,diagramas de flujoy lenguajes de programacinentre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones son formas ms estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programacin especfico.La descripcin de un algoritmo usualmente se hace en tres niveles: Descripcin de alto nivel. Se establece el problema, se selecciona un modelo matemtico y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. Descripcin formal. Se usa pseudocdigo para describir la secuencia de pasos que encuentran la solucin. Implementacin. Se muestra el algoritmo expresado en un lenguaje de programacin especfico o algn objeto capaz de llevar a cabo instrucciones.Tambin es posible incluir unteoremaque demuestre que el algoritmo es correcto, un anlisis de complejidad o ambos.Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones son formas ms estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programacin especfico.

2.2.1. Diagrama de flujo: expresa un algoritmo para calcular la raz cuadrada de un nmero. Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos conectados con flechas para indicar la secuencia de instrucciones y estn regidos porISO.Los diagramas de flujo son usados para representar algoritmos pequeos, ya que abarcan mucho espacio y su construccin es laboriosa. Por su facilidad de lectura son usados como introduccin a los algoritmos, descripcin de un lenguaje y descripcin de procesos a personas ajenas a la computacin. 2.2.2. Pseudocdigo: el pseudocdigo (falso lenguaje, el prefijopseudosignificafalso) es una descripcin de alto nivel de un algoritmo que emplea una mezcla de lenguaje natural con algunas convenciones sintcticas propias de lenguajes de programacin, como asignaciones, ciclos y condicionales, aunque no est regido por ningn estndar. Es utilizado para describir algoritmos en libros y publicaciones cientficas, y como producto intermedio durante el desarrollo de un algoritmo, como losdiagramas de flujo, aunque presentan una ventaja importante sobre estos, y es que los algoritmos descritos en pseudocdigo requieren menos espacio para representar instrucciones complejas.El pseudocdigo est pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto puede omitir detalles irrelevantes que son necesarios en una implementacin. Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de lenguajes de programacin concretos. Sin embargo, el pseudocdigo, en general, es comprensible sin necesidad de conocer o utilizar un entorno de programacin especfico, y es a la vez suficientemente estructurado para que su implementacin se pueda hacer directamente a partir de l.As el pseudocdigo cumple con las funciones antes mencionadas para representar algo abstracto los protocolos son los lenguajes para la programacin. Busque fuentes ms precisas para tener mayor comprensin del tema.2.2.3. Sistemas formales: lateora de autmatasy la teora defunciones recursivasproveen modelos matemticos que formalizan el concepto dealgoritmo. Los modelos ms comunes son lamquina de Turing,mquina de registroyfunciones -recursivas. Estos modelos son tan precisos como unlenguaje mquina, careciendo de expresiones coloquiales o ambigedad, sin embargo se mantienen independientes de cualquier computadora y de cualquier implementacin.2.2.4. Implementacin: muchos algoritmos son ideados para implementarse en unprograma. Sin embargo, los algoritmos pueden ser implementados en otros medios, como unared neuronal, un circuito elctrico o un aparato mecnico y elctrico. Algunos algoritmos inclusive se disean especialmente para implementarse usando lpiz y papel. Elalgoritmo de multiplicacintradicional, elalgoritmo de Euclides, lacriba de Eratstenesy muchasformas de resolver la raz cuadradason slo algunos ejemplos.2.2.5. Variables: son elementos que toman valores especficos de un tipo de datos concreto. La declaracin de una variable puede realizarse comenzando convar. Principalmente, existen dos maneras de otorgar valores iniciales a variables: Mediante una sentencia de asignacin. Mediante un procedimiento de entrada de datos (por ejemplo: 'read').Ejemplo: ... i:=1; read(n); while i < n do begin (* cuerpo del bucle *) i := i + 1 end; ...2.2.6. Estructuras secuenciales:La estructura secuencial es aquella en la que una accin sigue a otra en secuencia. Las operaciones se suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente hasta el fin del proceso. La asignacin de esto consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona ser reconocida con el nombre de la variable que recibe el valor. La asignacin se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constante a una variable (a 15) Contador: Consiste en usarla como un verificador del nmero de veces que se realiza un proceso (a a + 1) Acumulador: Consiste en usarla como un sumador en un proceso (a a + b) De trabajo: Donde puede recibir el resultado de una operacin matemtica que involucre muchas variables (a c + b*2/4).Un ejemplo de estructura secuencial, como obtener la rea de un tringulo:Inicio ... float b, h, a; printf("Diga la base"); scanf("%f", &b); printf("Diga la altura"); scanf("%f", &h); a = (b*h)/2; printf("El rea del tringulo es %f", a)...Fin

2.3. Algoritmo como funciones

Un algoritmo se puede concebir como unafuncinque transforma los datos de unproblema(entrada) en los datos de una solucin (salida). Ms aun, los datos se pueden representar a su vez como secuencias debits, y en general, de smbolos cualesquiera.1911Como cada secuencia de bits representa a unnmero natural(vaseSistema binario), entonces los algoritmos son en esencia funciones de los nmeros naturales en los nmeros naturales que s se pueden calcular. Es decir que todo algoritmo calcula una funcindonde cada nmero natural es lacodificacinde un problema o de una solucin.En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando entran a unbucle infinito. Cuando esto ocurre, el algoritmo nunca devuelve ningn valor de salida, y podemos decir que la funcin queda indefinida para ese valor de entrada. Por esta razn se considera que los algoritmos sonfunciones parciales, es decir, no necesariamente definidas en todo sudominio de definicin.Cuando una funcin puede ser calculada por medios algortmicos, sin importar la cantidad de memoria que ocupe o el tiempo que se tarde, se dice que dicha funcin escomputable. No todas las funciones entre secuencias datos son computables. Elproblema de la paradaes un ejemplo.

2.4. Anlisis de Algoritmos

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el algoritmo. El anlisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolucin del gasto de tiempo y memoria en funcin del tamao de los valores de entrada.El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin y, en la mayora de los casos, su estudio es completamente abstracto sin usar ningn tipo delenguaje de programacinni cualquier otra implementacin; por eso, en ese sentido, comparte las caractersticas de las disciplinas matemticas. As, el anlisis de los algoritmos se centra en los principios bsicos del algoritmo, no en los de la implementacin particular. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocdigoo utilizar un lenguaje muy simple tal comolxico, cuyos cdigos pueden estar en el idioma del programador.Algunos escritores restringen la definicin de algoritmo a procedimientos que deben acabar en algn momento, mientras que otros consideran procedimientos que podran ejecutarse eternamente sin pararse, suponiendo el caso en el que existiera algn dispositivo fsico que fuera capaz de funcionar eternamente. En este ltimo caso, la finalizacin con xito del algoritmo no se podra definir como la terminacin de este con una salida satisfactoria, sino que el xito estara definido en funcin de las secuencias de salidas dadas durante un periodo de vida de la ejecucin del algoritmo. Por ejemplo, un algoritmo que verifica que hay ms ceros que unos en una secuenciabinariainfinita debe ejecutarse siempre para que pueda devolver un valor til. Si se implementa correctamente, el valor devuelto por el algoritmo ser vlido, hasta que evale el siguiente dgito binario. De esta forma, mientras evala la siguiente secuencia podrn leerse dos tipos de seales: una seal positiva (en el caso de que el nmero de ceros sea mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se define como la devolucin de valores exclusivamente positivos si hay ms ceros que unos en la secuencia y, en cualquier otro caso, devolver una mezcla de seales positivas y negativas.

2.5. Ejemplo de Algoritmo

El problema consiste en encontrar el mximo de un conjunto de nmeros. Para un ejemplo ms complejo vaseAlgoritmo de Euclides. Descripcin de alto nivel

Dado unconjuntofinitode nmeros, se tiene el problema de encontrar el nmero ms grande. Sin prdida de generalidad se puede asumir que dicho conjunto no es vaco y que sus elementos estn numerados como.Es decir, dado un conjuntose pide encontrartal quepara todo elementoque pertenece al conjunto.Para encontrar el elemento mximo, se asume que el primer elemento () es el mximo; luego, se recorre el conjunto y se compara cada valor con el valor del mximo nmero encontrado hasta ese momento. En el caso que un elemento sea mayor que el mximo, se asigna su valor al mximo. Cuando se termina de recorrer la lista, el mximo nmero que se ha encontrado es el mximo de todo el conjunto.

Descripcin formalEl algoritmo puede ser escrito de una manera ms formal en el siguientepseudocdigo:AlgoritmoEncontrar el mximo de un conjunto

funcinmax()//es un conjunto no vaco de nmeros////es el nmero de elementos de//parahastahacersientoncesdevolver

Sobre la notacin: "" representa una asignacin:significa que la variabletoma el valor de; "devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el mximo de).

ImplementacinEn lenguajeC++:int max(int c[], int n){ int i, m = c[0]; for (i = 1; i < n; i++) if (c[i] > m) m = c[i]; return m;}

3. PROGRAMACIN

3.1. Historia

Para crear unprograma, y que la computadora lo intrprete y ejecute las instrucciones escritas en l, debe usarse unlenguaje de programacin.

En sus inicios las computadoras interpretaban slo instrucciones en un lenguaje especfico, del ms bajo nivel, conocido comocdigo mquina, siendo ste excesivamente complicado para programar. De hecho slo consiste en cadenas de nmeros 1 y 0 (sistema binario). Para facilitar el trabajo de programacin, los primeros cientficos que trabajaban en el rea decidieron reemplazar las instrucciones, secuencias de unos y ceros, por palabras o letras provenientes delingls; las codificaron y crearon as un lenguaje de mayor nivel, que se conoce como Assembly olenguaje ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesaadd(sumar).

En realidad escribir en lenguaje ensamblador es bsicamente lo mismo que hacerlo en lenguaje mquina, pero las letras y palabras son bastante ms fciles de recordar y entender que secuencias de nmeros binarios. A medida que la complejidad de las tareas que realizaban las computadoras aumentaba, se hizo necesario disponer de un mtodo sencillo para programar. Entonces, se crearon loslenguajes de alto nivel. Mientras que una tarea tan trivial como multiplicar dos nmeros puede necesitar un conjunto de instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastar con solo una. Una vez que se termina de escribir un programa, sea en ensamblador o en un lenguaje de alto nivel, es necesariocompilarlo, es decir, traducirlo a lenguaje mquina.

3.2. Lxico y Programacin La programacin se rige por reglas y un conjunto ms o menos reducido de rdenes, expresiones, instrucciones y comandos que tienden a asemejarse a una lengua natural acotada (en ingls); y que adems tienen la particularidad de una reducida ambigedad. Cuanto menos ambiguo es un lenguaje de programacin, se dice, es ms potente. Bajo esta premisa, y en el extremo, el lenguaje ms potente existente es el binario, con ambigedad nula (lo cual lleva a pensar as del lenguaje ensamblador).En loslenguajes de programacinde alto nivel se distinguen diversos elementos entre los que se incluyen el lxico propio del lenguaje y las reglas semnticas y sintcticas.

3.3. Programas y AlgoritmosUnalgoritmoes una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programacin concreto) uno o ms algoritmos. Un algoritmo puede expresarse de distintas maneras: en forma grfica, como undiagrama de flujo, en forma de cdigo como enpseudocdigoo un lenguaje de programacin, en forma explicativa, etc.Los programas suelen subdividirse en partes menores, llamadas mdulos, de modo que la complejidad algortmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa. Esta es una prctica muy utilizada y se conoce como "refino progresivo".SegnNiklaus Wirth, un programa est formado por losalgoritmosy laestructura de datos.Se han propuesto diversas tcnicas de programacin cuyo objetivo es mejorar tanto el proceso de creacin desoftwarecomo su mantenimiento. Entre ellas, se pueden mencionar las siguientes: programacin declarativa programacin estructurada programacin modular programacin orientada a objetos

3.4. Compilacin El programa escrito en unlenguaje de programacin(fcilmente comprensible por elprogramador) es llamadoprograma fuentey no se puede ejecutar directamente en una computadora. La opcin ms comn es compilar el programa obteniendo un mdulo objeto, aunque tambin puede ejecutarse en forma ms directa a travs de unintrprete informtico.El cdigo fuente delprogramase debe someter a unproceso de traduccinpara convertirlo en lenguaje mquina, cdigo est directamente ejecutable por elprocesador. A este proceso se le llamacompilacin.Habitualmente la creacin de un programaejecutable(un tpico.exe paraMicrosoft WindowsoDOS) conlleva dos pasos. El primer paso se llama compilacin (propiamente dicho) y traduce el cdigo fuente escrito en unlenguaje de programacinalmacenado en un archivo a cdigo en bajo nivel (normalmente en cdigo objeto, no directamente a lenguaje mquina). El segundo paso se llama enlazadoen el cual se enlaza el cdigo de bajo nivel generado de todos los ficheros y subprogramas que se han mandado compilar y se aade el cdigo de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda comunicarse directamente con el sistema operativo, traduciendo as finalmente elcdigo objetoacdigo mquina, y generando un mdulo ejecutable.Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de compilacin en archivos objetos (un tpico.obj para Microsoft Windows, DOS o paraUnix); para enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de compilacin se almacena slo temporalmente. Un programa podra tener partes escritas en varios lenguajes, por ejemplo,Java,C,C++yensamblador, que se podran compilar de forma independiente y luego enlazar juntas para formar un nico mduloejecutable.

3.5. Programacin e Ingeniera de SoftwareExiste una tendencia a identificar el proceso de creacin de un programa informtico con la programacin, que es cierta cuando se trata de programas pequeos para uso personal, y que dista de la realidad cuando se trata de grandes proyectos.El proceso de creacin de software, desde el punto de vista de laingeniera, incluye los siguientes pasos:a) Reconocer la necesidad de un programa: para solucionar un problema o identificar la posibilidad de automatizacin de una tarea.b) Recoger los requisitos del programa. Debe quedar claro qu es lo que debe hacer el programa y para qu se necesita.c) Realizar el anlisis de los requisitos del programa. Debe quedar claro cmo debe realizar el programa las cosas que debe hacer. Las pruebas que comprueben la validez del programa se pueden especificar en esta fase.d) Disear la arquitectura del programa. Se debe descomponer el programa en partes de complejidad abordable.e) Implementar el programa. Consiste en realizar un diseo detallado, especificando completamente todo el funcionamiento del programa, tras lo cual la codificacin (programacin propiamente dicha) debera resultar inmediata.f) Implantar (instalar) el programa. Consiste en poner el programa en funcionamiento junto con los componentes que pueda necesitar (bases de datos, redes de comunicaciones, etc.).La ingeniera del software se centra en los pasos de planificacin y diseo del programa, mientras que antiguamente (programacin artesanal) la realizacin de un programa consista casi nicamente en escribir el cdigo, bajo slo el conocimiento de los requisitos y con una modesta fase de anlisis y diseo.

3.6. Referencia Histrica La primera programadora de computadoras conocida fueAda Lovelace, hija de Anabella Milbanke Byron yLord Byron. Anabella introdujo en las matemticas a Ada quien, despus de conocer aCharles Babbage, tradujo y ampli una descripcin de su mquina analtica. Incluso, aunque Babbage nunca complet la construccin de cualquiera de sus mquinas, el trabajo que Ada realiz con stas le hizo ganarse el ttulo de primera programadora de computadoras del mundo. El nombre dellenguaje de programacin Adafue escogido como homenaje a esta programadora.Este proceso est aplicado a todos los mtodos cientficos que actualmente se practican.

3.7. Objetivos de la Programacin La programacin debe perseguir la obtencin de programas de calidad. Para ello se establece una serie de factores que determinan la calidad de un programa. Algunos de los factores de calidad ms importantes son los siguientes:a) Correccin. Un programa es correcto si hace lo que debe hacer tal y como se estableci en las fases previas a su desarrollo. Para determinar si un programa hace lo que debe, es muy importante especificar claramente qu debe hacer el programa antes de desarrollarlo y, una vez acabado, compararlo con lo que realmente hace.b) Claridad. Es muy importante que el programa sea lo ms claro y legible posible, para facilitar as su desarrollo y posterior mantenimiento. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente, as como cuidar el estilo en la edicin; de esta forma se ve facilitado el trabajo delprogramador, tanto en la fase de creacin como en las fases posteriores de correccin de errores, ampliaciones, modificaciones, etc. Fases que pueden ser realizadas incluso por otro programador, con lo cual la claridad es an ms necesaria para que otros programadores puedan continuar el trabajo fcilmente. Algunos programadores llegan incluso a utilizarArte ASCIIpara delimitar secciones de cdigo. Otros, por diversin o para impedir un anlisis cmodo a otros programadores, recurren al uso decdigo ofuscado.c) Eficiencia. Se trata de que el programa, adems de realizar aquello para lo que fue creado (es decir, que sea correcto), lo haga gestionando de la mejor forma posible los recursos que utiliza. Normalmente, al hablar de eficiencia de un programa, se suele hacer referencia al tiempo que tarda en realizar la tarea para la que ha sido creado y a la cantidad de memoria que necesita, pero hay otros recursos que tambin pueden ser de consideracin al obtener la eficiencia de un programa, dependiendo de su naturaleza (espacio en disco que utiliza, trfico de red que genera, etc.)d) Portabilidad. Un programa es portable cuando tiene la capacidad de poder ejecutarse en una plataforma, ya sea hardware o software, diferente a aqulla en la que se elabor. La portabilidad es una caracterstica muy deseable para un programa, ya que permite, por ejemplo, a un programa que se ha desarrollado para sistemasGNU/Linuxejecutarse tambin en la familia de sistemas operativosWindows. Esto permite que el programa pueda llegar a ms usuarios ms fcilmente.

4. Resolucin de problemas de programacin Laresolucin de un problemamediante unordenadorconsiste en el proceso que a partir de la descripcin de un problema, expresado habitualmente en lenguaje natural y en trminos propios del dominio del problema, permite desarrollar unprogramaque resuelva dicho problema.Este proceso exige los siguientes pasos: Anlisis del problema. Diseo o desarrollo de unalgoritmo. Transformacin del algoritmo en un programa (codificacin). Ejecucin y validacin del programa.Los dos primeros pasos son los ms difciles del proceso. Una vez analizado el problema y obtenido un algoritmo que lo resuelva, su transformacin a un programa de ordenador es una tarea de mera traduccin al lenguaje de programacin deseado.

4.1. Anlisis del problema Cuando un usuario plantea a un programador un problema que resolver mediante suordenador, por lo general ese usuario tendr conocimientos ms o menos amplios sobre el dominio del problema, pero no es habitual que tenga conocimientos deinformtica. Por ejemplo, un contable que necesita un programa para llevar la contabilidad de una empresa ser un experto en contabilidad (dominio del problema), pero no tiene por qu ser experto enprogramacin.Del mismo modo, el informtico que va a resolver un determinado problema puede ser un experto programador, pero en principio no tiene por qu conocer el dominio del problema; siguiendo el ejemplo anterior, el informtico que hace un programa no tiene por qu ser un experto en contabilidad.Por ello, al abordar un problema que se quiere resolver mediante un ordenador, el programador necesita de la experiencia del experto del dominio para entender el problema. Al final, si se quiere llegar a una solucin satisfactoria es necesario que:El problema est bien definido con el mximo detalleLas especificaciones de las entradas y salidas del problema, deben ser descritas tambin en detalle:Qudatosson necesarios para resolver el problema?Quinformacindebe proporcionar la resolucin del problema?

4.2. Diseo del Algoritmo

Unalgoritmoconsiste en una especificacin clara y concisa de los pasos necesarios para resolver un determinado problema, pero para poder disear algoritmos es necesario disponer de una notacin, que llamaremos notacin algortmica, que permita:a) Describir las operaciones puestas en juego (acciones, instrucciones, comandos,...)b) Describir los objetos manipulados por el algoritmo (datos/informaciones)c) Controlar la realizacin de las acciones descritas, indicando la forma en que estas se organizan en el tiempoPara poder describir cualquier tipo de accin de las que intervienen en un algoritmo, diversos autores proponen el uso de un conjunto de construcciones lgicas (secuencia, decisin e iteracin) con las que es posible escribir cualquierprograma. Lo que sigue a continuacin es la descripcin de las diferentes construcciones disponibles para el diseo de algoritmos.

4.2.1. Acciones elementalesSe entiende por acciones elementales aquellas que el ordenador es capaz de realizar y que sern de dos tipos: Aritmtico lgicas:Operaciones que, a partir de unos determinados datos, realizan un clculo aritmtico (suma, resta, multiplicacin,...) o un clculo lgico (mayor que, menor que, igual que,...).Las primeras devuelven un valor numrico (4, -5.67,...) y las segundas un valor lgico (verdadero o falso).

De entrada salida:Acciones que permiten capturar datos para su posterior tratamiento (las de entrada) y guardar los resultados de dicho tratamiento (las de salida).4.2.2. Secuencia de acciones elementalesCuando en un algoritmo se deben ejecutar varias acciones sucesivamente, stas se describen una detrs de otra segn el orden en que deban ejecutarse. Si se desea se puede emplear algn tipo de smbolo para separar dos acciones consecutivas. En el siguiente ejemplo se nuestra la descripcin de n acciones separadas por punto y coma (smbolo que habitualmente se emplea como separador).Accin 1;Accin 2;...Accin n;

4.2.3. Composicin condicional

Cuando en un algoritmo se quiere indicar que cierta accin slo se debe ejecutar bajo cierta condicin se indica del siguiente modo:

Si Condicin Entonces Accin;FinSi

Slo si laCondicin(operacin lgica) es verdadera se ejecutar laAccin. En este caso, laAccinpuede referirse tanto a una accin elemental como a un conjunto de ellas.

4.2.4. Composicin condicional doble alternativaEn ocasiones, se deben ejecutar unas acciones u otras dependiendo de la ocurrencia de una determinada condicin. Esta especificacin se realiza del siguiente modo:Si Condicin Entonces Accin A;SiNo Accin B;FinSiDependiendo de si laCondicines verdadera o falsa se ejecutar laAccin Ao laAccin Brespectivamente. De forma anloga a como ocurra en el caso anterior, tanto laAccin Acomo laAccin Bpueden referirse a una accin elemental o a un conjunto de ellas.4.2.5. Composicin condicional mltipleTambin es posible que a la hora de especificar la ejecucin de una accin haya que escoger sta entre varias dependiendo del valor de una determinada variable (o indicador). Este caso se expresa del siguiente modo:Segn Indicador Hacer Caso Valor 1: Accin 1; Caso Valor 2: Accin 2; ... Caso Valor n: Accin n; [De Otro Modo: Accin X;]FinSegun

En esta construccinIndicadordebe tener un determinado valor que en caso de coincidir con alguno de losnvalores provocar la ejecucin de la accin asociada a dicho valor. Si el valor delIndicadorno coincidiera con ninguno de los especificados se ejecutar la Accin X. No tiene por qu haber unaAccin Xpara cuando elIndicador' no coincida con ninguno de losnvalores; en ese caso, si el Indicador' no coincide con ningn valor no se ejecutara ninguna accin.Al igual que en los casos anteriores, todas las acciones que aparecen en esta estructura (Accin 1,Accin 2,...,Accin nyAccin X) pueden referirse a una nica accin o a un conjunto de ellas.

2.2.6. Composicin iterativa o bucleCuando una accin o conjunto de acciones debe ejecutarse varias veces se recurre a una estructura iterativa o bucle. En este tipo de estructuras se necesita una condicin que determine cuando terminan las iteraciones. Dependiendo de si esa condicin se evala al principio o al final de la estructura y de si la condicin para que las iteraciones continen debe ser verdadera o falsa, se pueden definir cuatro construcciones iterativas distintas:La condicin de terminacin ha de ser FALSALa condicin de terminacin ha de ser VERDADERA

Condicin al principio de la estructura(Estructura 1)MientrasCondicin HacerAccin;FinMientras(Estructura 2)HastaCondicinHacerAccin;FinHasta

Condicin al final de la estructura(Estructura 3)HacerAccin;MientrasCondicin;(Estructura 4)HacerAccin;HastaCondicin;

Sobre las cuatro construcciones que se acaban de presentar cabe hacer las siguientes observaciones:Si en las estructuras 1 y 2, cuando se evala la Condicin, sta toma por primera vez un valor tal que no permita ejecutar la Accin (FALSO en la 1 y VERDADERO en la 2), sta no se ejecutar ninguna vez. Es decir, puede ocurrir que la Accin, en las estructuras 1 y 2, no se ejecute nunca.En las estructuras 3 y 4, al estar la Condicin de terminacin al final, la Accin se ejecutar antes de que la condicin se evale por primera vez, por lo que aunque la Condicin tome un valor tal que no se permita realizar ms iteraciones, la Accin se ejecutar al menos una vez.Si las Condiciones de las estructuras 1 y 2 son complementarias, es decir, que siempre que una es verdadera la otra es falsa y viceversa (ejemplo: [a > b] y [a b] son condiciones complementarias), entonces ambas estructuras son equivalentes ya que en ambas la Accin se ejecutar el mismo nmero de veces.De forma anloga, si las Condiciones de las estructuras 3 y 4 son complementarias tambin ambas estructuras sern equivalentes.Existe una construccin especial para indicar una repeticin de acciones que se suele emplear cuando se quiere que dicha repeticin se realice un nmero determinado de veces:Para i = 1 Hasta n Hacer Accin;FinParaEn este caso la Accin se repetir n veces e i ser una variable que tomar todos los valores entre 1 y n (ambos inclusive) en cada una de las sucesivas repeticiones. Esta construccin, aunque de apariencia diferente a las anteriores, se podra expresar como un caso particular de la estructura 1 del siguiente modo:i = 1;Mientras i