├── .gitignore └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.pptx 2 | .DS_Store 3 | upload.sh 4 | *.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Programación - 01 - Introducción a la Programación Software 2 | 3 | Tema 01 Introducción a la Programación Software. 1DAW. Curso 2023/2024. 4 | 5 | ![imagen](https://raw.githubusercontent.com/joseluisgs/Programacion-00-2022-2023/master/images/programacion.png) 6 | 7 | - [Programación - 01 - Introducción a la Programación Software](#programación---01---introducción-a-la-programación-software) 8 | - [Contenidos](#contenidos) 9 | - [Algoritmos y Programas](#algoritmos-y-programas) 10 | - [Paradigmas de Programación](#paradigmas-de-programación) 11 | - [Fases de Programación](#fases-de-programación) 12 | - [Tipos de Lenguajes](#tipos-de-lenguajes) 13 | - [Cercanía al programador](#cercanía-al-programador) 14 | - [Generaciones](#generaciones) 15 | - [Traductores: Compiladores e Intérpretes](#traductores-compiladores-e-intérpretes) 16 | - [Lenguaje compilado](#lenguaje-compilado) 17 | - [Lenguaje interpretado](#lenguaje-interpretado) 18 | - [Lenguaje mixto o intermedio](#lenguaje-mixto-o-intermedio) 19 | - [Paradigmas de Programación](#paradigmas-de-programación-1) 20 | - [Elementos de un Lenguaje de Programación](#elementos-de-un-lenguaje-de-programación) 21 | - [Referencias](#referencias) 22 | - [Autor](#autor) 23 | - [Contacto](#contacto) 24 | - [Licencia de uso](#licencia-de-uso) 25 | 26 | ## Contenidos 27 | 1. Algoritmos y Programas 28 | 2. Paradigmas de Programación 29 | 3. Fases de la Programación 30 | 4. Tipos de Lenguajes 31 | 5. Compiladores e Intérpretes 32 | 6. Lenguajes más usados 33 | 34 | 35 | ## Algoritmos y Programas 36 | Algoritmo: secuencia ordenada de pasos, descrita sin ambigüedades, que conducen a la solución de un problema dado. 37 | 38 | Los algoritmos son independientes de los lenguajes de programación y de las computadoras donde se ejecutan. Un mismo algoritmo puede ser expresado en diferentes lenguajes de programación y podría ser ejecutado en diferentes dispositivos. Piensa en una receta de cocina, ésta puede ser expresada en castellano, inglés o francés, podría ser cocinada en fogón o vitrocerámica, por un cocinero o más, etc. Pero independientemente de todas estas circunstancias, el plato se preparará siguiendo los mismos pasos. 39 | 40 | La diferencia fundamental entre algoritmo y programa es que, en el segundo, los pasos que permiten resolver el problema, deben escribirse en un determinado lenguaje de programación para que puedan ser ejecutados en el ordenador y así obtener la solución. 41 | 42 | Los lenguajes de programación son sólo un medio para expresar el algoritmo y el ordenador un procesador para ejecutarlo. Mediante el lenguaje creramos programas que ejecutan uno o más algoritmos en un sistema específico. 43 | 44 | En esencia, todo problema se puede describir por medio de un algoritmo y las características fundamentales que éstos deben cumplir son: 45 | - Debe ser preciso e indicar el orden de realización paso a paso. 46 | - Debe estar definido, si se ejecuta dos o más veces, debe obtener el mismo resultado cada vez. 47 | - Debe ser finito, debe tener un número finito de pasos. 48 | 49 | 50 | ## Paradigmas de Programación 51 | Paradigma de programación: es un modelo básico para el diseño y la implementación de programas. Este modelo determinará como será el proceso de diseño y la estructura final de un programa. 52 | Son las reglas del juego. Tienes una pelota o balón y una portería, pero no es lo mismo jugar al fútbol que al balonmano. Pero en ambos tu objetivo es introducir el balón en la portería y anotar más que tu rival. Igual pasa con los lenguajes, existen reglas y según las usemos podremos hacer unas cosas u otras. Tipos: Programación Estructurada, Programación Modular, Programación Declarativa Programación Orientada a Objetos, Programación Reactiva, etc. 53 | 54 | ## Fases de Programación 55 | El proceso de creación de software puede dividirse en diferentes fases: 56 | - Fase de resolución del problema: Análisis y Diseño. 57 | - Fase de implementación: Codificación y Pruebas. 58 | - Fase de explotación y mantenimiento. 59 | 60 | ## Tipos de Lenguajes 61 | ### Cercanía al programador 62 | - Alto nivel: C, C++, Java, Kotlin, Python, etc. 63 | - Bajo nivel: ensamblador, máquina, etc. 64 | 65 | ### Generaciones 66 | - Primera generación: lenguaje maquina. 67 | - Segunda generación: se crearon los primeros lenguajes ensambladores. 68 | - Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol… 69 | - 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. 70 | - Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Ej. LISP 71 | 72 | ## Traductores: Compiladores e Intérpretes 73 | La traducción de un programa escrito en un lenguaje de programación a un lenguaje de máquina se realiza mediante un traductor. Este traductor puede ser un compilador o un intérprete. Sus fases principales, son: 74 | - Análisis léxico: se analiza el programa fuente y se separa en tokens. 75 | - Análisis sintáctico: se analiza la estructura del programa y se comprueba que la sintaxis sea correcta. 76 | - Análisis semántico: se comprueba que el programa tenga sentido y que no haya errores. 77 | - Optimización: se realiza una serie de optimizaciones para mejorar el rendimiento del programa. 78 | - Enlazador: se enlazan las librerías necesarias para que el programa funcione. 79 | 80 | ### Lenguaje compilado 81 | Gracias al compiladores se convierte el código a binarios que se ejecutan en el sistema operativo. 82 | ### Lenguaje interpretado 83 | Los lenguaje interpretados, necesita de dicho intérprete, que lea la instrucción que se necesita ejecutar, realice el proceso de traducción de la misma y la ejecute. 84 | ### Lenguaje mixto o intermedio 85 | Es un lenguaje que se compila a un código objeto o intermedio y se interpreta en una máquina virtual . Ej. Java o Kotlin. 86 | 87 | ## Paradigmas de Programación 88 | Los lenguajes de programación también se pueden clasificar por paradigmas. Un paradigma de programación es una forma de clasificar los lenguajes de programación según las características y estilos de programación que promueven. Aquí hay una descripción general de algunos de los paradigmas más comunes: 89 | 90 | **Programación Imperativa:** 91 | 92 | En la programación imperativa, los programas son una serie de comandos que la computadora ejecuta en orden. Los comandos cambian el estado del programa. Los lenguajes de programación imperativa incluyen C, C++, Java y Python. 93 | 94 | **Programación Declarativa:** 95 | 96 | En la programación declarativa, los programas describen el resultado que se desea, no cómo lograrlo. Los lenguajes de programación declarativa incluyen SQL y HTML. 97 | 98 | **Programación Procedimental:** 99 | 100 | La programación procedimental es un subtipo de programación imperativa. En la programación procedimental, los programas son una serie de procedimientos o funciones que manipulan el estado del programa. Los lenguajes de programación procedimental incluyen C, Pascal y BASIC. 101 | 102 | **Programación Orientada a Objetos (OOP):** 103 | 104 | En la programación orientada a objetos, los programas son una colección de objetos que interactúan entre sí. Los objetos son instancias de clases, que contienen datos y métodos que operan en esos datos. Los lenguajes de programación orientados a objetos incluyen Java, C++, Python y Ruby. 105 | 106 | **Programación Funcional:** 107 | 108 | En la programación funcional, los programas son una serie de funciones matemáticas. Las funciones no tienen estado y no cambian ningún dato. Los lenguajes de programación funcional incluyen Haskell, Erlang y Lisp. 109 | 110 | **Programación Lógica:** 111 | 112 | En la programación lógica, los programas son una serie de afirmaciones en lógica formal. La computadora deduce la respuesta a una pregunta utilizando estas afirmaciones. Los lenguajes de programación lógica incluyen Prolog y Datalog. 113 | 114 | **Programación de Eventos:** 115 | 116 | En la programación basada en eventos, el flujo del programa está determinado por eventos, como la entrada del usuario o los cambios en el estado del sistema. Este paradigma es comúnmente utilizado en la programación de interfaces gráficas de usuario y servidores. Los lenguajes que soportan la programación basada en eventos incluyen JavaScript y Python. 117 | 118 | Estos son solo algunos de los paradigmas de programación más comunes. Muchos lenguajes de programación soportan múltiples paradigmas. Por ejemplo, Python admite tanto la programación imperativa como la orientada a objetos. La elección del paradigma depende del problema que se esté tratando de resolver y de las preferencias del programador. 119 | 120 | ## Elementos de un Lenguaje de Programación 121 | Un lenguaje de programación es un lenguaje formal que proporciona un conjunto de instrucciones que permiten a un programador escribir secuencias de comandos, que son interpretadas por una máquina, para producir un comportamiento deseado. Estos lenguajes son utilizados para controlar el comportamiento de las máquinas o para expresar algoritmos. 122 | 123 | Los lenguajes de programación constan de varios elementos clave, que incluyen: 124 | 125 | **1. Sintaxis:** 126 | 127 | La sintaxis de un lenguaje de programación se refiere a las reglas que rigen la estructura de las declaraciones y expresiones válidas en ese lenguaje. Por ejemplo, en el lenguaje de programación Python, la indentación es parte de la sintaxis y se utiliza para delimitar bloques de código. 128 | 129 | **2. Semántica:** 130 | 131 | La semántica de un lenguaje de programación se refiere al significado de las declaraciones y expresiones. Por ejemplo, en la mayoría de los lenguajes de programación, la expresión "a = b + c" significa que el valor de "b + c" debe ser calculado y luego asignado a la variable "a". 132 | 133 | **3. Tipos de Datos:** 134 | 135 | Los tipos de datos son los diferentes tipos de valores que pueden ser representados y manipulados en un lenguaje de programación. Los tipos de datos comunes incluyen números enteros, números de punto flotante, caracteres, cadenas y booleanos. 136 | 137 | **4. Variables:** 138 | 139 | Las variables son símbolos que representan valores en el programa. Las variables tienen tipos, y un valor de un tipo particular puede ser asignado a una variable. 140 | 141 | **5. Operadores:** 142 | 143 | Los operadores son símbolos que representan operaciones específicas. Por ejemplo, "+" es un operador que representa la adición, y "==" es un operador que representa la comparación de igualdad. 144 | 145 | **6. Control de Flujo:** 146 | 147 | Las estructuras de control de flujo determinan el orden en el que se ejecutan las instrucciones en un programa. Las estructuras de control de flujo comunes incluyen condicionales (como "if" y "switch" en C++) y bucles (como "for" y "while"). 148 | 149 | **7. Subrutinas y Funciones:** 150 | 151 | Las subrutinas y funciones son bloques de código que pueden ser definidos y llamados por nombre. Permiten la reutilización de código y ayudan a hacer los programas más modulares y más fáciles de entender y mantener. 152 | 153 | **8. Comentarios:** 154 | 155 | Los comentarios son notas que los programadores dejan en el código para explicar lo que hace el código o por qué se tomó una decisión particular de programación. Los comentarios no son ejecutados como parte del programa. 156 | 157 | Estos son solo algunos de los elementos básicos de un lenguaje de programación. Los lenguajes de programación pueden variar ampliamente en términos de qué elementos soportan y cómo se implementan estos elementos. 158 | 159 | 160 | ## Referencias 161 | - http://www.larevistainformatica.com/clasificacion-de-los-lenguajes-de-programacion.html 162 | - https://programas.cuaed.unam.mx/repositorio/moodle/pluginfile.php/1023/mod_resource/content/1/contenido/index.html#:~:text=Un%20lenguaje%20de%20bajo%20nivel,programas%20de%20una%20manera%20sencilla. 163 | - https://profile.es/blog/que-son-los-paradigmas-de-programacion/#:~:text=Un%20paradigma%20de%20programaci%C3%B3n%20es,resultados%20que%20necesitan%20los%20programadores. 164 | 165 | ## Autor 166 | 167 | Codificado con :sparkling_heart: por [José Luis González Sánchez](https://twitter.com/JoseLuisGS_) 168 | 169 | [![Twitter](https://img.shields.io/twitter/follow/JoseLuisGS_?style=social)](https://twitter.com/JoseLuisGS_) 170 | [![GitHub](https://img.shields.io/github/followers/joseluisgs?style=social)](https://github.com/joseluisgs) 171 | [![GitHub](https://img.shields.io/github/stars/joseluisgs?style=social)](https://github.com/joseluisgs) 172 | 173 | ### Contacto 174 | 175 |

176 | Cualquier cosa que necesites házmelo saber por si puedo ayudarte 💬. 177 |

178 |

179 | 180 | 182 |    183 | 184 | 186 |    187 | 188 | 190 |    191 | 192 | 194 |    195 | 196 | 198 |    199 | 200 | 202 | 203 |

204 | 205 | ## Licencia de uso 206 | 207 | Este repositorio y todo su contenido está licenciado bajo licencia **Creative Commons**, si desea saber más, vea 208 | la [LICENSE](https://joseluisgs.dev/docs/license/). Por favor si compartes, usas o modificas este proyecto cita a su 209 | autor, y usa las mismas condiciones para su uso docente, formativo o educativo y no comercial. 210 | 211 | Licencia de Creative Commons
212 | JoseLuisGS 213 | by 214 | José Luis González Sánchez is licensed under 215 | a Creative Commons 216 | Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
Creado a partir de la obra 217 | en https://github.com/joseluisgs. --------------------------------------------------------------------------------