PROGRAMA EDUCATIVO Ing. en Sistemas Computacionales
MATERIA Fundamentos de Programacin
DOCENTE Rosel Muoz Lpez
ESTUDIANTES: Ortiz Morales Reynaldo Daniel De la Cruz de los Reyes Aurelio
TAPACHULA, CHIAPAS 08 DE SEPTIEMBRE DE 2014 2
NDICE
Introduccin -------------------------------------------------------------------------------------------- 3 1.1 Clasificacin del software de: sistemas y aplicacin -------------------------------- 4
1.10 Consola de lnea de comandos ---------------------------------------------------------- 21 Preguntas ---------------------------------------------------------------------------------------------- 24 Conclusin --------------------------------------------------------------------------------------------- 29 Bibliografa --------------------------------------------------------------------------------------------- 30
3
INTRODUCCIN
El termino ingeniero de sistemas fue a fines de los aos 60 cuando empresas lo introdujeron cono un cargo laboral ellos eran los que asesoraban como los productos podan satisfacer las necesidades de procesamiento de bases de datos o informacin. En la ltimas dcadas el desarrollo de software y programas ha sido cada vez mas importantes y cada ao sale algo nuevo en lo que es en el rea de informtica ya que debe de estarse actualizando ao con ao para crear nuevos sistemas que permitan tanto a las personas como a las empresas e instituciones realizar sus trabajos es por ello que el Ing. En sistemas debe de conocer los conceptos bsicos de un programa para poder desenvolver un programa o aplicacin. En el siguiente documento mostraremos las definiciones de los temas a tratar ya que son indispensables para entender un poco mas sobre la materia. Ensearemos las clasificaciones del software y para que se utilicen adems de los conceptos bsicos de cada tema, como se desarrolla un algoritmo y sus ejemplos entre muchas cosas ms que lo descubrirn cuando lean el texto.
4
CONCEPTOS BSICOS
1.1 Clasificacin de software de sistemas y aplicacin
Software de sistemas El software del sistema coordina las diferentes partes de un sistema de computadora y conecta e interacta entre el software de aplicacin y el hardware de la computadora. Otro tipo de software del sistema que gestiona controla las actividades de la computadora y realiza tareas de proceso comunes, se denomina utility o utilidades. El software del sistema que gestiona y controla las actividades del computador se denomina sistema operativo. Otro software del sistema son los programas traductores o de traduccin de lenguajes de computador que convierten los lenguajes de programacin, entendibles por los programadores, en lenguaje mquina que entienden las computadoras El software del sistema es el conjunto de programas indispensables para que la mquina funcione; se denominan tambin programas del sistema. Estos programas son, bsicamente, el sistema operativo, los editores de texto, los compiladores/intrpretes (lenguajes de programacin) y los programas de utilidad.
Software de aplicacin El software de aplicacin tiene como funcin principal asistir y ayudar a un usuario de un computador para ejecutar tareas especficas. Los programas de aplicacin se pueden desarrollar con diferentes lenguajes y herramientas de software. Por ejemplo, una aplicacin de procesamiento de textos (Word processin) tal como Word o Word Perfect que ayuda a crear documentos, una hoja de clculo tal como Lotus 1-2-3 o Excel que ayudan a automatizar tareas tediosas o repetitivas de clculos matemticos o estadsticos, a generar diagramas o grficos, presentaciones visuales como PowerPoint, o a crear bases de datos como Acces u Oracle que ayudan a crear archivos y registros de datos. Los usuarios, normalmente, compran el software de aplicaciones en discos CDs o DVDs (antiguamente en disquetes) o los descargan (bajan) de la Red Internet y han de instalar el software copiando los programas correspondientes de los discos en el disco duro de la computadora. Cuando compre estos programas asegrese que son compatibles con su computador y con su sistema operativo. Existe una gran diversidad de programas de aplicacin para todo tipo de actividades tanto de modo personal, como de negocios, navegacin y manipulacin en Internet, grficos y presentaciones visuales, 5
etc. Los lenguajes de programacin sirven para escribir programas que permitan la comunicacin usuario/mquina. Unos programas especiales llamados traductores (compiladores o intrpretes) convierten las instrucciones escritas en lenguajes de programacin en instrucciones escritas en lenguajes mquina (0 y 1, bits) que sta pueda entender. Los programas de utilidad 6 facilitan el uso de la computadora. Un buen ejemplo es un editor de textos que permite la escritura y edicin de documentos. Este libro ha sido escrito en un editor de textos o procesador de palabras (Word proceso). Los programas que realizan tareas concretas, nminas, contabilidad, anlisis estadstico, etc., es decir, los programas que podr escribir en Turbo Pascal, se denominan programas de aplicacin. A lo largo del tema se vern pequeos programas de aplicacin que muestran los principios de una buena programacin de computadora. Se debe diferenciar entre el acto de crear un programa y la accin de la computadora cuando ejecuta las instrucciones del programa. La creacin de un programa se hace inicialmente en papel y, a continuacin, se introduce en la computadora y se convierte en lenguaje entendible por la computadora.
1.2 Algoritmo Un algoritmo es un mtodo para resolver un problema. Aunque la popularizacin del trmino ha llegado con la aparicin de la era informtica, algoritmo proviene de Mohammed al-Khowrizmi, matemtico persa que vivi durante el siglo IX y alcanz gran reputacin por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir nmeros decimales; la traduccin al latn del apellido en la palabra algorismus deriv posteriormente en algoritmo. Euclides, el gran matemtico griego (del siglo IV antes de Cristo) que invent un mtodo para encontrar el mximo comn divisor de dos nmeros, se considera con Al-Khowrizmi el otro gran padre de la algoritmia (ciencia que trata de los algoritmos). El profesor Niklaus Wirth inventor de Pascal, Modula-2 y Obern titul uno de sus ms famosos libros, Algoritmos + Estructuras de datos = Programas, significndonos que slo se puede llegar a realizar un buen programa con el diseo de un algoritmo y una correcta estructura de datos. Esta ecuacin ser una de las hiptesis fundamentales consideradas en esta obra. La resolucin de un problema exige el diseo de un algoritmo que resuelva el problema propuesto.
Los pasos de resolucin de un problema son:
Problema Diseo de algoritmo Programa de computador a 6
1.- Diseo del algoritmo, que describe la secuencia ordenada de pasos sin ambigedades que conducen a la solucin de un problema dado. (Anlisis del problema y desarrollo del algoritmo.)
2.- Expresar el algoritmo como un programa en un lenguaje de programacin adecuado. (Fase de codificacin.)
3. Ejecucin y validacin del programa por la computadora.
Para llegar a la realizacin de un programa es necesario el diseo previo de un algoritmo, de modo que sin algoritmo no puede existir un programa. Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin embargo, el algoritmo ser siempre el mismo. As, por ejemplo, en una analoga con la vida diaria, una receta de un plato de cocina se puede expresar en espaol, ingls o francs, pero cualquiera que sea el lenguaje, los pasos para la elaboracin del plato se realizarn sin importar el idioma del cocinero. En la ciencia de la computacin y en la programacin, los algoritmos son ms importantes que los lenguajes de programacin o las computadoras. Un lenguaje de programacin es tan slo un medio para expresar un algoritmo y una computadora es slo un procesador para ejecutarlo. Tanto el lenguaje de programacin como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecute y se efecte el proceso correspondiente. Dada la importancia del algoritmo en la ciencia de la computacin, un aspecto muy importante ser el diseo de algoritmos. A la enseanza y prctica de esta tarea denominada algoritmia se dedica gran parte de este libro. El diseo de la mayora de los algoritmos requiere creatividad y conocimientos profundos de la tcnica de la programacin. En esencia, la solucin de un problema se puede expresar mediante un algoritmo.
Caractersticas de los algoritmos
Las caractersticas fundamentales que debe cumplir todo algoritmo son:
Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso. Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento; o sea, debe tener un nmero finito de pasos. La definicin de un algoritmo debe describir tres partes: Entrada, Proceso y Salida. En un algoritmo de receta de cocina se tendr: 7
Entrada: ingredientes y utensilios empleados. Proceso: elaboracin de la receta en la cocina. Salida: terminacin del plato (por ejemplo, pollo).
1.3 Lenguaje de programacin
Como se ha visto en el apartado anterior, para que un procesador realice un proceso se le debe suministrar en primer lugar un algoritmo adecuado. El procesador debe ser capaz de interpretar el algoritmo, lo que significa.
- Comprender las instrucciones de cada paso. - Realizar las operaciones correspondientes.
Cuando el procesador es una computadora, el algoritmo se ha de expresar en un formato que se denomina programa, ya que el pseudocdigo o el diagrama de flujo no son comprensibles por la computadora, aunque pueda entenderlos cualquier programador. Un programa se escribe en un lenguaje de programacin y las operaciones que conducen a expresar un algoritmo en forma de programa se llaman programacin. As pues, los lenguajes utilizados para escribir programas de computadoras son los lenguajes de programacin y programadores son los escritores y diseadores de programas. El proceso de traducir un algoritmo en pseudocdigo a un lenguaje de programacin se denomina codificacin, y el algoritmo escrito en un lenguaje de programacin se denomina cdigo fuente. En la realidad la computadora no entiende directamente los lenguajes de programacin sino que se requiere un programa que traduzca el cdigo fuente a otro lenguaje que s entiende la mquina directa- mente, pero muy complejo para las personas; este lenguaje se conoce como lenguaje mquina y el cdigo correspondiente cdigo mquina. Los programas que traducen el cdigo fuente escrito en un lenguaje de programacin tal como C++ a cdigo mquina se denominan traductores. El proceso de conversin de un algoritmo escrito en pseudocdigo hasta un programa ejecutable comprensible por la mquina, se muestra en figura 1. Hoy en da, la mayora de los programadores emplean lenguajes de programacin como C++, C, C#, Java, Visual Basic, XML, HTML, Perl, PHP, JavaScript..., aunque todava se utilizan, sobre todo profesionalmente, los clsicos COBOL, FORTRAN, Pascal o el mtico BASIC. Estos lenguajes se denominan lenguajes de alto nivel y permiten a los profesionales resolver problemas convirtiendo sus algoritmos en programas escritos en alguno de estos lenguajes de programacin.
8
Fig. 1 proceso de transformacin de un algoritmo en pseudocdigo en un programa ejecutable.
Los principales tipos de lenguajes utilizados en la actualidad son tres: - Lenguajes de mquina. - Lenguaje de bajo nivel (ensamblador). - Lenguajes de alto nivel Lenguaje de maquina En los primeros das de las computadoras, los nicos lenguajes de programacin disponibles eran lenguajes de mquina. Cada computador tena su propio lenguaje de mquina, hecho de patrones (streams) de 0s y 1s. Estas lneas de cdigo, cuando ests escrita en lenguaje de mquina, hacen once lneas de cdigo binario, cada una de 16 bits.
Lenguaje de bajo nivel (ensamblador) 9
La siguiente evolucin en programacin vino con la idea de reemplazar el cdigo binario por instrucciones y direcciones con smbolos o mnemnicos. Debido a que utilizaban smbolos, estos lenguajes fueron primeramente conocidos como lenguajes simblicos. El conjunto de estos lenguajes mnemnicos fueron ms tarde conocidos como lenguajes debajo nivel. El lenguaje bajo nivel para nuestro ordenador hipottico que reemplaza el lenguaje de mquina. Lenguaje de alto nivel Aunque los lenguajes ensambladores mejorado mucho la eficiencia de programacin, todava requera que los programadores se concentrasen en el hardware que utilizaban. Trabajar con lenguajes simblicos tambin era muy tedioso, ya que cada instruccin de mquina tena que ser codificada individualmente. El deseo de mejorar la eficiencia del programador y cambiar el enfoque desde el ordenador al problema a resolver dio lugar al desarrollo de lenguajes de alto nivel. Con los aos, varios lenguajes, sobre todo BASIC, COBOL, Pascal, Ada, C, C++ y Java, fueron desarrollados. El siguiente programa muestra el cdigo para sumar dos nmeros enteros tal y como aparecera en el lenguaje C++.
1.4 Programa
Un programa, concepto desarrollado por Von Neumann en 1946, es un conjunto de instrucciones que sigue la computadora para alcanzar un resultado especfico. El programa se escribe en un lenguaje de programacin a partir de un diagrama de flujo diseado con anterioridad. Un lenguaje de programacin, por otra parte, est constituido por un conjunto de reglas sintcticas (especifica la formacin de instrucciones vlidas) y semnticas (especifica el significado de estas instrucciones), que hacen posible escribir un programa. Cientos de lenguajes de programacin se han desarrollado hasta la fecha. Ya en 1969, se haban enumerado ms de 120 que haban sido utilizados amplia- mente. Actualmente a los lenguajes de programacin podemos clasificarlos teniendo en cuenta el tipo de problemas que son capaces de resolver de manera natural. As tenemos, por ejemplo, para programacin estructurada: PASCAL. C, BASIC, FORTRAN, COBOL; estos tres ltimos en su versin estructurada. Para programacin orientada a objetos: C + +, SMALLTALK y JAVA. Para programacin simblica: LISR y para programacin lgica: PROLOG. Cabe sealar que slo hicimos mencin de algunos lenguajes y tipos de lenguajes. En este libro nos enfocaremos sobre el tipo de lenguajes de programacin estructurada. En este enfoque los programas se disean de arriba 10
hacia abajo (top-Down) jerrquicamente, usando slo un conjunto restringido de estructuras de control en cada nivel, instrucciones secuenciales, estructuras selectivas y estructuras repetitivas. Cuando esto se hace en forma adecuada el programa resulta muy fcil de entender, depurar y modificar. Cuando tenemos que resolver un problema de tipo algortmico, entendiendo por esto aquellos que tienen una solucin determinstica, primero desarrollamos el algoritmo, que proporciona una solucin muy general. Posteriormente construimos el diagrama de flujo, que esquematiza grfica y detalladamente la solucin del problema, y a partir de ste, escribimos el programa en algn lenguaje de programacin estructurado. Pensamos que la tarea intelectual, la que requiere de un pensamiento profundo, de una capacidad de razonamiento flexible y crtica, es la de la construccin del diagrama de flujo, que representa la solucin detallada del problema. La escritura del programa puede ser muy simple, conociendo las reglas sintcticas y semnticas que constituyen el lenguaje de programacin. El lenguaje que utilizaremos en este libro para la construccin de los programas es un lenguaje algortmico de pseudocdigo, independiente de cualquier lenguaje de programacin. Esta caracterstica consideramos que es muy importante, ya que permite al lector comprender las estructuras de datos y los algoritmos aso- ciados a ellas sin relacionarlos a un lenguaje de programacin en particular. Se considera que una vez que el lector domine correctamente estos conceptos, muy fcilmente podr transportar los programas realizados a un lenguaje de programacin, tal como PASCAL o C.
1.5 Programacin
La programacin es el proceso de disear, codificar, depurar y mantener el cdigo fuente de programas computacionales. El cdigo fuente es escrito en un lenguaje de programacin. El propsito de la programacin es crear programas que exhiban un comportamiento deseado. El proceso de escribir cdigo requiere frecuentemente conocimientos en varias reas distintas, adems del dominio del lenguaje a utilizar, algoritmos especializados y lgica formal. Programar no involucra necesariamente otras tareas tales como el anlisis y diseo de la aplicacin (pero s el diseo del cdigo), aunque s suelen estar fusionadas en el desarrollo de pequeas aplicaciones.
11
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: Correctitud: 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 su desarrollo y, una vez acabado, compararlo con lo que realmente hace. Claridad: Es muy importante que el programa sea lo ms claro y legible posible, para facilitar tanto su desarrollo como su posterior mantenimiento. Al elaborar un programa se debe intentar que su estructura sea sencilla y coherente, as como cuidar el estilo de programacin. De esta forma se ve facilitado el trabajo del programador, 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 puedan continuar el trabajo fcilmente. Algunos programadores llegan incluso a utilizar Arte ASCII para delimitar secciones de cdigo; una prctica comn es realizar aclaraciones en el cdigo fuente utilizando lneas de comentarios. Contrariamente, algunos por diversin o para impedirle un anlisis cmodo a otros programadores, recurren al uso de cdigo ofuscado. 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 para mejorar la eficiencia de un programa, dependiendo de su naturaleza (espacio en disco que utiliza, trfico en la red que genera, etc.). 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 desarroll. La portabilidad es una caracterstica muy deseable para un 12
programa, ya que permite, por ejemplo, a un programa que se ha elaborado para el sistema GNU/Linux ejecutarse tambin en la familia de sistemas operativos Windows. Esto permite que el programa pueda llegar a ms usuarios ms fcilmente.
1.6 Paradigmas de programacin
Un paradigma de programacin es una propuesta tecnolgica que es adoptada por una comunidad de programadores cuyo ncleo central es incuestionable en cuanto a que nicamente trata de resolver uno o varios problemas claramente delimitados. Es un estilo de programacin empleado. La resolucin de estos problemas debe suponer consecuentemente un avance significativo en al menos un parmetro que afecte a la ingeniera de software. Tiene una estrecha relacin con la formalizacin de determinados lenguajes en su momento de definicin. Un paradigma de programacin est delimitado en el tiempo en cuanto a aceptacin y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente. El paradigma de programacin que actualmente es el ms usado es la orientacin a objetos. El ncleo central de este paradigma es la unin de datos y procesamiento en una entidad llamada "objeto", relacionable a su vez con otras entidades "objeto". Tradicionalmente datos y procesamiento se han separado en reas diferente del diseo y la implementacin de software. Esto provoc que grandes desarrollos tuvieran problemas de fiabilidad, mantenimiento, adaptacin a los cambios y escalabilidad. Con la orientacin a objetos y caractersticas como el encapsulado, polimorfismo o la herencia se permiti un avance significativo en el desarrollo de software a cualquier escala de produccin. Un paradigma de programacin representa un enfoque particular o filosofa para disear soluciones. Los paradigmas difieren unos de otros, en los conceptos y la forma de abstraer los elementos involucrados en un problema, as como en los pasos que integran su solucin del problema, en otras palabras, el cmputo. La orientacin a objeto parece estar ligada en sus orgenes con lenguajes como Lisp y Simula aunque el primero que acu el ttulo de programacin orientada a objetos fue Smalltalk.
13
Tipos de paradigmas de programacin ms comunes
Imperativo o por procedimientos: es considerado el ms comn y est representado es decir elogiado, por ejemplo, por C, BASIC o Pascal. Funcional: est representado por Scheme o Haskell. Este es un caso del paradigma declarativo. Lgico: est representado por Prolog. Este es otro caso del paradigma declarativo. Declarativo: por ejemplo la programacin funcional, la programacin lgica, o la combinacin lgico-funcional. Orientado a objetos: est representado por Smalltalk, un lenguaje completamente orientado a objetos. Programacin dinmica: est definida como el proceso de romper problemas en partes pequeas para analizarlos. Programacin multiparadigma: es el uso de dos paradigmas dentro de una funcin.
1.7 Editores de texto
Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos nicamente por un texto sin formato, conocidos comnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes ledos segn el cdigo de caracteres que usa el editor. Hoy en da es comnmente de 7- u 8-bits en ASCII oUTF-8, rara vez EBCDIC. Por ejemplo, un editor ASCII de 8 bits que lee el nmero binario 0110 0001 (decimal 97 o hexadecimal 61) en el archivo lo representar en la pantalla por la figura a, que el usuario reconoce como la letra "a" y ofrecer al usuario las funciones necesarias para cambiar el nmero binario en el archivo. Los editores de texto son incluidos en el sistema operativo o en algn paquete de software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos de configuracin, scripts o el cdigo fuente de algn programa. 14
El archivo creado por un editor de texto incluye por convencin en DOS y Microsoft Windows la extensin ".txt", aunque pueda ser cambiada a cualquier otra con posterioridad. Tanto Unix como Linux dan al usuario total libertad en la denominacin de sus archivos. Al trasladar archivos de texto de un sistema operativo a otro se debe considerar que existen al menos dos convenciones diferentes para sealar el trmino de una lnea: Unix y Linux usan slo retorno de carro en cambio Microsoft de carro y salto de lnea.
Tipos de editores de texto Hay una gran variedad de editores de texto. Algunos son de uso general, mientras que otros estn diseados para escribir o programar en un lenguaje. Algunos son muy sencillos, mientras que otros tienen implementadas gran cantidad de funciones. El editor de texto debe ser considerado como una herramienta de trabajo del programador o administrador de la mquina. Como herramienta permite realizar ciertos trabajos, pero tambin requiere de aprendizaje para que el usuario conozca y obtenga destreza en su uso. La llamada curva de aprendizaje es una representacin de la destreza adquirida a lo largo del tiempo de aprendizaje. Un editor puede ofrecer muchas funciones, pero si su curva de aprendizaje es muy larga, puede desanimar el aprendizaje y terminar siendo dejado de lado. Puede que un editor tenga una curva de aprendizaje muy empinada y corta, pero si no ofrece muchas funciones el usuario le reemplazar por otro ms productivo. Es decir la eleccin del editor ms apropiado depende de varios factores, alguno de ellos muy subjetivos. Esta coyuntura de intereses ha dado lugar a largas discusiones sobre la respuesta a la pregunta "cul es el mejor editor de texto?". Hoy en da muchos editores originalmente salidos de Unix o Linux han sido portados a otros sistemas operativos, lo que permite trabajar en otro sistemas sin tener que aprender el uso de otro editor. Algunos editores son sencillos mientras que otros ofrecen una amplia gama de funciones. Editores para profesionales deben ser capaces de leer archivos de gran extensin, mayor que la capacidad e la memoria RAM de la mquina y tambin arrancar rpidamente, ya que el tiempo de espera disminuye la concentracin y disminuye de por si la productividad. Los editores de texto sirven para muchas cosas pues facilitan el trabajo. 15
Algunos editores de texto incluyen el uso de lenguajes de programacin para automatizar engorrosos o repetidos procedimientos a realizar en el texto. Por ejemplo, Emacs puede ser adaptado a las necesidades del usuario, incluso las combinaciones de teclas para ejecutar funciones pueden ser adaptadas y es programable en Lisp. Muchos editores de texto incluyen coloreado de sintaxis y funciones que ofrecen al usuario completar una palabra iniciada usando para ello la configuracin. Algunas funciones especiales son: Editores diseados para un lenguaje de programacin determinado, con coloreado de sintaxis, macros, completacin de palabras, etc. Editores con regiones plegables. A veces no todo el texto es relevante para el usuario. Con este tipo de editores ciertas regiones con texto irrelevante pueden ser plegadas, escondidas, mostrando al usuario solo lo importante del texto. Un Entorno de desarrollo integrado es un programa que incluye un editor y otras herramientas de trabajo, como compiladores, extractores de diferencias entre dos textos, repositorios, etc., incluidos en un solo programa.
Funciones tpica de un editor de texto Marcar regin Es la funcin que marca, visualmente o no, una parte del texto para ser elaborada con otras funciones. La regin puede contener varias lneas del texto (regin horizontal) o bien varias columnas adyacentes del texto (regin vertical). Bsqueda y reemplazo El proceso de bsqueda de una palabra o una cadena de caracteres, en un texto plano y su reemplazo por otra. Existen diferentes mtodos: global, por regin, reemplazo automtico, reemplazo con confirmacin, bsqueda de texto o bsqueda de una Expresin regular. Copiar, cortar y pegar Sirve para copiar, trasladar o borrar una regin marcada. Formatear Los editores de texto permiten automatizar las nicas funciones de formateo que utilizan: quebrar la lnea, indentar, formatear comentarios o formatear listas. 16
Deshacer y rehacer Consiste en que el programa editor va almacenando cada una de las operaciones hechas por el usuario hasta un nmero configurable. Si el usuario se arrepiente de algn cambio, por muy anterior que sea, el editor le permite revertir todos los cambios hechos hasta el nmero configurado. Rehacer es por consiguiente, revertir algo revertido. Importar Agregar o insertar el contenido de un archivo en el archivo que se est editando. Algunos editores permiten insertar la salida o respuesta a un programa cualquiera ejecutado en la Lnea de comandos al archivo que se est editando. Filtros Algunos editores de texto permiten hacer pasar las lneas del texto o de una regin por algn programa para modificarlas u ordenarlas. Por ejemplo, para ordenar alfabticamente una lista de nombres o sacar un promedio de una lista de nmeros. Acceso remoto Un editor para trabajar en la administracin de una red de computadoras debe ofrecer la funcionalidad de editar archivos en mquinas remotas, ya sea por medio de ftp, ssh o algn otro protocolo de red. Emacs lo puede hacer mediante el plugin tramp (ampliamente configurable con ssh, ftp, scp, sftp, etc.), Ultraedit, del ambiente Windows, lo hace mediante ftp.
Ejemplos Bloc de notas, editor integrado en Windows, tambin conocido como Notepad (en ingls). Emacs, otro editor muy comn en Unix. Gedit, editor libre que se distribuye junto con GNOME para sistemas tipo Unix. Tambin disponible para Windows. jEdit, editor popular multiplataforma. Kate, editor para Unix. Notepad++, editor de cdigo fuente para Windows. Vi, editor muy comn en Unix.
17
1.8 Compiladores e Intrpretes Compilador Un compilador es un programa que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o simplemente texto. Este proceso de traduccin se conoce como compilacin. Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora. Como parte importante de este proceso de traduccin, el compilador informa a su usuario de la presencia de errores en el programa fuente. Partes de un compilador La construccin de un compilador involucra la divisin del proceso en una serie de fases que variar con su complejidad. Generalmente estas fases se agrupan en dos tareas: el anlisis del programa fuente y la sntesis del programa objeto. Anlisis: Se trata de la comprobacin de la correccin del programa fuente, e incluye las fases correspondientes al Anlisis lxico (que consiste en la descomposicin del programa fuente en componentes lxicos), Anlisis sintctico (agrupacin de los componentes lxicos en frases gramaticales ) y Anlisis semntico (comprobacin de la validez semntica de las sentencias aceptadas en la fase de Anlisis Sintctico). Sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generacin de Cdigo (normalmente se trata de cdigo intermedio o de cdigo objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo ms eficiente posible).
Tipos de compiladores Esta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categoras: 18
Compiladores cruzados: generan cdigo para un sistema distinto del que estn funcionando. Compiladores optimizadores: realizan cambios en el cdigo para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original. Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica lectura del cdigo fuente. Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de poder producir el cdigo mquina. Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del cdigo segn se necesitan. Pauta de creacin de un compilador: En las primeras pocas de la informtica, el software de los compiladores era considerado como uno de los ms complejos existentes. Los primeros compiladores se realizaron programndolos directamente en lenguaje mquina o en ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas versiones del compilador (u otros compiladores distintos) en el lenguaje que compila ese compilador. Actualmente existen herramientas que facilitan la tarea de escribir compiladores intrpretes informticos. Estas herramientas permiten generar el esqueleto del analizador sintctico a partir de una definicin formal del lenguaje de partida, especificada normalmente mediante una gramtica formal y barata, dejando nicamente al programador del compilador la tarea de programar las acciones semnticas asociadas.
Interprete Intrprete o interpretador es un programa informtico capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripcin en un lenguaje de programacin al cdigo de mquina del sistema, los intrpretes slo realizan la traduccin a medida que sea necesaria, tpicamente, instruccin por instruccin, y normalmente no guardan el resultado de dicha traduccin. Usando un intrprete, un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ejemplo. una PC y un PlayStation 3). Usando un 19
compilador, un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables especficos a cada sistema. Los programas interpretados suelen ser ms lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son ms flexibles como entornos de programacin y depuracin (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o aadir mdulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la mquina donde se ejecuta el intrprete, sino del propio intrprete (lo que se conoce comnmente como mquina virtual). Para mejorar el desempeo, algunas implementaciones de programacin de lenguajes de programacin pueden interpretar o compilar el cdigo fuente original en una ms compacta forma intermedia y despus traducir eso al cdigo de mquina (ej. Perl, Python, MATLAB, y Ruby). Algunos aceptan los archivos fuente guardados en esta representacin intermedia (ej. Python, UCSD Pascal y Java). Comparando su actuacin con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intrprete corresponde al intrprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito. En la actualidad, uno de los entornos ms comunes de uso de los intrpretes informticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.
Interpretadores de bytecode Hay un espectro de posibilidades entre la interpretacin y la compilacin, dependiendo de la cantidad de anlisis realizados antes de que el programa sea ejecutado. Por ejemplo, el Emacs Lisp es compilado a bytecode, que es una representacin altamente comprimida y optimizada del cdigo fuente del Lisp, pero no es cdigo de mquina (y por lo tanto no est atado a cualquier hardware particular). Este cdigo "compilado" es entonces interpretado por un interpretador de bytecode (que est escrito en C). En este caso, el cdigo compilado es el cdigo de mquina para una mquina virtual, que no est implementada en el hardware, sino en el interpretador de bytecode. El mismo acercamiento es utilizado con el cdigo Forth usado en sistemas Open Firmware: el lenguaje fuente es compilado en "cdigo F" (un bytecode), que entonces es interpretado por una mquina virtual.
20
Interpretadores de rbol de sintaxis abstracta En el espectro entre la interpretacin y la compilacin, otro acercamiento est transformando el cdigo fuente en un rbol de sintaxis abstracta optimizado (AST), y despus procediendo a ejecutar el programa siguiendo esta estructura arborescente. En este acercamiento cada sentencia necesita ser analizada (parsed) solo una vez. Como una ventaja sobre el bytecode, el AST mantiene la estructura y las relaciones globales del programa entre las sentencias (que se pierden en una representacin de bytecode), y proporciona una representacin ms compacta. As, el AST se ha propuesto como un mejor formato intermedio para los compiladores justo a tiempo que el bytecode. Tambin, permite realizar un mejor anlisis durante tiempo de ejecucin. Un interpretador Java basado en AST ha demostrado ser ms rpido que un interpretador similar basado en bytecode, gracias a las ms poderosas optimizaciones permitidas al tener la estructura completa del programa, as como tipos de datos de alto nivel, disponibles durante la ejecucin.
Ejemplos Algunos ejemplos de lenguajes que son normalmente interpretados en vez de compilados son: Perl PHP Javascript Logo ASP (hasta la versin 3) Python Tcl Ruby J# ASP
21
1.9 Ejecutables
En informtica, un ejecutable o archivo ejecutable, es tradicionalmente un, o como se le conoce mayormente, archivo binario cuyo contenido se interpreta por el ordenador como un programa. Generalmente, contiene instrucciones en cdigo mquina de un procesador en concreto, pero tambin puede contener bytecode que requiera un intrprete para ejecutarlo. Adems suele contener llamadas a funciones especficas de un sistema operativo (llamadas al sistema). Dependiendo del tipo de que se traten las instrucciones, hablaremos de ejecutables portables (se pueden ejecutar en varias plataformas) y no portables (destinado a una plataforma concreta). Por ejemplo, un ejecutable Java es portable ya que utiliza un bytecode no asociado a un procesador en concreto. Sin embargo en un sentido ms general, un programa ejecutable no tiene por qu necesariamente contener cdigo de mquina, sino que puede tener instrucciones a interpretar por otro programa. Este tipo de ejecutables son conocidos con el nombre de scripts. Determinar si un archivo es ejecutable es sobre todo una cuestin de convencin. Unos sistemas operativos se basan en la extensin de archivo (como la terminacin .exe) y otros lo hacen leyendo los metadatos (como los bits de permiso de ejecucin en Unix). En la mayora de los sistemas modernos, un archivo ejecutable contiene mucha informacin que no es parte del programa en s: recursos como textos e imgenes, requisitos del entorno de ejecucin, informacin simblica y de depuracin, u otra informacin que ayude al sistema operativo a ejecutar el programa.
1.10 Consola de lnea de comandos La interfaz de lnea de comandos, traduccin del ingls command-line interface o CLI la cual es, en realidad, una transcripcin incorrecta de Interfaz de lnea de rdenes, por el falso amigo command (orden/instruccin) es un mtodo que permite a los usuarios dar instrucciones a algn programa informtico por medio de una lnea de texto simple. Debe notarse que los conceptos de CLI, shell yemulador de terminal no son lo mismo, aunque suelen utilizarse como sinnimos. 22
Las CLI pueden emplearse interactivamente, escribiendo instrucciones en alguna especie de entrada de texto, o pueden utilizarse de una forma mucho ms automatizada (archivo batch), leyendo rdenes desde un archivo de scripts. Esta interfaz existe casi desde los comienzos de la computacin, superada en antigedad solo por las tarjetas perforadas y mecanismos similares. Existen para diversos programas y sistemas operativos, para diverso hardware, y con distinta funcionalidad. Por ejemplo, las CLI son parte fundamental de los shells o emuladores de terminal. Aparecen en todas las interfaces de escritorio (GNOME, KDE, Microsoft Windows) como un mtodo para ejecutar aplicaciones rpidamente. Aparecen como interfaz de lenguajes interpretados tales como Java, Python, Ruby oPerl. Tambin se utilizan en aplicaciones cliente-servidor, en gestores de bases de datos, en clientes FTP, etc. Las CLI son un elemento fundamental de aplicaciones de ingeniera tan importantes como MATLAB y AutoCAD. La contraparte de CLI es la interfaz grfica de usuario (GUI) que ofrece una esttica mejorada y una mayor simplificacin, a costa de un mayor consumo de recursos computacionales, y, en general, de una reduccin de la funcionalidad alcanzable. Asimismo aparece el problema de una mayor vulnerabilidad dada su complejidad. Las CLI son usadas por muchos programadores y administradores de sistemas como herramienta primaria de trabajo, especialmente en sistemas operativos basados en Unix; en entornos cientficos y de ingeniera, y un subconjunto ms pequeo de usuarios domsticos avanzados. En dispositivos porttiles y PDA, las CLI no se utilizan, debido a lo complejo que resulta ingresar datos de texto, o por la ausencia total de teclados
Funcionamiento En su forma ms simple, una CLI consiste en un espacio donde se pueden escribir rdenes (por lo usual sealizando con un prompt). El usuario teclea una orden y la ejecuta al pasar a la lnea siguiente, utilizando la tecla Entrar. Las rdenes dadas a la CLI son con frecuencia de la forma: PROMPT>aplicacin [parmetros] ficheros o URI... Al finalizar y enviar la orden con la tecla Entrar, un mdulo interpretador de rdenes analiza la secuencia de caracteres recibida y, si la sintaxis de la orden es correcta, ejecuta la orden dentro del contexto del programa o del sistema operativo donde se 23
encuentra. Esta forma de trabajo es secuencial, y equivale a un tipo de programacin paso a paso. El usuario percibe el procesamiento de sus instrucciones en forma de accin. Si al usuario se le enva esta informacin de procesamiento en forma de texto simple, entonces se le llama salida estndar o stdout. El usuario tambin puede recibir un informe textual de errores en un canal especializado llamado stderr. Casi todos los shells implementan la visualizacin de stdout y stderr al mismo dispositivo, en la mayora de los casos la pantalla. Tambin es posible usar scripts, es decir, archivos con instrucciones guardadas como si se estuviesen escribiendo en el momento. En caso de error, la ejecucin del script puede abortarse. De esta forma, la lnea de comandos puede utilizarse sin siquiera tener que lidiar con el prompt, ni estando presente frente al monitor o teclado.
Ejemplos de interaccin La instruccin para listar archivos, en diversos entornos: Programa o sistema operativo Orden Tipo de programa Bourne Ls Shell de Unix CMD Dir Shell de Windows NewShell list o dir AmigaDOS (shell de AmigaOS/MorphOS/AROS) Matlab Dir Procesamiento matricial Quake /dir Videojuego para PC TACL FILEINFO Shell de Guardin 24
PREGUNTAS 1. QUE ES UN SOFTWARE DE SISTEMAS? R: El software del sistema coordina las diferentes partes de un sistema de computadora y conecta e interacta entre el software de aplicacin y el hardware de la computadora.
2. QUE ES UN SOFTWARE DE APLICACIN?R: El software de aplicacin tiene como funcin principal asistir y ayudar a un usuario de un computador para ejecutar tareas especficas . 3. EJEMPLOS DE SOFTWARE DE APLICACIN R: hay de procesamiento de textos tales como la paquetera de Word, corel draw, entre otros.
4. QUE ES UN ALGORITMO? R: Es una secuencia de pasos que llevan orden para llegar a un fin o meta.
5. CUALES SON LAS CARACTERISTICAS DEL ALGORITMO? R: Preciso, finito, definido.
6. COMO SE DESCRIBE UN ALGORITMO?: Se puede describir en tres partes: entrada proceso y salida
7. DAME UN EJEMPLO DE UN ALGORITMO: Entrada: ingredientes y utensilios empleados. Proceso: elaboracin de la receta en la cocina. Salida: terminacin del plato (por ejemplo, pollo).
8. QUE ES UN LENGUAJE DE PROGRAMACION? Un lenguaje de programacin es un lenguaje formal diseado para expresar procesos que pueden ser llevados a cabo por mquinas como las computadoras.
9. PARA QUE PUEDE USARSE UN LENGUAJE DE PROGRAMACION?: Pueden usarse para crear programas que controlen el comportamiento fsico y lgico de una mquina, para expresar algoritmos con precisin, o como modo de comunicacin humana
10. COMO ESTA FORMADO UN LENGUAJE DE PROGRAMACION? R: Est formado por un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso 25
por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el cdigo fuente de un programa informtico se le llama programacin.
11. CMO SE LE DEDOMINA AL PROCESO DE TRADUCIR UN ALGORITMO EN PSEUDOCDIGO A UN LENGUAJE DE PROGRAMACIN? R: codificacin
12. CMO SE LE DENOMINA A UN ALGORITMO ESCRITO EN UN LENGUAJE DE PROGRAMACIN? R: se denomina cdigo fuente.
13. DAME UNOS EJEMPLOS DE LENGUAJES DE PROGRAMACIN : c++, c, java, pascal, visual hasta el mtico basic.
14. CULES SON LOS PRINCIPALES TIPOS DE LENGUAJES UTILIZADOS EN LA ACTUALIDAD? Son tres y son lenguaje mquina, lenguaje de bajo nivel o ensamblador lenguaje de alto nivel
15. CULES SON LAS CARACTERSTICAS DEL LENGUAJE MAQUINA? R: Est conformado por 0s y 1, hecho de lneas de cdigo que cuando ests escrita en lenguaje de mquina, hacen once lneas de cdigo binario, cada una de 16 bits.
16. QU ES UN LENGUAJE DE BAJO NIVEL O ENSAMBLADOR? R: Estos lenguajes fueron primeramente conocidos como lenguajes simblicos. El conjunto de estos lenguajes mnemnicos fueron ms tarde conocidos como lenguajes debajo nivel.
17. Qu es un lenguaje de alto nivel? R: Un lenguaje de programacin se caracteriza por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de la capacidad ejecutora de las mquinas.
18. Qu es un programa? R: Un programa de computadora o simplemente un programa, es una secuencia de instrucciones, escritas para realizar una tarea especfica con una computadora.
19. Qu es la programacin? R: La programacin es el proceso de disear, codificar, depurar y mantener el cdigo fuente de programas computacionales. El cdigo fuente es escrito en un lenguaje de programacin.
20. Qu es un paradigma de programacin? R: Es una propuesta tecnolgica que es adoptada por una comunidad de programadores cuyo ncleo central es 26
incuestionable en cuanto a que nicamente trata de resolver uno o varios problemas claramente delimitados
27
1. ayuda a un usuario de un computador para ejecutar tareas especficas ( )
2. conecta e interacta entre el software de aplicacin y el hardware de la computadora ( )
3. es un mtodo para resolver un problema ( )
4. sirven para escribir programas que permitan la comunicacin usuario/mquina ( )
5. Los nicos lenguajes de programacin que se usaron En los primeros das de las computadoras ( )
6. Cuantos tipos de lenguajes de programacin hay ( )
7. estn diseados para escribir o programar en un lenguaje ( )
8. es el proceso de disear, codificar, depurar y mantener el cdigo fuente de programas computacionales ( )
9. es un mtodo que permite a los usuarios dar instrucciones a algn programa informtico por medio de una lnea de texto simple ( )
10. editor integrado en Windows, tambin conocido como Notepad ( )
11. es un conjunto de instrucciones que sigue la computadora para alcanzar un resultado especfico ( )
12. es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior ( )
13. Considerado como una herramienta de trabajo del programador o administrador de la mquina ( )
14. Estos programas son, bsicamente, el sistema operativo, los editores de texto, los compiladores/intrpretes (lenguajes de programacin) y los programas de utilidad. ( )
15. tiene como funcin principal asistir y ayudar a un usuario de un computador para ejecutar tareas especficas ( )
16. El paradigma de programacin que actualmente es el ms usado ( ) 28
17. Realizan cambios en el cdigo para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original ( )
18. es un programa informtico capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel ( )
19. Consiste en que el programa editor va almacenando cada una de las operaciones hechas por el usuario hasta un nmero configurable ( )
20. El proceso de traducir un algoritmo en pseudocdigo a un lenguaje de programacin ( )
C.- Codificacin X.- Deshacer y rehacer Z.- Interprete R.- Compilador P.- Compiladores optimizadores O.- Orientacin a objetos U.- Software de aplicacin Y.- Software de sistema T.- Editor de texto E.- Programa W.- Bloc de notas Q.- Consola de lneas de comando K.- La programacin H.- 3 G.-Lenguaje maquina F.- Lenguaje de programacin D.- Algoritmo S.- Software de sistemas A.- Software de aplicacin M.- Java N.- Seudocdigo B.- Computadora V.- Hadware C.- Proceso
29
CONCLUSIN
Aprendimos los diferentes conceptos de cada tema y sus clasificaciones que es programa sus paradigmas e incluso vimos un poco sobre programacin debemos conocer cada aspecto de cada definicin ya que es de suma importancia conocer mas sobre estos temas y para que se utilizan cada ves la vida se vuelve mas competente y a esto tambin uno debe de ser mas competente, en las unidades siguientes veremos mas en practica estos temas y conoceremos mas a fondo.
30
BIBLIOGRAFIA Lenguajes de Lenguajes de Programacin Prof.: J. Solano 2011 Fundamentos de programacin Luis joyanes Aguilar 3 edicin mc Graw hill interamericana de Espaa, S, A, U. Metodologa de la programacin Algoritmos, diagramas de flujo y programas Dr. Osvaldo Cairo Battistutti 2005 ALFAOMEGA GRUPO EDITOR, S.A. de C.V. Pitgoras 1139, Col. Del Valle. 03100 Mxico. D.F. PRIETO ESPINOSA, Alberto y PRIETO CAMPOS, Beatriz. Conceptos de Informtica. Coleccin Schaum. Madrid: McGraw-Hill (2005). PRIETO, A., LLORIS, A. y TORRES, Introduccin a la informtica, 3. ed., Madrid: McGraw-Hill (2005).