├── .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. 1DAM. Curso 2022/2023. 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 | - [Referencias](#referencias) 20 | - [Recursos](#recursos) 21 | - [Autor](#autor) 22 | - [Contacto](#contacto) 23 | - [¿Un café?](#un-café) 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 | 79 | ### Lenguaje compilado 80 | Gracias al compiladores se convierte el código a binarios que se ejecutan en el sistema operativo. 81 | ### Lenguaje interpretado 82 | 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. 83 | ### Lenguaje mixto o intermedio 84 | 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. 85 | 86 | ## Referencias 87 | - http://www.larevistainformatica.com/clasificacion-de-los-lenguajes-de-programacion.html 88 | - 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. 89 | - https://profile.es/blog/que-son-los-paradigmas-de-programacion/#:~:text=Un%20paradigma%20de%20programaci%C3%B3n%20es,resultados%20que%20necesitan%20los%20programadores. 90 | 91 | 92 | ## Recursos 93 | - Twitter: https://twitter.com/joseluisgonsan 94 | - GitHub: https://github.com/joseluisgs 95 | - Web: https://joseluisgs.github.io 96 | - Discord del módulo: https://discord.gg/RRGsXfFDya 97 | - Aula DAMnificad@s: https://discord.gg/XT8G5rRySU 98 | 99 | 100 | ## Autor 101 | 102 | Codificado con :sparkling_heart: por [José Luis González Sánchez](https://twitter.com/joseluisgonsan) 103 | 104 | [![Twitter](https://img.shields.io/twitter/follow/joseluisgonsan?style=social)](https://twitter.com/joseluisgonsan) 105 | [![GitHub](https://img.shields.io/github/followers/joseluisgs?style=social)](https://github.com/joseluisgs) 106 | 107 | ### Contacto 108 |

109 | Cualquier cosa que necesites házmelo saber por si puedo ayudarte 💬. 110 |

111 |

112 | 113 | 115 |    116 | 117 | 119 |    120 | 121 | 123 |    124 | 125 | 127 |    128 | 129 | 131 |    132 | 133 | 135 | 136 |

137 | 138 | ### ¿Un café? 139 |

joseluisgs




140 | 141 | ## Licencia de uso 142 | 143 | Este repositorio y todo su contenido está licenciado bajo licencia **Creative Commons**, si desea saber más, vea la [LICENSE](https://joseluisgs.github.io/docs/license/). Por favor si compartes, usas o modificas este proyecto cita a su autor, y usa las mismas condiciones para su uso docente, formativo o educativo y no comercial. 144 | 145 | Licencia de Creative Commons
JoseLuisGS by José Luis González Sánchez is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
Creado a partir de la obra en https://github.com/joseluisgs. 146 | --------------------------------------------------------------------------------