Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Como su nombre lo indica, los lenguajes de programación son lenguajes formales necesarios para que un programador pueda construir un software. Como todo lenguaje, cuentan con una sintaxis bien definida que establece las reglas, el modo en el cual se deben escribir los algoritmos (que conformarán el código del sistema) y una semántica que se encarga de estudiar el significado de lo escrito (lo codificado). Utilizando un lenguaje de programación, un programador escribe el conjunto de sentencias que un computador ejecutará. Existen diferentes lenguajes, cada uno tiene sus ventajas y desventajas de acuerdo con el propósito que fueron construidos y con el tipo de sistemas que construirán. En este módulo, veremos sus características con algunos ejemplos. Empezaremos con la definición de conceptos básicos. Código fuente Lección 2 de 7 Unidad 1: Características de los lenguajes https://updf.com Se denomina así al código escrito directamente por el programador en un lenguaje determinado. Es solo el código dispuesto en un conjunto de archivos que contienen las instrucciones sobre qué es lo que la máquina debe hacer, junto con directorios que organizan dichos archivos. Figura 1: Ejemplo de código fuente (en C++) Fuente: elaboración propia. Lenguajes de alto y bajo nivel https://updf.com Se denominan “lenguajes de alto nivel” a aquellos que abstraen la complejidad de la máquina en la que se va a ejecutar el código. Por ejemplo, no es lo mismo escribir un programa para Linux que para Windows, tampoco para computadores con distinto hardware. Los lenguajes de alto nivel nos permiten abstraernos de eso (es decir, no tenerlo en cuenta), ya que contienen componentes que traducen el lenguaje de alto nivel en otro que puede ser entendido y ejecutado por una máquina. En la mayoría de los casos, un programador interactúa y escribe su código con este tipo de lenguaje. Entre ellos, encontramos C, C++, Python, Java, C# y JavaScript. Figura 2: Código de alto nivel (en C++) Fuente: elaboración propia. https://updf.com Por otro lado, los lenguajes de bajo nivel generalmente son específicos de la arquitectura de la máquina en la que se ejecuta el código. Prácticamente, ejercen un control directo sobre el hardware; un ejemplo es el lenguaje assembler (cuya abreviatura es “asm”), con el que podemos especificar instrucciones básicas para procesadores o circuitos integrados. En la mayoría de los casos, no es necesario para un programador codificar en un lenguaje de bajo nivel, ya que se puede generar compilando el código escrito en lenguaje de alto nivel. Figura 3: Código de bajo nivel (assembler) https://updf.com https://updf.com Fuente: Holley, 1980, https://bit.ly/3kdhuI5 Tema 1: Lenguajes compilados y lenguajes interpretados Una de las principales características de un lenguaje de programación es si funciona mediante compilación o si es interpretado. Veamos qué significa esto. Compilado Un lenguaje compilado es aquel que se escribe en un lenguaje de alto nivel y, luego, es traducido a un ejecutable para una plataforma específica (por ejemplo, Linux, Windows, entre otras) mediante un proceso llamado “compilación”. La compilación es realizada por un compilador, cuya principal función es realizar dicha tarea y validar que el código haya sido escrito correctamente (respetando la sintaxis). Una vez terminada la compilación, podemos ejecutar el programa resultante. Mientras no cambiemos el código fuente, no necesitamos compilarlo de nuevo cada vez que se ejecute. https://updf.com La principal ventaja de utilizar un lenguaje compilado es que su velocidad de ejecución es más rápida que la de los interpretados. Entre los más utilizados, se encuentran C, C++, Java y Go. Figura 4: Lenguaje compilado Fuente: elaboración propia. Interpretado Un lenguaje interpretado se considera aquel que es traducido a instrucciones propias de la plataforma línea por línea mientras es ejecutado. Esto significa que la traducción y ejecución se hacen en el mismo momento. En general, se utilizan lenguajes compilados cuando la eficiencia de ejecución es muy importante. https://updf.com A diferencia de los compilados, que necesitan terminar de compilar todo el código fuente antes de ser ejecutados, estos lenguajes van siendo traducidos por un intérprete en tiempo real; el código fuente es interpretado junto a la ejecución. Por este motivo cada vez que ejecutamos un lenguaje interpretado, incluso si no cambiamos el código, se interpreta y se traduce nuevamente al lenguaje de la plataforma. La principal ventaja de un lenguaje interpretado es que es muy independiente de la plataforma, donde es ejecutado y más flexible a la hora de codificar. El costo de esto es que, al ser interpretados y ejecutados al mismo tiempo, son más lentos. Figura 5: Lenguaje interpretado En general, se utilizan lenguajes interpretados cuando se necesita que el programa se ejecute en diversas plataformas y la eficiencia de ejecución no es tan importante. https://updf.com Fuente: elaboración propia. Tabla 1: Compilado versus interpretado Característica Compilado Interpretado Velocidad Muy alta Alta Flexibilidad de codificación Alta Muy alta Capacidad de ejecutarse en diferentes plataformas Media Alta Ejemplos C, C++, Java y Go Python y JavaScript Fuente: elaboración propia. https://updf.com Tema 2: Tipado Podemos definir el tipado de un lenguaje de programación de la forma en la que los tipos de variables son definidos. Para entender esto, veamos, primero, a modo introductorio, qué son las variables. Las variables son simplemente nombres que se asocian a un valor o dato específico, el cual será utilizado durante la ejecución del código. Dado que estos datos pueden ser diversos (números, letras, símbolos o textos), se debe especificar qué tipo de dato se almacenará en las variables. Dicho de otro modo, las variables serán creadas para almacenar un tipo de dato determinado. Teniendo en cuenta los distintos tipos de datos que se pueden almacenar en variables, podemos desarrollar los diferentes tipados. No existe una regla general sobre cuándo usar un lenguaje interpretado y cuándo uno compilado. Según la situación y el sistema que queramos construir, debemos decidir cuál será el mejor lenguaje. https://updf.com Lenguajes estáticos Un lenguaje estático es aquel que, una vez que definimos una variable de un tipo determinado, no permite que cambiemos su tipo. En otras palabras, si delimitamos una variable de un tipo específico, solamente podemos asignarles valores de ese tipo y solo de ese tipo. Por ejemplo, si definimos una variable como un número entero (“int” en C++), no podemos luego asignarle un texto como valor. Figura 6: Asignación inválida de valor (distintos tipos de datos) en C++ Fuente: elaboración propia. Lenguajes dinámicos A diferencia de los estáticos, en los lenguajes dinámicos, no se especifica de manera explícita el tipo de dato: los tipos se infieren o deducen mediante el valor asignado a la variable en tiempo de ejecución. Otra diferencia es https://updf.com que una misma variable puede tener diferentes tipos de valores en diferentes momentos. Veamos un ejemplo en Python: Figura 7: Ejemplo en Python Fuente: elaboración propia. En este caso, no necesitamos definir el tipo de variable; simplemente, le asignamos los valores. Lenguajes débilmente tipados Todos los lenguajes, tanto los dinámicos como los estáticos, tienen chequeos de tipos. Por ejemplo, ningún lenguaje puede sumar un número con una palabra, simplemente porque la suma es entre números y solo entre números. https://updf.com Un lenguaje débilmente tipado realiza esos chequeos en tiempo de ejecución, es decir, al mismo momento de la ejecución del código. Un ejemplo es Python. Lenguajes fuertemente tipados A diferencia de los débilmente tipados, estos lenguajes no esperan ejecutarse para realizar el chequeo de datos; por el contrario, lo realizan en paralelocon la compilación. Un programa fuertemente tipado no llega a ejecutarse si tiene una operación inválida de tipos. Ejemplos de este tipo de lenguaje son C++, Java, C# y Go. Tabla 2: Comparación de estáticos, dinámicos, fuertemente y débilmente tipados Características Lenguajes de ejemplo Estáticos La definición de tipo de variables es fija: una vez realizada, no se puede asignar otro tipo de datos como valor. Java, C++, C# y Go. Dinámicos Permiten que una variable deduzca el tipo al momento en que se le otorga un valor. Esto Pytho https://updf.com permite que a una misma variable se le asignen distintos tipos de valores en diferentes momentos. Fuertement e tipados Controlan que el tipeo sea correcto al momento de la compilación. Java, C++, C# y Go Débilmente tipados Controlan que el tipeo sea correcto al momento de ejecución. Python Fuente: elaboración propia. Algunas características de la tabla anterior no son excluyentes; un lenguaje puede ser estático y fuertemente tipado, o dinámico y débilmente tipado. Que sea estático o dinámico depende de la forma en que se establezcan los tipos de variables; por otro lado, que sea fuerte o débilmente tipado obedece al modo en que se realiza el chequeo de dichos tipos. Tema 3: Tipos de paradigmas Un paradigma es un concepto abstracto. Consiste en la definición de un modelo o patrón en cualquier disciplina física. Nace de una comunidad científica que, especializada en un tema particular, decide plantear algún nuevo concepto abstracto o una forma de pensar y resolver situaciones o problemas. https://updf.com En programación, el paradigma nos determina cómo va a ser la estructura del proyecto, de los bloques de código de los programas y de los elementos que los constituyen. Existen diferentes paradigmas, entre los cuales los más importantes son el imperativo, el declarativo y el orientado a objetos. Paradigma imperativo – El paradigma imperativo se caracteriza por desarrollar software mediante un conjunto de instrucciones que indican cómo realizar la tarea. Por ejemplo, una receta de cocina se puede considerar como imperativa, ya que describe paso a paso cómo debe cocinarse un determinado plato. Un ejemplo de lenguaje imperativo es C++. Paradigma declarativo – En el caso del paradigma declarativo, no definimos el conjunto de pasos o instrucciones, sino que determinamos directamente el estado final de lo que deseamos obtener y le dejamos al computador que defina cuál es el mejor método para hacerlo. Por ejemplo, cuando vamos a un restaurante y pedimos un plato específico, no indicamos todos los pasos para cocinar dicho plato; simplemente, mencionamos qué queremos, y es responsabilidad del cocinero realizarlo de manera correcta. Uno de los lenguajes declarativos más utilizados es SQL, empleado para manipular bases de datos. Las bases de datos son repositorios para la información que un programa necesita almacenar. Entre las más importantes, se https://updf.com Tabla 3: Comparación de paradigmas Paradigma Características Lenguajes de ejemplo Imperativo En la codificación, se indica cómo llegar a un resultado. El computador obedece las Java, C++, C#, Go y Python encuentran Microsoft SQL, MySQL y MongoDB. Paradigma orientado a objetos – El paradigma orientado a objetos establece que podemos modelar y codificar la solución de un problema identificando los objetos que participan en el proceso. Un objeto puede definirse como cualquier entidad que sea capaz de tener algún atributo o característica y de realizar una acción dentro del sistema. Por ejemplo, si estamos codificando un sistema para una veterinaria, tendríamos un objeto llamado “animal”, que tiene características como tipo de animal (perro, gato), raza (gran danés, siamés). Por ser similar a la forma en que los seres humanos resuelven los problemas de manera natural, el paradigma orientado a objetos es uno de los más utilizados. https://updf.com instrucciones que el programador ha especificado, incluso si no es la manera más eficiente. Declarativo No se componen de instrucciones. El programador simplemente indica el resultado final al que se desea llegar. El computador sabe cuál es la forma óptima para llegar a ese resultado. SQL Orientado a objetos Modelan la codificación del sistema mediante los objetos que interactúan entre ellos. Java, C# y Python Fuente: elaboración propia. Tema 4: Mulitplataformas Un lenguaje multiplataforma es aquel que permite la ejecución de un programa (aplicación o software) sin necesidad de compilarlo cada vez que cambiamos de plataforma. Cuando hablamos de plataforma, nos referimos al sistema base en donde va a correr nuestro programa. Generalmente, se refiere al sistema operativo https://updf.com (como Windows o Linux), pero puede haber casos en que también se incluyan ciertos aspectos del hardware. Dichos aspectos pueden estar ligados al tipo de dispositivo, ya que, actualmente, es necesario implementar aplicaciones tanto en computadores y servidores como en dispositivos móviles (celulares, tablets, GPS, etc.). Software multiplataforma Un software con esta característica puede ser implementado y utilizado en diferentes tipos de computadores con, incluso, diferentes sistemas operativos. Construir un sistema multiplataforma obliga a tener en cuenta las diferentes interfaces de programación de aplicaciones (API, por sus siglas en inglés) para que este pueda operar de igual modo. Por ejemplo, deberá poder enviar a imprimir documentos tanto en una computadora con Windows como en una con Linux. Sin embargo, no solo es importante considerar los sistemas operativos, sino también tener en cuenta que las arquitecturas y recursos de las computadoras o servidores (discos, memorias, etc.) pueden impedir que ciertas funcionalidades se comporten de igual modo. Lo que funciona en una máquina puede no hacerlo en otra diferente, aunque ambas tengan el mismo sistema operativo. En muchos casos, los programadores deben prever dónde se implementará el sistema para ajustar sus códigos, configuraciones o seguir ciertos estándares. Algunas tecnologías tienen https://updf.com características que abstraen al programador de estas particularidades y permiten que un mismo compilado sea multiplataforma. Aplicaciones web multiplataforma Este tipo de aplicaciones tienen la ventaja de ser ejecutadas en navegadores que ya deben estar instalados en la computadora del usuario (Google Chrome, Mozilla Firefox, Opera, Safari, Internet Explorer, etc.), por lo que son estos mismos los que se encargan de la interacción con el sistema operativo y la máquina. Para esto, implementan una arquitectura cliente-servidor, que permite que gran parte de las funcionalidades del sistema estén en un servidor remoto. De todos modos, algunas características de ellas pueden funcionar o no en todos los navegadores, lo que obliga al programador a tener en cuenta estos posibles casos. Figura 8: Arquitectura web multiplataforma https://updf.com Fuente: elaboración propia. SUBMIT Un lenguaje de programación no puede ser estático y dinámico a la vez, pero sí puede ser fuertemente tipado y débilmente tipado a la vez. Verdadero. Falso. https://updf.com El desarrollo de programas se realiza siguiendo métodos definidos y estructurados. La ingeniería del software se encarga del estudio de todo el proceso que envuelve la realización de las aplicaciones informáticas. Dentro de este proceso, se encuentra la 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. Es el instrumento que permite la ejecución de las tareas automatizadas de un sistema informático. Las herramientas utilizadas para programar son los lenguajes de programación, a través de las cuales se codifican los programas o aplicaciones. Metodología de la programación Se entiende como “metodologíade 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. Lección 3 de 7 Unidad 2: Conceptos de la programación https://updf.com Lenguaje de programación Es un conjunto de reglas semánticas y 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, y cada uno tiene sus propias características. Según el tipo de software que se necesite construir, se debe optar por el/los más adecuado/s para el caso. Entorno de programación o entorno de desarrollo Surge de la elección del/los lenguaje/s más apropiado/s para la programación del sistema, más todas las herramientas necesarias con las cuales él mismo va a interactuar durante todo el proceso de construcción. Existen aplicaciones informáticas que facilitan a los programadores el desarrollo de software, son denominadas “entornos de desarrollo integrado” (IDE, por sus siglas en inglés). Consisten de un editor de código fuente, herramientas de construcción automáticas y un depurador de código. Recursos https://updf.com Son un conjunto de componentes hardware que utilizaremos para la elaboración de un programa (memorias, CPU, disco duro, etc.). Tema 1: Origen y características Inicialmente, el proceso de programación se realizaba en lenguajes de programación más cercanos a la computadora, lenguajes de más bajo nivel (lenguaje máquina). Los datos están codificados en sistema binario, y no es necesaria la traducción. Entre las características del lenguaje máquina, cabe destacar las siguientes: El lenguaje ensamblador surgió como evolución natural, donde a cada secuencia de ceros y unos se le asocia un nombre nemotécnico. Estos nombres necesitan traducción, que se realiza mediante un programa que se llama como el lenguaje: ensamblador. Aunque fue un gran avance, todavía Es dependiente de los recursos de la computadora; por lo tanto, para programar, el programador debe conocer la arquitectura sobre la que programa. El programador se encarga de verificar que no existan errores sintácticos, pues no existe un compilador que los detecta. El programador trabaja directamente con direcciones de memoria. https://updf.com es necesario conocer cómo está constituida y qué recursos tiene la computadora. Más tarde, se fueron asociando nombres a conjuntos de instrucciones que realizaban una tarea compleja determinada y programaban de manera independiente la computadora donde se iba a ejecutar el código. Nacen los lenguajes de alto nivel y se encuentran más cercanos a la forma de pensar de los humanos que al lenguaje que entiende la máquina. La programación, de la mano de los lenguajes, fue evolucionando gracias a cuatro causas o motores que la impulsan. Estas son las siguientes: Abstracción – Es el proceso mental por el que el ser humano extrae las características esenciales de algo e ignora los detalles superfluos. Es esencial para modelar el mundo real. En un principio, se hacían programas pensando como una computadora. En la actualidad, se solucionan los problemas sin conocer la máquina donde va a ser ejecutado el programa. Encapsulación – Es el proceso por el que se ocultan los detalles de las características de una abstracción. En programación, es esencial para reutilizar un código. Si https://updf.com Características de la programación se ocultan los detalles de cómo está hecho un programa, pero se conoce el modo de funcionamiento, se puede utilizar en cualquier otro programa. Modularidad – Es el proceso de descomposición de un sistema en un conjunto de elementos poco acoplados (independientes) y cohesivos (con significado propio). Es esencial para abordar la resolución de problemas extensos o complicados de un modo más simple y organizado. Jerarquía – Es el proceso de estructuración por el que se organiza un conjunto de elementos en distintos niveles, atendiendo a determinados criterios (responsabilidad, composición, etc.). A medida que se fueron añadiendo nuevas características al proceso y a las herramientas, fueron surgiendo múltiples estilos de programación. https://updf.com Es importante tener algunas consideraciones para que la programación sea de buena calidad y los resultados sean o se acerquen lo más posible a los esperados. Para esto, se pueden enunciar las siguientes características que se deben tener en cuenta durante la programación de aplicaciones: Eficacia: el programa ejecuta correctamente las tareas definidas por su especificación y satisface los objetivos de los usuarios. Un programa exacto regresa el resultado correcto del cálculo que hace o lleva a cabo la tarea requerida de la forma esperada. Eficiencia: el programa hace un uso adecuado y no malgasta los recursos de la computadora, como la memoria y el tiempo de procesamiento. Un programa eficiente completará la tarea con mayor rapidez con respecto a otro programa que no lo es. Integridad o completitud: un programa es completo solo si ejecuta todas las operaciones que se codifican en los algoritmos al procesar un conjunto de datos. Documentación: consiste en el uso de documentos o herramientas auxiliares que expliquen cómo ocurre el procesamiento de los datos en un programa. Facilita el diseño y el entendimiento del programa. Usabilidad: el programa es fácil de usar si las personas a las que está destinado pueden usarlo para realizar sus tareas de forma https://updf.com Tema 2: Conceptos fundamentales La generación de un programa o un software necesita una metodología como modelo para lograr realizar los algoritmos y resolver el problema. Esta metodología llamada “ciclo de desarrollo del software” consta de una serie de pasos lógicos secuenciales denominados “fases” y que son los siguientes: cómoda y sin esfuerzos innecesarios. Mantenibilidad: el código fuente del programa permite localizar y corregir defectos rápidamente, así como también permite hacer cambios que resultan más fáciles para adaptarlo a las necesidades cambiantes de los usuarios. Fiabilidad: un programa es fiable si realiza sus tareas cuando es necesario y con la precisión requerida. Definición del problema1 Análisis del problema2 Diseño de la solución3 Codificación4 https://updf.com Es importante conocer cada una de estas fases, ya que están íntegramente relacionadas. El resultado que producen sirve de entrada para el comienzo de la siguiente. Si bien la codificación es la fase que se encuentra naturalmente ligada con el programador, seguramente deba, además, realizar actividades de las demás. Cada rol involucrado en este proceso debe conocer e interactuar con cada una de las etapas. Definición del problema Conocer el problema es la primera consideración. Saber quién será el usuario final también es importante. La determinación de las entradas y salidas consiste en establecer la siguiente: cómo funcionará el programa y qué datos se necesitan para que esto suceda. Después de que esto se haya decidido, la factibilidad será la siguiente consideración. Finalmente, si el proyecto está listo, se deben tomar medidas para garantizar que el proyecto esté debidamente documentado y analizado. Prueba y depuración5 Documentación6 Implementación7 Mantenimiento8 https://updf.com Análisis del problema Es la comprensión completa del problema con sus detalles. Es un requisito para lograr una solución eficaz. Diseño de la solución Es momento de comenzar a diseñar y modelar los algoritmos. Una computadora no tiene la capacidad para solucionar más que cuanto se le indica en los algoritmos. Estos algoritmos indican las instrucciones para que la máquina ejecute. La información proporcionada al algoritmo constituye su entrada, y la información producida por el algoritmo constituye su salida. Los problemas complejos se pueden resolver más eficazmente cuando se dividen en subproblemas más fáciles de solucionar queel original. A la descomposición del problema original en subproblemas más simples le sigue la división de estos subproblemas en otros más simples aún. Estas divisiones se realizan hasta que los subproblemas resultantes sean lo más pequeños posibles y permitan realizar sus respectivos diseños. Dos formas comunes de diseñar la solución a un problema son dibujar un diagrama de flujo y escribir un pseudocódigo, o posiblemente ambas. https://updf.com Codificación Este paso consiste en empezar a escribir el código del programa, es decir, expresar la solución en un lenguaje de programación, traducir la lógica del resultado de la fase anterior a un lenguaje de programación. Como ya hemos señalado, un lenguaje de programación es un conjunto de reglas que proporciona una forma de instruir a la computadora qué operaciones realizar. Prueba y depuración Algunos expertos insisten en que un programa bien diseñado se puede escribir correctamente la primera vez. De hecho, afirman que hay formas matemáticas de demostrar que un programa es correcto. Sin embargo, las imperfecciones del mundo existen, por lo que la mayoría de los programadores se acostumbran a la idea de que sus programas recién escritos probablemente tengan algunos errores. Esto es un poco desalentador al principio, ya que los programadores tienden a ser personas precisas, cuidadosas y orientadas a los detalles, personas que se enorgullecen de su trabajo. Aun así, hay muchas oportunidades para introducir errores en los programas. Por esta razón los programas deben probarse en un ambiente controlado, dedicado a tal fin. https://updf.com La depuración es un término usado ampliamente en programación: significa detectar, localizar y corregir errores, generalmente, ejecutando el programa. En esta fase, se ejecuta el programa, manual o automáticamente, utilizando los datos de prueba diseñados previamente (casos de prueba). Se deben planificar los datos y casos de la prueba cuidadosamente para asegurarse de que se chequea cada parte del programa. Documentación Documentar es un proceso continuo y necesario. Sin embargo, como les pasa a muchos programadores, podés sentirte ansioso por realizar actividades más emocionantes centradas en la computadora. La documentación es una descripción detallada por escrito del ciclo de programación y hechos específicos sobre el programa. Los materiales típicos de documentación del programa incluyen el origen y la naturaleza del problema, una breve descripción narrativa del programa, herramientas lógicas como diagramas de flujo y pseudocódigos, descripciones de registros de datos, listas de programas y resultados de pruebas. Los comentarios en el programa en sí también se consideran una parte esencial de la documentación. Muchos programadores documentan mientras codifican. En un sentido más amplio, la documentación del programa puede ser parte de la documentación de un sistema completo. El programador inteligente continúa documentando el programa a lo largo de su diseño, desarrollo y prueba. Se necesita documentación para https://updf.com complementar la memoria humana y para ayudar a organizar la planificación del programa. Además, la documentación es importante para comunicarse con otras personas interesadas en el programa, especialmente, otros programadores que pueden ser parte de un equipo de programación. Implementación El programa ya probado, revisado y mejorado se considera terminado y puede utilizarse con un alto grado de confianza para resolver los problemas que dieron origen a su creación. Si se está automatizando alguna tarea manual, esta última se desecha para emplear solamente el programa. Mantenimiento Es la fase de mayor duración, siempre y cuando el programa funcione bien. Este debe ser revisado cada cierto tiempo para realizar ajustes si es necesario. Figura 9: Fases de un proyecto de software https://updf.com Fuente: elaboración propia. Tema 3: Diagrama de flujos y pseudocódigo Representar algoritmos o procesos puede ser algo difícil. No siempre se pueden encontrar las palabras adecuadas para describirlo, y, en muchos casos, serían muy difíciles de entender o muy largos para leer si solamente se utilizan palabras o textos. Por ese motivo se creó un lenguaje de https://updf.com símbolos, para poder representar gráficamente los procesos mediante diagramas. Otra forma de comunicar los procesos o algoritmos es mediante un pseudocódigo, que puede definirse como un conjunto de sentencias que no corresponden a ningún lenguaje de programación específico, pero que denotan la lógica que dicho algoritmo debe seguir. A continuación, se verán los dos casos: la representación por diagrama de flujo y por pseudocódigo. Diagrama de flujo (o flujograma) Construir un algoritmo consiste en detallar un conjunto de sentencias y el orden en que estas se ejecutarán. Estas sentencias que conforman algoritmos son las que controlan el flujo de ejecución del programa que conforman. En un programa, es necesario tomar decisiones sobre la base de ciertos hechos y actuar en consecuencia. Un diagrama de flujo expresa, de manera gráfica, los pasos que seguir y las decisiones que tomar de un algoritmo o proceso específico. Por ejemplo, en el caso de un proceso que indica que, si un número es mayor que 5, se lo debe imprimir en la pantalla y que, de lo contrario, se debe descartar el número. https://updf.com Figura 10: Ejemplo de diagrama de flujo Fuente: elaboración propia. Los diagramas de flujo utilizan símbolos con significados definidos que modelan los pasos del algoritmo y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin del proceso. Se verá cada uno de estos símbolos en detalle. Flechas Las flechas indican la dirección por la cual avanza el flujo. Van a conectar al resto de los símbolos del diagrama. https://updf.com Círculos u óvalos Los círculos especifican el inicio o el final del diagrama de flujo. Pueden simplemente indicar cuándo comienza o termina, pero también pueden ser usados para representar el evento que inicia el algoritmo y todas las posibles acciones finales. Siempre se tendrá un solo elemento de inicio, pero se puede tener uno o más elementos finales. Figura 11: Ejemplo de círculos u óvalos https://updf.com Fuente: elaboración propia. Rombos Los rombos indican una pregunta, la cual puede tener como respuesta “Sí” o “No”, o “Verdadero” o “Falso”. Un rombo siempre tiene un camino para cada respuesta. Se utiliza cuando se debe tomar una decisión. Figura 12: Ejemplo de rombo Fuente: elaboración propia. Rectángulos Los rectángulos especifican una actividad o un conjunto de actividades. Puede, también, verse como una acción que se lleva a cabo. Debe indicar un verbo o frase verbal. https://updf.com Figura 13: Ejemplo de una acción Fuente: elaboración propia. Los diagramas de flujo pueden ser muy simples, como los vistos ahora, o muy complejos y largos. Todo depende del problema que se esté intentando resolver. Figura 14: Diagrama de flujo de pasos que seguir cuando una lámpara no funciona https://updf.com Fuente: [imagen sin título sobre diagrama de flujo de pasos a seguir cuando una lámpara no funciona], 2017, https://bit.ly/2ZImGKE Una ampolleta es lo mismo que una bombilla. Figura 15: Diagrama de flujo de un sistema de inventario https://updf.com https://updf.com Fuente: elaboración propia. En la figura anterior se puede ver que el flujo tiene un inicio, dos posibles finales y diferentes flujos que pueden darse según las respuestas a las preguntas de los rombos. Pseudocódigo Otra forma muy útil de representar los procesos o algoritmos es mediante un pseudocódigo. Este se define como una representación en lenguaje natural con el objetivo de ser más explicativo y fácil de leer que el código de los lenguajes de programación. Los pseudocódigos no se compilan ni interpretan por ninguna computadora; su propósito es, simplemente,representar un algoritmo o un proceso mediante una sintaxis similar a la presente en los lenguajes de programación. De este modo, se logra una abstracción respecto del lenguaje que se utilice para la programación del algoritmo final. Figura 16: Pseudocódigo del diagrama de flujo de la figura 17 https://updf.com Fuente: elaboración propia. Como puede observarse, el pseudocódigo es muy fácil de leer y no se necesitan conocimientos de programación en un lenguaje determinado para entenderlo. Para apreciar la diferencia con el código de un lenguaje de programación, se verá cómo sería esto en C++: Figura 17: Código para una lámpara que no funciona (C++) https://updf.com Fuente: elaboración propia. El código se diferencia del pseudocódigo en que, para leer el primero, se necesita tener cierto grado de experiencia y conocimiento del lenguaje, mientras que, para leer el pseudocódigo, no. Los pseudocódigos pueden tener diferentes estilos y parecerse a ciertos lenguajes. Si bien mantienen su característica principal de estar expresados en lenguaje natural, pueden acercarse un poco a lenguajes en los cuales, seguramente, sean codificados. Veremos unos ejemplos comparativos de pseudocódigos con el estilo de tres lenguajes tradicionales: Fortran, Pascal https://updf.com y C (predecesor de C++). En el siguiente caso, para el juego matemático bizz buzz, las reglas son las siguientes: Figura 18: Pseudocódigo estilo Fortran Si un número es divisible por 3, se debe escribir “bizz”; Si un número es divisible por 5, escribir “buzz”; Si el número no es divisible por 2 o por 5, se debe imprimir el número. https://updf.com Fuente: [imagen sin título sobre pseudocódigo estilo fortran], 2017, https://bit.ly/2NzEOnp Figura 19: Pseudocódigo estilo Pascal Fuente: [imagen sin título sobre pseudocódigo estilo Pascal], 2017, https://bit.ly/2NzEOnp Figura 20: Pseudocódigo estilo C https://updf.com Fuente: [imagen sin título sobre pseudocódigo estilo C], 2017, https://bit.ly/2NzEOnp El pseudocódigo es una herramienta muy útil no solo para enseñar, sino también para compartir un algoritmo y hacerlo más fácil de entender. En conjunto con los diagramas de flujo, ayuda mucho a la comunicación de cómo debe ejecutarse la lógica de determinados procesos. Como resumen, algunas de las ventajas de los diagramas de flujo y pseudocódigos son las que nombramos a continuación: Brindan una representación natural, visual y gráfica. https://updf.com Tema 4: Uso de variables y tipos de datos Las variables son un elemento fundamental de la programación, dado que, más allá de lo que haga el sistema que estamos construyendo, siempre vamos a necesitar almacenar información en la memoria del computador. Por ese motivo a esas porciones de memoria que contienen los datos se les asignan nombres simbólicos (identificadores), y así conforman lo que un programador maneja como variables dentro de su código. El algoritmo o proceso se entiende más fácilmente que leyendo un texto. Ayudan a mejorar el algoritmo o proceso antes de desarrollarlo. Facilitan el diseño de nuevos procesos o algoritmos. Casi todos los datos que se manejan en nuestro programa se almacenan en variables. Se debe concebir “variable” como un contenedor de información. https://updf.com Tomemos como ejemplo una definición de una variable de tipo cadena de caracteres (string) en C++: Figura 21: Variable de tipo texto en C++ Fuente: elaboración propia. Veamos la misma variable declarada en Python: Figura 22: Variable en Python Fuente: elaboración propia. Las variables siempre tienen un tipo de dato asociado, que establece cómo el lenguaje tiene que tratar el dato contenido dentro de esa variable; por ejemplo, no es lo mismo manipular un número que una palabra. https://updf.com Tipos de datos Existen diferentes tipos de datos, los principales son los siguientes: Integers: este tipo de datos se utilizan cuando queremos almacenar un número sin decimales (un número entero). Por ejemplo, es lo que usamos si queremos calcular la suma de 100 + 300. Float: el tipo float permite la manipulación de números con decimales. El número 12,25 sería de tipo float. Double: las variables de este tipo, al igual que las del tipo float, permiten manipular números con decimales. La principal diferencia es la precisión. Si necesitamos manipular números con muchos decimales, entonces debemos utilizar este tipo de datos. Character: representa un único carácter, que puede ser un número, una letra o un símbolo. String: representa cadenas de caracteres. Es utilizado cada vez que necesitamos manipular o almacenar cadenas con letras, números y símbolos. Un texto, por ejemplo, se debe almacenar con este tipo de dato. https://updf.com Figura 23: Tipos de datos en C++ Fuente: elaboración propia. Según el tipo de dato, las variables serán manejadas y procesadas dentro del programa de diferentes modos. Con variables numéricas, se podrán realizar, por ejemplo, conteos y operaciones matemáticas; sobre strings, se podrán realizar concatenaciones o divisiones en cadenas más pequeñas, etcétera. Constantes Boolean: puede tomar solamente los valores “true” (verdadero) o “false” (falso). https://updf.com Algunos datos necesarios tendrán información almacenada que no cambiará a lo largo del programa. En estos casos, es conveniente declarar ese dato como una constante en lugar de una variable. Una constante es un valor que no puede ser alterado o modificado durante la ejecución de un programa, únicamente puede ser leído. Figura 24: Constantes en C++ Fuente: elaboración propia. Se está construyendo un sistema de atención de clientes por orden de llegada. Cuando se saca un turno, el sistema debe seleccionar cuál de las dos mesas debe atender al solicitante. Para esto, debe derivar al cliente a la mesa que tenga menos solicitantes en cola de espera. Conociendo el tamaño de dichas colas de espera, se debe programar un algoritmo que compare dos números y que retorne el menor. Se debe tener en cuenta https://updf.com Características de los lenguajes Los lenguajes de programación son un conjunto de palabras con una sintaxis particular que nos permiten indicarle a un computador qué es lo que debe hacer. Existen diferentes lenguajes, cada uno tiene sus ventajas y desventajas según el propósito con el que fueron construidos. Código fuente: Se denomina así al código escrito directamente por el programador en un lenguaje de programación determinado. Lenguaje de alto nivel: Son aquellos que abstraen la complejidad de la máquina en la que se va a ejecutar el código. Lenguaje de bajo nivel: Son lenguajes específicos de la arquitectura de la máquina en la que se ejecuta el código. Prácticamente, ejercen un control directo sobre el hardware. Compilado e interpretado: Lección 5 de 7 Glosario https://updf.com Una de las principales características de un lenguaje de programación es que puede funcionar mediante compilación o ser interpretado. Tipado: Podemos definir tipado de un lenguaje de programación de la forma en la que los tipos de variables son definidos. Las variables son simplemente nombres que se asocian a un valor o dato específico. Las variables siempre tienen un tipo de datos. Tipos de paradigmas: Los paradigmas son un conjunto de reglas que permiten que la codificación sea más simple, ordenada y reutilizable. Existen diferentes paradigmas, entre los cuales, los más importantes son el imperativo, el declarativo y el orientado a objetos. Multiplataforma: Un lenguaje multiplataforma es aquel que permite la ejecución de un programa sin necesidad de compilarlo cada vez que cambiamos de plataforma. Programación: Es una de las etapas más importantes del ciclo de vida de un proyecto de software y requiere un método de trabajo. La programación es el resultado de dicho trabajo. Es el instrumento que permite la ejecución de las tareas automatizadas de un sistema informático. Un lenguaje compilado esaquel que se escribe en un lenguaje de alto nivel y, luego, es traducido a un ejecutable para una plataforma específica (por ejemplo, Linux, Windows, etc.) mediante un proceso llamado “compilación”. Se considera un lenguaje interpretado aquel que es traducido a instrucciones propias de la plataforma línea por línea mientras es ejecutado. Esto significa que la traducción y ejecución se hacen en el mismo momento. https://updf.com Metodología de la programación: Es el conjunto de normas, métodos y anotaciones que nos indican la forma de programar. Lenguaje de programación: Es un conjunto de reglas semánticas y sintácticas que los programadores usan para la codificación de instrucciones de un programa o algoritmo de programación. Características de la programación: Figura 25: Fases de un proyecto software Eficacia. Eficiencia. Integridad o completitud. Documentación. Usabilidad. Mantenibilidad. Fiabilidad. https://updf.com Fuente: elaboración propia. Diagrama de flujo: Un diagrama de flujo expresa, de manera gráfica, los pasos que seguir y las decisiones que tomar de un algoritmo o proceso específico. Elementos de un diagrama de flujo: Pseudocódigos: Son representaciones en lenguaje natural de procesos o algoritmos con el objetivo de ser más explicativos y fáciles de leer que el código de los lenguajes de programación. Flechas. Círculos u óvalos. Rombo. Rectángulos. https://updf.com
Compartir