Download Introducción a la Informática
Document related concepts
Transcript
Introducción a la Informática Software de la Computadora Universidad Tecnológica de los Andes Ing. Ronald Rentería Ayquipa [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI SOFTWARE DEL COMPUTADOR REPRESENTACIÓN DIGITAL DE LA INFORMACIÓN La representación de la información en los computadores digitales persigue dos objetivos: en primer lugar, procesarla, permitiendo su manipulación eficiente, para lo cual se han ideado diferentes convenios, de los que veremos los más importantes; y en segundo, asegurarla contra errores durante su almacenamiento o durante las transmisiones, lo que se consigue incorporando en la codificación el empleo de la redundancia para detectar y corregir dichos errores. Información analógica y digital Las magnitudes continuas son las que pueden adoptar los infinitos valores de un intervalo de números reales, tales como la longitud de un segmento, velocidad, temperatura, intensidad de un sonido, etc. Las magnitudes discretas tienen naturaleza discontinua, tales como la longitud (número de sílabas) de una palabra, capacidad (número de pasajeros) de un vehículo, etc. En la práctica, es frecuente que las magnitudes continuas sean tratadas como discretas: el peso de una persona (que se redondea en kilos); la temperatura (en grados y décimas de grado); la longitud de un segmento, medida con un dispositivo de precisión hasta los milímetros. En relación con ambos tipos de magnitud se considera la información analógica, que es de naturaleza continua, pudiendo tomar infinitos valores; y la información digital, que es de naturaleza discreta. Aunque esta última puede tomar infinitos valores (IN), en un computador digital la información es discreta y, además, finita. En las calculadoras, la digitalización de variables analógicas produce un efecto de redondeo, que debe ser tenido en cuenta y tratado convenientemente para evitar errores de cálculo; en el monitor de un ordenador, supone el ajuste de la imagen proyectada sobre una matriz de puntos. Unidades de información en los sistemas digitales La razón de ser de un computador es el procesamiento de información. Para poder hablar con propiedad de este procesamiento, debemos definir unidades de medida que nos permitan cuantificar de algún modo la acción del computador sobre la información suministrada. Consideramos las siguientes: Bit (Binary digit ): Es la cantidad de información que puede almacenarse en una variable binaria. No hay que confundir el bit con la variable ni con su valor: una variable binaria es la que puede tomar dos valores estables: 0 ó 1, blanco o negro, sí o no, etc. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 2 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI El bit es la unidad de información matemática más pequeña que puede manejar un ordenador. Es la forma que tiene el computador para representar los números 0 y 1. Los computadores se componen de dispositivos electrónicos, por lo que todas sus funciones las realizan mediante señales eléctricas. Una señal puede estar encendida (activada), lo que numéricamente representa un 1, o puede estar apagada (desactivada), lo que matemáticamente simboliza un 0. Físicamente un bit es un transistor pequeñísimo localizado dentro de una micropastilla (microchip) de silicio. La necesidad de codificar informaciones más complejas ha llevado a agrupar varios bits, apareciendo así las siguientes unidades: Byte u octeto: Es la cantidad de información que puede codificarse en 8 bits; representa por tanto 28 = 256 valores. Un grupo concatenado de 8 bits constituye un byte u octeto. La información que puede almacenarse en un byte es mucho mayor que aquella correspondiente a un bit. En principio, en un byte se puede representar cualquier número del 0 al 255, o cualquier tabla de símbolos que contenga hasta 256 caracteres diferentes. Cada byte se almacena en una celda de memoria separada, dispuesta ordenadamente dentro del computador. Uno de los índices para medir la capacidad de un ordenador es el número de bytes existentes en memoria principal y el número de bytes que pueden almacenarse en las unidades de memoria auxiliar. Es muy común, para ese tipo de caracterizaciones, el uso de los siguientes múltiplos del byte: 1 Kilobyte (Kbyte) 1 Megabyte (Mbyte) 1 Gigabyte (Gbyte) 1 Terabyte (Tbyte) = 210 bytes = 220 bytes = 230 bytes = 240 bytes = 1024 bytes = 1024 Kbytes = 1024 Mbytes = 1024 Gbytes Palabra: Se define en relación con la máquina considerada, como la cantidad de información que la máquina puede manejar de una sola vez. Para evitar equívocos, se habla de palabras de 8 bits, 16 bits, 32 bits, etc. Dada la limitada información que puede ser almacenada en un byte, es usual integrar varios bytes para guardar información utilizable. Esta nueva unidad se llama palabra, y el número de bytes involucrados en una palabra varía con los diferentes computadores y aplicaciones, siendo las más comunes las palabras de 1, de 2, de 4, y de 8 bytes. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 3 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Tanto la posición de una palabra dentro de la memoria (dirección), como la información guardada dentro de ella están descritas en sistema binario. Sistema binario El sistema binario, en matemáticas e informática, es un sistema de numeración en el que los números se representan utilizando solamente las cifras cero y uno (0 y 1). Es el que se utiliza en las computadoras, debido a que trabajan internamente con dos niveles de voltaje, por lo cual su sistema de numeración natural es el sistema binario (encendido 1, apagado 0). Conversión de Decimal a Binario Se divide el número del sistema decimal entre 2, cuyo resultado entero se vuelve a dividir entre 2, y así sucesivamente hasta que el dividendo sea menor que el divisor, 2. Es decir, cuando el número a dividir sea 1 finaliza la división. A continuación se ordenan los restos empezando desde el último al primero, simplemente se colocan en orden inverso a como aparecen en la división, se les da la vuelta. Éste será el número binario que buscamos. Ejemplo: Transformar el número decimal 131 en binario. El método es muy simple: 131 65 32 16 8 4 2 1 dividido dividido dividido dividido dividido dividido dividido dividido entre entre entre entre entre entre entre entre 2 2 2 2 2 2 2 2 da da da da da da da da 65 32 16 8 4 2 1 0 y y y y y y y y el el el el el el el el resto resto resto resto resto resto resto resto es es es es es es es es igual igual igual igual igual igual igual igual a a a a a a a a 1 1 0 0 0 0 0 1 -> Ordenamos los restos, del último al primero: 10000011 En sistema binario, 131 se escribe 10000011 Ejemplo: Transformar el número decimal 100 en binario. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 4 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Conversión de Binario a Decimal Para realizar la conversión de binario a decimal, realice lo siguiente: 1. Inicie por el lado derecho del número en binario, cada cifra multiplíquela por 2 elevado a la potencia consecutiva (comenzando por la potencia 0, 20). 2. Después de realizar cada una de las multiplicaciones, sume todas y el número resultante será el equivalente al sistema decimal. Ejemplos: (Los números de arriba indican la potencia a la que hay que elevar 2) Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 5 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI También se puede optar por utilizar los valores que presenta cada posición del número binario a ser transformado, comenzando de derecha a izquierda, y sumando los valores de las posiciones que tienen un 1. Ejemplo: El número binario 1010010 corresponde en decimal al 82. Se puede representar de la siguiente manera: Entonces se suman los números 64, 16 y 2: Ejercicios Propuestos: 1. Convertir : Pasa 10000 MB a GB Pasa 8 GB a KB Pasa 4 MB a Bytes Convertir 67839 GB a KB 78965 MB a bytes. 2. Realizar las siguientes operaciones Convertir a binario los números decimales 321, 1462, 205, 1023, 1024, 135, 45 y 967 Convertir a decimal los números binarios 111001, 101000, 100000001, 01111000, 0000011 y 10101 Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 6 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI SOFTWARE Se conoce como software al equipamiento lógico o soporte lógico de un sistema informático, comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos, que son llamados hardware. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación. Extraído del estándar 729 del IEEE Clasificación del Software Si bien esta distinción es, en cierto modo, arbitraria, y a veces confusa, a los fines prácticos se puede clasificar al software en tres grandes tipos: Software de sistema: Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles del sistema informático en particular que se use, aislándolo especialmente del procesamiento referido a las características internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global. Incluye entre otros: o Sistemas operativos o Controladores de dispositivos o Herramientas de diagnóstico o Herramientas de Corrección y Optimización o Servidores o Utilidades Software de programación: Es el conjunto de herramientas que permiten al programador desarrollar programas informáticos, usando diferentes alternativas y lenguajes de programación, de una manera práctica. Incluyen básicamente: o Editores de texto o Compiladores o Intérpretes o Enlazadores o Depuradores o Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir múltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario (GUI). Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 7 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Software de aplicación: Es aquel que permite a los usuarios llevar a cabo una o varias tareas específicas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial énfasis en los negocios. Incluye entre muchos otros: o Aplicaciones para Control de sistemas y automatización industrial o Aplicaciones ofimáticas o Software educativo o Software empresarial o Bases de datos o Telecomunicaciones (por ejemplo Internet y toda su estructura lógica) o Videojuegos o Software médico o Software de cálculo Numérico y simbólico. o Software de diseño asistido (CAD) o Software de control numérico (CAM) SISTEMA OPERATIVO Programa o conjunto de programas que: Controla todos los recursos de la computadora. Proporciona la base sobre la cual pueden escribirse todos los programas de aplicación. Presenta la máquina al usuario como una interfaz o máquina virtual. Gestiona los recursos de hardware. Facilita las tareas de programación: Proporciona lenguaje de control o comandos. Detecta errores Facilita operaciones de E/S. Gestiona operaciones con ficheros. Gestiona recursos internos de la máquina: Asignación de recursos. Resolución de conflictos, prioridades…. Chequeo del sistema. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 8 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Evolución de los Sistemas Operativos 1era. Generación: No existían S.O 2da. Generación: Sistemas de procesamiento por lotes 3era. Generación: Multiprogramación. Tiempo compartido, multitarea. Aparecen los S.O interactivos y para ordenadores pequeños. Actualidad: Interfaces gráficos, estándares. Ejemplos de S.O MS-DOS, Unix, Windows (3.1, 95, 98, 2000, NT, XP, Vista, 7), Linux, Solaris, Mac OS X Estructura de niveles de un ordenador Funciones del Sistema Operativo Gestión de: CPU Memoria Entrada/Salida Archivos Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 9 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Gestión de la CPU Dos tipos de sistemas: Monoprogramados: las operaciones de E/S, lentas, paran la CPU. Multiprogramados: se aprovechan los tiempos muertos para otras tareas: o Congelar un trabajo o Iniciar la operación de E/S o Ejecutar otro trabajo Gestión de la Memoria Un programa debe estar en memoria para ser ejecutado. El S.O (o parte de él) también debe estar en la memoria. Puede haber varios programas en memoria Para esto debe proporcionar mecanismos de gestión de estas zonas. Asigna espacio en memoria a los procesos cuando éstos la necesiten. Los libera cuando terminan. Memoria particionada estática Memoria particionada dinámica Memoria paginada Memoria Virtual: Parte del programa en memoria principal y parte en memoria secundaria. Swapping: intercambio de páginas entre memorias principal y secundaria. La memoria es “virtualmente mayor”. Gestión de Entrada/Salida Buscar hacer uso eficiente y transparente al usuario de la Entrada/Salida. Funciones: Enviar comandos a los dispositivos de E/S Detectar interrupciones Controlar errores Debe proporcionar una interfaz con los dispositivos y el resto del sistema Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 10 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Gestión de Archivos La información se puede almacenar en dispositivos físicos de almacenamiento. Esta se agrupa y se le da formato en ficheros o archivos. Estos se guardan ordenadamente en carpetas llamadas directorios. Un fichero se identifica por su nombre y por el directorio donde se encuentra. Funciones del S.O: Creación de ficheros o directorios Borrado de ficheros o directorios Lectura/Escritura, copia LENGUAJE DE PROGRAMACIÓN En computación, un programa es una secuencia de instrucciones que permiten a un ordenador procesar una información conocida como datos de entrada (input) para producir una información de salida (ouput) o resultados. Esas instrucciones pertenecen a (o están escritas en) un lenguaje de programación determinado. Un lenguaje de programación es una construcción mental del ser humano para expresar programas. Está constituido por un grupo de reglas gramaticales, un grupo de símbolos utilizables, un grupo de términos monosémicos (es decir, con sentido único) y una regla principal que resume las demás. Para que ésta construcción mental sea operable en un computador debe existir otro programa que controle la validez o no de lo escrito. A éste se le llama traductor. Los lenguajes pueden ser de alto o bajo nivel. En los de bajo nivel las instrucciones son simples y cercanas al funcionamiento de la máquina, como por ejemplo el código máquina y el ensamblador. En los lenguajes de alto nivel hay un alto grado de abstracción y el lenguaje es más próximo a los humanos, como por ejemplo Lexico, PASCAL, Cobol o Java . Los programas escritos en un lenguaje deben ser "entendidos" por los circuitos físicos de la máquina para poder ser ejecutados. Según que esta traducción se realice produciendo previamente o no una versión independiente de la herramienta utilizada los lenguajes se llaman compilados o interpretados. En el primer caso a la versión independiente producida se le conoce como código o programa ejecutable, no es legible para el usuario y usualmente se le identifica con la extensión de nombre .exe (en sistemas Windows). En el segundo caso no se construye otra versión razón por la cual ha de distribuirse el programa original llamado código o programa fuente y el usuario debe poseer también la herramienta con la cual se ha programado y que interpreta ese código. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 11 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Empezaremos con unas definiciones un poco técnicas, pero que son imprescindibles para el aprendizaje. Tecnología Dentro del campo que nos interesa a nosotros, la tecnología tiene el objetivo de eliminar las tareas repetitivas, facilitando el trabajo y haciéndolo más eficiente así como aumentando la productividad y los beneficios de la empresa. Programación La programación es una de las etapas más importantes del ciclo de vida de un proyecto, y requiere un método de trabajo. La programación es el resultado de dicho trabajo. La programación es el instrumento que permite la ejecución de las tareas automatizadas de un sistema informático. Las herramientas que utilizaremos para programar son los lenguajes de programación, a través de las cuales codificaremos los programas. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación. También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos: * El desarrollo lógico del programa para resolver un problema en particular. * Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa). * Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina. * Prueba y depuración del programa. * Desarrollo de la documentación. Programa Conjunto de instrucciones entendibles por el ordenador que permiten realizar un trabajo o resolver un problema. Un programa debe ser finito, es decir, tiene que tener un inicio y un fin. Tiene que estar bien confeccionado para que, al introducir un dato, salga una solución y si se volviese a introducir el mismo dato, saliese de nuevo la misma solución. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 12 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Metodología de la programación Se entiende como metodología de la programación al conjunto de normas, métodos y anotaciones que nos indican la forma de programar. Cada lenguaje de programación sigue una metodología distinta. Lenguaje de programación Es un conjunto de reglas semánticas así como sintácticas que los programadores usan para la codificación de instrucciones de un programa o algoritmo de programación. Existen varios lenguajes de programación. Entorno de programación o entorno de desarrollo Es el conjunto de herramientas utilizadas para la elaboración de un programa. Recursos Conjunto de componentes hardware que utilizaremos para la elaboración de un programa (cpu, disco duro…..). TIPOS DE LENGUAJES DE PROGRAMACIÓN Una vez conocidos los conceptos básicos necesarios para el aprendizaje de la programación podemos empezar a ver los diferentes tipos de lenguajes de programación. Existen dos tipos de lenguajes claramente diferenciados; los lenguajes de bajo nivel y los de alto nivel. El ordenador sólo entiende un lenguaje conocido como código binario o código máquina, consistente en ceros y unos. Es decir, sólo utiliza 0 y 1 para codificar cualquier acción. Los lenguajes más próximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran más cercanos a los programadores y usuarios se denominan lenguajes de alto nivel. Lenguajes de bajo nivel Son lenguajes totalmente dependientes de la máquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas. Al estar prácticamente diseñados a medida del hardware, aprovechan al máximo las características del mismo. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 13 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Dentro de este grupo se encuentran: * El lenguaje maquina: este lenguaje ordena a la máquina las operaciones fundamentales para su funcionamiento. Consiste en la combinación de 0's y 1's para formar las ordenes entendibles por el hardware de la maquina. Este lenguaje es mucho más rápido que los lenguajes de alto nivel. La desventaja es que son bastantes difíciles de manejar y usar, además de tener códigos fuente enormes donde encontrar un fallo es casi imposible. * El lenguaje ensamblador es un derivado del lenguaje maquina y está formado por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje ensamblador, añadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener. Ejemplos de Lenguajes de bajo nivel * Código máquina * Ensamblador Lenguajes de alto nivel Son aquellos que se encuentran más cercanos al lenguaje natural que al lenguaje máquina. Están dirigidos a solucionar problemas mediante el uso de EDD's. Nota: EDD's son las abreviaturas de Estructuras Dinámicas de Datos, algo muy utilizado en todos los lenguajes de programación. Son estructuras que pueden cambiar de tamaño durante la ejecución del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa. Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin ningún tipo de problema. Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que están diseñando el programa. Tan solo necesitan un traductor que entiendan el código fuente como las características de la maquina. Suelen usar tipos de datos para la programación y hay lenguajes de propósito general (cualquier tipo de aplicación) y de propósito especifico (como FORTRAN para trabajos científicos). Ejemplos de Lenguajes de alto nivel Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 14 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI * ADA * ALGOL * BASIC * Clipper * Cobol * C++ * FORTH * Fortran * Haskell * Informix 4gl * Java * Lexico (con códigos en castellano o sinónimos en otros idiomas) * Lisp * Logo * Modula * PASCAL * Prolog * RPG * Visual Basic Lenguajes de Medio nivel Se trata de un término no aceptado por todos, pero que seguramente habrás oído. Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel. Ejemplos de Lenguajes de medio nivel * BCPL *C Lenguajes de programación imperativos y funcionales Los lenguajes de programación también se dividen en dos grupos principales en base al procesamiento de sus comandos: * Lenguajes imperativos; * Lenguajes funcionales. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 15 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Lenguaje de programación imperativo Un lenguaje imperativo programa mediante una serie de comandos, agrupados en bloques y compuestos de órdenes condicionales que permiten al programa retornar a un bloque de comandos si se cumple la condición. Estos fueron los primeros lenguajes de programación en uso y aún hoy muchos lenguajes modernos usan este principio. No obstante, los lenguajes imperativos estructurados carecen de flexibilidad debido a la secuencialidad de las instrucciones. Lenguaje de programación funcional Un lenguaje de programación funcional(a menudo llamado lenguaje procedimental) es un lenguaje que crea programas mediante funciones, devuelve un nuevo estado de resultado y recibe como entrada el resultado de otras funciones. Cuando una función se invoca a sí misma, hablamos de recursividad. Interpretación y compilación Los lenguajes de programación pueden, en líneas generales, dividirse en dos categorías: * Lenguajes interpretados * Lenguajes compilados Lenguaje interpretado Un lenguaje de programación es, por definición, diferente al lenguaje máquina. Por lo tanto, debe traducirse para que el procesador pueda comprenderlo. Un programa escrito en un lenguaje interpretado requiere de un programa auxiliar (el intérprete), que traduce los comandos de los programas según sea necesario. Lenguaje compilado Un programa escrito en un lenguaje "compilado" se traduce a través de un programa anexo llamado compilador que, a su vez, crea un nuevo archivo independiente que no necesita ningún otro programa para ejecutarse a sí mismo. Este archivo se llama ejecutable. Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un programa anexo para ser ejecutado una vez que ha sido compilado. Además, como sólo es necesaria una traducción, la ejecución se vuelve más rápida. Sin embargo, no es tan flexible como un programa escrito en lenguaje interpretado, ya que cada modificación del archivo fuente (el archivo comprensible para los seres humanos: el archivo a compilar) requiere de la compilación del programa para aplicar los cambios. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 16 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Por otra parte, un programa compilado tiene la ventaja de garantizar la seguridad del código fuente. En efecto, el lenguaje interpretado, al ser directamente un lenguaje legible, hace que cualquier persona pueda conocer los secretos de fabricación de un programa y, de ese modo, copiar su código o incluso modificarlo. Por lo tanto, existe el riesgo de que los derechos de autor no sean respetados. Por otro lado, ciertas aplicaciones aseguradas necesitan confidencialidad de código para evitar las copias ilegales (transacciones bancarias, pagos en línea, comunicaciones seguras...). Lenguajes intermediarios Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python...) dado que el programa escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de compilación intermediaria, en un archivo escrito en un lenguaje ininteligible (por lo tanto diferente al archivo fuente ) y no ejecutable (requeriría un intérprete). Los applets Java, pequeños programas que a menudo se cargan en páginas web, son archivos compilados que sólo pueden ejecutarse dentro de un navegador web (son archivos con la extensión .class). Generaciones de lenguajes La evolución de los lenguajes de programación se puede dividir en 5 etapas o generaciones. * Primera generación: lenguaje maquina. * Segunda generación: se crearon los primeros lenguajes ensambladores. * Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol… * Cuarta generación. Son los lenguajes capaces de generar código por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Ej. Visual, Natural Adabes… * Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP METODOLOGÍAS DE PROGRAMACIÓN En este artículo y los sucesivos veremos las herramientas y técnicas que nos ayudan a diseñar algoritmos para la resolución de los problemas en la programación estructurada. Estructuras de un programa Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 17 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Un programa se va a dividir en 3 partes claramente diferenciadas: * Procesos de entrada * Proceso de datos * Procesos de salida Todo programa está constituido por un conjunto de instrucciones capaces de gestionar un conjunto de datos. Algoritmos Un algoritmo es la descripción abstracta de todas las acciones que debe realizar un ordenador, que nos conduce a la solución del problema. Debe ser conciso y detallado, así como finito, pero sobre todo tiene que ser claro y lo más sencillo posible. Herramientas y técnicas para el diseño de algoritmos Para el diseño de algoritmos lo que más se utiliza son los diagramas de flujos. Diagramas de flujo Los diagramas de flujo son representaciones gráficas que mediante el uso de símbolos unidos mediante líneas de flujo, muestran la secuencia lógica que se debe suceder para la solución del problema. Los diagramas de flujo deber ser independientes del lenguaje de programación empleado, deben ser flexibles y sencillos. Por otro lado tienen que estar normalizados con algún estándar como puede ser el ISO (a nivel mundial), ANSI (a nivel americano) o el IEEE ( a nivel europeo) Existen 3 tipos de diagramas de flujos: * Organigramas: Representación gráfica sencilla con los elementos que representas las entradas y salida de datos del programa * Ordinograma: Representación gráfica con secuencias lógicas y detalladas de todos los pasos a seguir para la resolución del algoritmo. * Pseudocódigo: Lenguaje intermedio entre el natural y el de programación que representa mediante la palabra la solución del algoritmo. Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 18 [INTRODUCCIÓN A LA INFORMÁTICA] UTEA - CPISEI Algunos ejemplos de lenguajes ampliamente usados A continuación, encontrará una breve lista de los lenguajes de programación actuales: Lenguaje Principal área de aplicación Compilado/interpretado ADA Tiempo real Lenguaje compilado BASIC Programación para fines educativos Lenguaje interpretado C Programación de sistema Lenguaje compilado C++ Programación de sistema orientado a objeto Lenguaje compilado Cobol Administración Lenguaje compilado Fortran Cálculo Lenguaje compilado Java Programación orientada a Internet Lenguaje intermediario MATLAB Cálculos matemáticos Lenguaje interpretado Cálculos matemáticos Cálculos matemáticos Lenguaje interpretado LISP Inteligencia artificial Lenguaje intermediario Pascal Educación Lenguaje compilado PHP Desarrollo de sitios web dinámicos Lenguaje interpretado Inteligencia artificial Inteligencia artificial Lenguaje interpretado Perl Procesamiento de cadenas de caracteres Lenguaje interpretado Ing. Ronald Rentería Ayquipa | SOFTWARE DEL COMPUTADOR 19