Curso Fundamentos de la Programación - Unidad 1 PDF

Title Curso Fundamentos de la Programación - Unidad 1
Author Lisandro Lima
Course Fundamentos De La Programacion
Institution Universidad Tecnológica Nacional
Pages 62
File Size 4.7 MB
File Type PDF
Total Downloads 16
Total Views 177

Summary

Es la primer unidad del curso realizado en el año 2020 con los conceptos iniciales...


Description

FUNDAMENTOS DE LA PROGRAMACIÓN

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 2

MÓDULO 1 - UNIDAD 1

CONCEPTOS INICIALES

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 3

Presentación: En esta primera Unidad nos enfocaremos en comprender cuales son los elementos esenciales de la informática, a modo de resumen, que servirá como base para adentrarnos oportunamente en los aspectos principales de la programación de software. Inicialmente definiremos el concepto de software y su clasificación. Posteriormente veremos cuáles son los componentes necesarios para que ese software pueda funcionar. Pero antes de esto último daremos un marco a lo que se refiere la actividad de programar o desarrollar software en forma propiamente dicha.

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 4

Objetivos: Que los participantes: 

Comprendan qué es el software, para qué sirve y para qué se utiliza



Incorporen el concepto programación y sus principales variantes



Comprendan cuáles son los componentes necesarios para programar



Comprendan los conceptos esenciales de los lenguajes de programación en cuanto a sus características generales principales



Conozcan las generaciones de los lenguajes de programación



Conozcan los tipos de lenguajes de programación según la forma en que estos se ejecutan



Conozcan los paradigmas en los cuales están basados los principales lenguajes de programación



Comprendan como una computadora representa internamente la información

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 5

Bloques temáticos: 1. Objetivos del curso 2. ¿Qué es programar? 3. ¿Qué es software? ¿Qué se puede hacer? 4. ¿Qué se necesita para programar? 5. Partes componentes 5.1 Hardware 5.2 Sistema operativo 5.3 Software de base 5.4 Aplicación / programa 5.5 Lenguaje de programación 5.6 Compilador / intérprete / máquina virtual 6. Conceptos de lenguajes de programación 7. Generaciones 7.1 Lenguajes de primera generación 7.2 Lenguajes de segunda generación Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 6

7.3 Lenguajes de tercera generación 7.4 Lenguajes de cuarta generación 7.5 Lenguajes de quinta generación 8. Lenguajes compilados e interpretados 8.1 Lenguajes compilados 8.2 Lenguajes interpretados 8.3 Máquinas virtuales 9. Sintaxis 9.1 Terminología 10. Historia de los lenguajes de programación 11. Dígitos y representaciones 11.1 Bit 11.2 Byte 11.3 Hexadecimal 12. Paradigmas 12.1 Imperativos 12.2 Declarativos 12.3 Orientados a objetos 12.4 Funcionales 12.5 Lógicos

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 7

Consignas para el aprendizaje colaborativo

En esta Unidad los participantes se encontrarán con diferentes tipos de actividades que, en el marco de los fundamentos del MEC*, los referenciarán a tres comunidades de aprendizaje, que pondremos en funcionamiento en esta instancia de formación, a los efectos de aprovecharlas pedagógicamente:



Los foros proactivos asociados a cada una de las unidades.



La Web 2.0.



Los contextos de desempeño de los participantes.

Es importante que todos los participantes realicen algunas de las actividades sugeridas y compartan en los foros los resultados obtenidos. Además, también se propondrán reflexiones, notas especiales y vinculaciones a bibliografía y sitios web. El carácter constructivista y colaborativo del MEC nos exige que todas las actividades realizadas por los participantes sean compartidas en los foros.

* El MEC es el modelo de E-learning colaborativo de nuestro Centro.

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 8

Tomen nota Las actividades son opcionales y pueden realizarse en forma individual, pero siempre es deseable que se las realice en equipo, con la finalidad de estimular y favorecer el trabajo colaborativo y el aprendizaje entre pares. Tenga en cuenta que, si bien las actividades son opcionales, su realización es de vital importancia para el logro de los objetivos de aprendizaje de esta instancia de formación. Si su tiempo no le permite realizar todas las actividades, por lo menos realice alguna, es fundamental que lo haga. Si cada uno de los participantes realiza alguna, el foro, que es una instancia clave en este tipo de cursos, tendrá una actividad muy enriquecedora. Asimismo, también tengan en cuenta cuando trabajen en la Web, que en ella hay de todo, cosas excelentes, muy buenas, buenas, regulares, malas y muy malas. Por eso, es necesario aplicar filtros críticos para que las investigaciones y búsquedas se encaminen a la excelencia. Si tienen dudas con alguno de los datos recolectados, no dejen de consultar al profesor-tutor. También aprovechen en el foro proactivo las opiniones de sus compañeros de curso y colegas.

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 9

1. Objetivos del curso La programación o desarrollo de software tiene una reciente, breve y muy rica historia, debido, en esencia, a la predisposición de la sociedad contemporánea hacia la tecnología y su consecuente masificación. En la informática existen dos componentes principales: hardware y software, siendo este último el más heterogéneo y, a su vez, el menos estandarizado a nivel productivo. Más allá del propósito final que se le quiera dar a un componente de software o su aplicación, todos los desarrollos tienen como bases fundacionales la necesidad de modelar en forma abstracta una realidad dentro de un contexto determinado, a través de la utilización de soluciones surgidas del razonamiento lógico, llamadas algoritmos. Los conceptos fundacionales son aplicables a los distintos lenguajes de programación, plataformas, entornos y metodologías de desarrollo de software. Teniendo claros los Fundamentos de la Programación, este curso presenta los aspectos esenciales y necesarios para sentar las bases del pensamiento resolutivo que permitirá a los alumnos iniciar el camino hacia las distintas técnicas de desarrollo de software, como por ejemplo, las especializaciones en los lenguajes Java/JEE, MS .NET, PHP y muchos otros lenguajes actuales. Para esto, durante el curso nos enfocaremos en comprender los principales paradigmas de programación a través del planteo del conceptos teóricos que serán llevados a la práctica en formato de pseudocódigo, lo que evitará que el alumno acote su visión resolutiva de los "problema programáticos" en una única solución, en un único lenguaje de programación. Por el contrario, el pseudocódigo presentado en este curso abrirá el camino a la especialización sobre cualquiera de las tecnologías antes mencionadas o incluso otras.

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 10

2. ¿Qué es programar? Programar, desarrollar software (o simplemente “desarrollar”, dentro de un contexto acorde), escribir aplicaciones o… “codear”. Son todos términos que se utilizan indistintamente para describir la actividad que realiza un programador con relación a la creación de una pieza de software, sea un componente, módulo, servicio o aplicación, independiente o relacionada con otros componentes, módulos, servicios o aplicaciones.

Se trata ni más ni menos de aplicar una serie de técnicas para la resolución de problemas en base al razonamiento lógico y con distintas herramientas, para resolver un problema en particular, como puede ser la consulta de un cliente o de una historia clínica, o el funcionamiento de un robot o de los frenos de un vehículo.

Podemos decir entonces que (en forma muy resumida) programar consiste en:

Vamos por partes: 

Una persona: podemos tomarlo en el sentido literal de un individuo o un equipo de trabajo, con los conocimientos suficientes para realizar la actividad. Inicialmente debería interiorizarse del problema que deberá enfrentar, para poder pensar en una solución.

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 11



Realiza una serie de actividades: plantea la solución al problema antes mencionado. Se utiliza el razonamiento lógico, que sirve para realizar un correcto planteo del problema para buscar una solución a posteriori.



Utilizando herramientas: normalmente la actividad de programación en sí se realiza con herramientas especializadas y creadas para tales fines. Por ejemplo, para navegar en Internet usamos un browser o explorador, como Internet Explorer/Edge, Firefox o Chrome, entre otros. Para escribir un documento de texto usamos el MS Word o los Google Docs. De aquí se desprenden al menos 2 preguntas: o La primera sería: si tengo tantas opciones para hacer lo mismo, ¿cuál es la opción indicada? Lamentablemente, no hay una respuesta tajante: depende de: 

a) Lo que se necesite hacer (por ejemplo, si necesitara escribir un documento que sea visto online por otras personas, utilizaría Google Docs ya que MS Word no lo permite).



Y por otro lado, y no menos importante: b) el gusto personal. En caso de similitud de prestaciones y/o costo-beneficio, me inclinaré a utilizar la herramienta con la cual me sienta más cómodo.

o La pregunta consiguiente sería: ¿utilizo software para escribir software? Sí. Ya sea una compleja interfaz gráfica o un editor de textos en modo ASCII, todo el software es creado en base a otro. Para

esto

Enviroment"

se o

utilizan las "Entorno

"IDE" de

("Integrated

Desarrollo

Development

Integrado").

información acá: https://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

Más

p. 12



Para resolver un problema: sin caer en el sentido negativo literal de la palabra “problema”, entendemos que si estamos desarrollando un software nuevo es porque existe un requerimiento propio o de un tercero (cliente) de resolver una situación para la cual no se dispone de una aplicación preexistente que la resuelva (o simplemente tenemos ganas de codear y de reinventar la rueda, pero a nuestro modo). Una vez más: si necesito escribir un texto: ¿desarrollo un sistema que me permita realizar esta acción, o abro el MS Word y lo escribo? Nuevamente, deberemos tener en cuenta el contexto y las variables en juego: tal vez no tenga la licencia de MS Word y lo que necesito es escribir una breve carta sin ahondar en formato o funcionalidades complejas. En ese caso, quizá pueda programar un editor de textos sencillos que resuelva mi requerimiento de escribir una breve carta, sin formato, etc.

En la actualidad, nos encontramos con un numeroso grupo que pregona que la programación es un arte, en el sentido de que se lo relaciona con una actividad creativa y artesanal. Ambos conceptos son reales y concretos. Por otro lado, los detractores afirman que se trata de una actividad ingenieril, prácticamente una Ciencia, ya que se utilizan estándares y técnicas probadas y mejoradas con el tiempo y experiencia previa. Estos también son conceptos reales y concretos, por lo que se presenta una discusión cuasi filosófica sobre el asunto, donde no parece haber una posición que pueda retractar definitivamente del todo a la otra. Lo concreto es que la programación es una actividad que reúne todas las características antes nombradas con el fin de modelar una determinada realidad dentro de un contexto particular. ¿Por qué decimos que “modela la realidad”? Porque (nuevamente) debemos resolver un problema de nuestro entorno. Por ejemplo, si necesito consultar los datos de un cliente (en el caso de que cliente sea una persona física), me voy a encontrar con que un programa probablemente me muestre los siguientes datos (o más, o menos, dependiendo del requerimiento):

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 13

Tenemos a un cliente, que es una persona, sobre la cual contamos con ciertos datos personales. Podemos decir que estamos ensamblando una persona-cliente en base a datos aislados, que combinados resultan en información. Esta combinación de datos describe a una persona en particular. Si les ponemos valores:

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 14

En caso de tener como único dato:

No tendríamos información concreta. Si unimos los datos resulta en información de contacto de una persona, en este caso, un cliente. Al ver estos datos unidos, ¿no podríamos decir que tenemos un ejemplo de una persona-cliente?, ¿un modelo abstracto basado en datos? De esto se trata: ya sea una persona, una cuenta de un banco o una turbina de un avión, todas estas entidades son susceptibles a ser desglosadas en las partes que las componen y en el nivel de detalle que sea necesario. ¿Con qué fin? Mostrar datos de contacto, realizar una transacción online o controlar la velocidad del avión, a través de la manipulación de los datos individuales de cada una de estas entidades. Arte o ingeniería, lo concreto es que la programación nos brinda la posibilidad de modelar la realidad con el fin de hacer algo con la misma.

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 15

ACTIVIDAD 1: La programación... ¿Ciencia/Ingeniería o Arte? ¿Qué definición le cabe mejor sobre su propia opinión? ¿Qué argumentos tiene en base a una o la otra postura? Les dejo una cita de Robert C. Martin de su gran obra "Código Limpio" del año 2012:

"No desarrollo un programa de principio a fin en su forma final y, sobre todo, no espero que puedas crear programas limpios y elegantes a la primera. Si algo hemos aprendido en las dos últimas décadas es que la programación es un arte más que una ciencia. Para escribir código limpio, primero debe crear código imperfecto y después limpiarlo. No debería sorprenderle. Ya lo aprendimos en el colegio cuando los profesores (normalmente en vano) nos obligaban a crear borradores de nuestras redacciones. El proceso, nos decían, era escribir un primer borrador, después otro, y después otros muchos hasta lograr una versión definitiva. Para escribir redacciones limpias, el refinamiento debía ser continuado. Muchos programadores noveles (como sucede con los alumnos) no siguen este consejo. Creen que el objetivo principal es que el programa funcione. Una vez que lo consiguen, pasan a la siguiente tarea, y conservan el estado funcional del programa, sea cual sea. Los programadores experimentados saben que esto es un suicidio profesional." El autor tiene una visión crítica y una postura muy marcada. ¿Están de acuerdo? ¿Es realmente una forma de arte? ¿En el sentido amplio o con algún tipo de matiz? Comparta sus respuestas en el foro.

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 16

3. ¿Qué es software? ¿Qué nos permite hacer? Cuando hablamos de software, no hablamos de nada literalmente “blando” (soft). De hecho, el software es físicamente, literalmente, intangible. En la actualidad, existe una serie de términos que se utilizan con un mismo fin, normalmente relacionados con la terminología de una tecnología o contexto en particular.

Ya sea un formulario de registración online o un controlador (driver) de un hardware que permite que un sonido sea emitido por una computadora, se trata de lo mismo: software, el "comodín" que utilizamos para definir todo lo intangible que compone la informática. El software se encuentra en todos lados en la actualidad: en televisores, automóviles, teléfonos, electrodomésticos... no solamente en una PC. Puede estar incluso impreso en un circuito o componente electrónico, algo que se conoce como firmware, aunque el concepto haya evolucionado recientemente. ¿Por qué tenemos software en todo lo que nos rodea? Básicamente, porque la tecnología se ha masificado en forma considerable en las últimas décadas, por lo que surge la necesidad de cubrir los requerimientos de funcionalidad de una infinidad de aparatos. Como la construcción de software es una actividad relativamente simple (dependiendo lo que se quiera hacer, por supuesto) y mucho más barata que los componentes físicos, se tiende a crear dispositivos con el menor costo posible. Además de las obvias ventajas de mantenimiento: crear un circuito impreso con determinada lógica permitiría un funcionamiento extremadamente más rápido y a prueba de errores que software, aunque una vez impreso, no se podría modificar, agregarle una nueva funcionalidad o simplemente mejorarlo.

Centro de e-Learning SCEU UTN - BA. Medrano 951 2do piso (1179) // Tel. +54 11 4867 7589 / Fax +54 11 4032 0148 www.sceu.frba.utn.edu.ar/e-learning

p. 17

Tenemos en claro, entonces, que el software es creado para un determinado fin que no es posible (por el motivo que fuera) enfrentar o solucionar con un programa preexistente. Este aspecto debe ser evaluado antes de comenzar con el desarrollo, para descartar que exista tal solución previamente creada por un tercero. Este es un ejemplo de la complejidad inherente al mundo del desarrollo: no nos podemos limitar solamente a escribir código. Necesitamos tener en cuenta que existe una serie de actividades que se realizan antes y otras después de la programación. En unidades posteriores nos adentraremos en estas actividades que corresponden a lo que llamamos un “ciclo de vida” de desarrollo de software. Como ejemplo, basta decir por el momento que algunos postulados indican (sin ciencia cierta) que las actividades de programación dentro de un ciclo de vida de un desarrollo de software representan entre el 50% y el 60% del tiempo total; el resto corresponde a estas otras actividades, entre las que podemos incluir (entre otras) el hecho de investigar si nuestro problema planteado ya fue resuelto con anterioridad. Estas actividades del ciclo de vida se encuentran normalmente enmarcadas dentro de lo que llamamos “proyectos”. La definición tácita de proyecto se refiere a la realización única de ciertos pasos o actividades con el fin de obtener un producto o servicio como resultado. Se hace hincapié en el hecho de que las actividades son únicas e irrepetibles ya que no existen dos proyectos iguales. Si fuera así, estamos haciendo retrabajo o rehaciendo...


Similar Free PDFs