Salta al contenido principal

Introducción a la programación 2023

Sitio: Facultad de Ingeniería U.Na.M.
Curso: Informática ET241/EM241/IC241/IN241/IM204
Libro: Introducción a la programación 2023
Imprimido por: Invitado
Día: lunes, 22 de julio de 2024, 15:21

1. ¿Qué es la Informática?

Definición

La Informática nace bajo la idea de ayudar al hombre en aquellos cálculos rutinarios, donde frecuentemente existe una repetición de tareas. Ejemplo de ello es la gestión de un censo, el primero automatizado en 1890 en EEUU utilizando tarjetas perforadas. En esa época se pensó que una máquina no sufriría cansancio ni cometería errores. Con el tiempo esta idea se fue afianzando en la sociedad, y es hoy día que se sigue trabajando para mejorar las prestaciones de los sistemas de cómputo.

https://live.staticflickr.com/193/442309087_5be9675549_b.jpgTarjeta perforada

Si repasamos la historia veremos que la Informática estuvo entre nosotros desde tiempos lejanos, por supuesto no tal cual la percibimos hoy día. A continuación transcribimos algunas ideas de importantes pensadores relacionados con la Informática. Para ubicarse en la historia, debe notarse que los primeros modelos de computadoras aparecieron alrededor del año 1940.

Gottfried Wilhelm Leibniz (1646-1716) fue uno de los grandes pensadores de los siglos XVII y XVIII, decía que “Es una pérdida de tiempo que personas cualificadas pierdan horas como esclavos en la labor de calcular, lo que podría ser delegado en cualquier otro si se pudieran utilizar máquinas”. Basándose en los trabajos de Pascal construyó una calculadora mecánica compuesta por cilindros dentados con longitud incremental que podía sumar, restar, multiplicar y dividir automáticamente, conocida como la rueda de Leibniz. Algunas máquinas basadas en estos mismos principios han jugado un papel preponderante en la Segunda Guerra Mundial, e incluso algunas están todavía en uso. Leibniz fue también el primer pensador occidental en investigar la aritmética binaria y sentó las bases de la lógica simbólica, basada en símbolos y variables abstrayendo la semántica de las proposiciones.

Ada Byron (1815-1852) desarrolló los primeros programas para la Máquina Analítica de Babbage (1833), debido a estos trabajos, se la considera el primer programador de computadoras del mundo. Ella escribió “La Máquina Analítica no tiene la pretensión de crear nada. Puede realizar cualquier cosa siempre que conozcamos cómo llevarla a cabo; pero es incapaz de descubrir relaciones analíticas o verdades". Su potencialidad es la de ayudarnos a hacer posible aquello sobre lo que tenemos un conocimiento previo. Muchas han sido las mujeres que han realizado grandes aportes a la Informática, aún así Ada Byron es la única mujer que cuenta con un lenguaje de programación que lleva su nombre: en 1979 el Departamento de Defensa de los Estados Unidos creó un lenguaje de programación basado en Pascal que se llamó lenguaje de programación Ada en su honor.

George Boole (1815-1864), por su parte, fue un destacado matemático que está considerado como uno de los pioneros en el desarrollo de las ciencias de la computación. Sus aportes teóricos dieron lugar a la especialización que se conoce como álgebra de Boole o álgebra booleana.

Herman Hollerith (1860-1929) fue un estadístico estadounidense que inventó la máquina tabuladora. Es considerado como el primer informático, es decir, el primero que logra el tratamiento automático de la información (Informática = Información + automática). En esos tiempos, los censos se realizaban de forma manual, con el retraso de unos 10 años en su procesamiento. Ante esta situación, Hollerith comenzó a trabajar en el diseño de una máquina tabuladora o para procesar los datos del censo, basada en tarjetas perforadas que patentó en el año 1889. Un año después incluyó la operación de sumar con el fin de utilizarla en procesos de contabilidad.

Alan Turing (1912-1954) fue un matemático, lógico, científico de la computación, criptografía y filósofo británico. Es considerado uno de los padres de la ciencia de la computación siendo el precursor de la informática moderna. Proporcionó una influyente formalización de los conceptos de algoritmo y computación, la famosa máquina de Turing. Durante la Segunda Guerra Mundial, trabajó en descifrar los códigos nazis, particularmente los de la máquina Enigma. Tras la guerra diseñó una de las primeras computadoras electrónicas programables digitales en el Laboratorio Nacional de Física del Reino Unido (1945). Entre otras muchas cosas, también contribuyó de forma particular e incluso provocativa al enigma de si las máquinas pueden pensar, es decir a la Inteligencia Artificial. Turing decia: “Las máquinas me sorprenden con mucha frecuencia". Hay varias películas sobre la vida de este hombre, la última en el 2014 una película llamada "El Código Enigma", trata de su historia personal y laboral.

John von Neumann (1903-1957) fue un matemático húngaro que realizó contribuciones fundamentales en física cuántica, análisis funcional, teoría de conjuntos, ciencias de la computación, economía, análisis numérico, cibernética, hidrodinámica, estadística y muchos otros campos. Está considerado como uno de los más importantes matemáticos de la historia moderna. Diseñó una arquitectura de computadoras que lleva su nombre, y aún es utilizada en casi todas las computadoras personales, microcomputadoras, minicomputadoras y supercomputadoras. Von Neumann decía “Podría parecer que hemos llegado al límite de lo que es posible lograr con la tecnología informática, aunque hay que tener cuidado con tales declaraciones, ya que tienden a sonar bastante tontas en cinco años”.

El término Informática nace recién en la década de 1960 en Francia bajo la denominación INFORMATIQUE, debido a la contracción de las palabras INFORmation y autoMATIQUE, es decir el tratamiento de la información por medios automáticos. En las múltiples publicaciones, la Informática se define de diversas maneras pero siempre ronda la misma idea: el tratamiento automático de la información.

A continuación veremos algunas definiciones.

• INFORMÁTICA es la ciencia que estudia el tratamiento automático y racional de la información. Se habla de tratamiento automático debido a que son máquinas las que procesan la información y se dice racional por estar los procesos definidos a través de programas que siguen el razonamiento humano.

• INFORMÁTICA es el estudio de los algoritmos y de las computadoras - de sus teorías, sus modelos abstractos, su realización mecánica, su fiabilidad y verificación, su medida y eficacia, su descripción lingüística y su contexto social.

• La Ciencias de la Computación o Informática como se le llama en algunos países hispanoamericanos, es la disciplina que busca establecer una base científica para diversos temas, como el diseño de computadoras, la programación de computadoras, el proceso de información, la elaboración de algoritmos para resolver problemas y el proceso algorítmico en sí.


1.1. Del mundo real a la Computadora

¿Cómo Informatizar un problema.?

El proceso de informatizar la resolución de problemas del mundo real, tales como resolver una ecuación matemática o realizar la liquidación de sueldos de los empleados de una empresa, conlleva una serie de pasos que debemos seguir para obtener una respuesta encuadrada a los datos provistos.

Cómo primer paso se deberá conocer las especificaciones del problema, es decir, analizar y determinar en forma clara y concreta el objetivo que se desea.

Es un error frecuente tratar de comenzar a buscar una solución sin antes tener una interpretación total del problema o cuál es el propósito de la solución.

Por lo tanto debemos analizar los datos que se disponen y cuáles son los resultados que se desean. 

Una vez que se conoce el problema en detalle, se puede intentar realizar un Modelo del mismo, es decir, Abstraer el problema tratando de encontrar los aspectos principales que se pueden resolver, los datos que se han de procesar y el contexto del problema, simplificando su expresión. Disponiendo de un panorama más claro del problema, sus datos y resultados, se puede escribir una serie de acciones que seguidas paso a paso resuelvan el problema. Esto es el Algoritmo. Si esta etapa es exitosa, se traduce el algoritmo, mediante un lenguaje de programación, para convertirlo en un Programa que podrá ser interpretado por la computadora para su ejecución en forma rápida y eficaz.

"Un algoritmo es una forma de describir la solución de un problema, explicando paso a paso cómo se debe proceder para llegar a una respuesta encuadrada a los datos disponibles, en un tiempo finito"




1.2. Resolución de problemas con computadora

Existen cinco etapas a tener en cuenta para resolver un problema que luego será ejecutado por una computadora en forma rápida y eficaz, ellas son:
  1. Análisis del problema, se formula y analiza el problema en su contexto del mundo real. COMPRENDER EL PROBLEMA.
  2. Diseño de una solución, se elige una metodología para hallar la solución del problema. TRAZAR UN PLAN PARA RESOLVERLO.
  3. Escritura de un algoritmo, se expresa la metodología del punto anterior de forma tal que pueda ser interpretado por el procesador que lo va a ejecutar. ESCRIBIR EL ALGORITMO.
  4. Codificación del algoritmo. Un algoritmo es una especificación simbólica que debe traducirse a un programa a partir del conocimiento de un lenguaje de programación para poder ser ejecutado por la computadora. ESCRIBIR EL PROGRAMA O CODIFICAR EL ALGORITMO.
  5. Ejecución y validación del algoritmo-programa. La etapa siguiente a escribir el programa, es la verificación de funcionamiento del mismo, es decir, ver sí el programa conduce al resultado deseado con los datos dados del mundo real. PROBAR EL PROGRAMA.
La primera etapa está dada por entender el enunciado del problema. Es importante que se conozca lo que se desea que realice la computadora, mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa.
Cuando se ha comprendido lo que se desea resolver, es necesario hacer un Análisis del problema, definiendo:
  • Los datos de entrada.
  • Cuál es la información que se desea producir, los resultados.
  • Los métodos y fórmulas que se necesitan para procesar los datos para arribar a los resultados, la metodología de resolución.
Una vez que se tiene en claro la metodología de resolución, se escribe el algoritmo en forma simbólica , esto se verá en la materia. En una primera etapa, es aconsejable probar que el algoritmo propuesto realmente resuelva el problema planteado, utilizando papel, lápiz y nuestra mente como procesador, esto es llamado Prueba de Escritorio.
En una segunda etapa, este algoritmo podrá ser traducido en un lenguaje reconocible por la computadora, generando así el programa. La serie de instrucciones del programa se la conoce como código fuente o script, el cual se escribe en un lenguaje de programación, generalmente un lenguaje de alto nivel (comprensible por el hombre, como Python, C++, entre otros).
El programa podrá ser probado en la computadora. En este caso, pueden aparecer errores de sintaxis y/o de semántica. Sobre los tipos errores hablaremos mas adelante.

2. El modelo Computacional

¿Qué tenemos y qué queremos?

Para encarar la resolución de un problema por computadora hay que considerar como punto de partida que el procesamiento de la información lleva en sí el hecho de tomar datos, elaborarlos y emitir resultados de acuerdo a dichos datos y a la lógica del proceso que se está ejecutando en ese momento. Por lo tanto, se puede pensar en un modelo computacional compuesto de tres partes: ENTRADA, PROCESO y SALIDA, como se muestra en la siguiente.

2.1. La parte difícil...

Una vez entendido el problema hay que desentrañar del enunciado los datos necesarios para comenzar el proceso de resolución, abstrayéndose del proceso de resolución. Habría que preguntarse:
  • “¿Qué necesito para resolver el problema, si yo fuese el procesador?”
  • “¿Qué datos necesito que me de otra persona para poder obtener la solución del problema?”, y anotarlos como ENTRADA o DATOS.
Una vez determinados los datos, se deberá determinar cuál es el/los resultado/s, es decir, qué se obtiene con los datos de entrada y anotarlos como SALIDA o RESULTADOS. A veces pueden ser más fáciles de visualizar los resultados antes que los datos de entrada, en dicho caso habría que preguntarse:
  • “¿Para obtener este resultado, qué información necesito?”( ó Que datos de Entrada necesito?).
  • Luego se preguntará “¿Cuáles son los pasos para llegar al resultado partiendo de los datos?”.
Con lo cual se podrá escribir el PROCESO o ALGORITMO asociado. Por ejemplo, si se desea realizar un algoritmo para calcular el área y el perímetro de un círculo en función de su radio, las diferentes partes del modelo computacional serán:
Entrada : El radio del Círculo.
Proceso: Área= π *radi o 2 , Perímetro=2* π *radio
Salida: Área Perímetro
El proceso (algoritmo) asociado a este problema será:

Entrada:

  • Dar el valor del radio y guardar ese valor con el nombre R.

Proceso:

  • Calcular el Área como pi * radio * radio
  • Calcular el Perímetro como 2 * pi * radio

Salida:

  • Informar los resultados de Área y Perímetro.

Sin embargo, el proceso (algoritmo) expresado en forma coloquial (coloquial: Que es propio de la conversación corriente) no puede ser entendido por la computadora. Por lo cual habrá que escribirlo siguiendo reglas especiales que la computadora entienda.
Vale la pena observar que la relación entre entrada, proceso y salida no es algo que necesariamente se realice en este orden:
  1. primero ingresar todos los datos
  2. luego procesarlos
  3. por último exhibir todos los resultados.
Por ejemplo un algoritmo puede solicitar la entrada de algunos datos, obtener ciertos resultados, y en base a esto pedir nuevos datos y mostrar otros resultados sobre la marcha del proceso, es por ello que la interpretación del enunciado es fundamental.

3. ¿Datos o Información?

Describiremos la diferencia que existe entre Datos e Información, términos que se pueden pensar como sinónimos. En el ambiente de la Informática, el término información puede aplicarse a casi cualquier cosa que pueda comunicarse, tenga o no valor.

Los datos, en principio, son información no elaborada, que una vez procesados (comparados, ordenados, sumados, etc.) constituyen información útil.

Los datos son simplemente hechos o cifras: bits de información, pero no información en sí misma. Cuando los datos se procesan, interpretan, organizan, estructuran o presentan para que sean significativos o útiles, se denominan información . La información proporciona contexto para los datos


Según esto, las palabras, los números, las imágenes de este libro son símbolos que representan datos. Si resalto una palabra en el texto estoy añadiendo información al texto.

Por ejemplo, una lista de fechas (datos) no tiene sentido sin la información que hace que las fechas sean relevantes (fechas de vacaciones).

En una dada situación problemática se puede disponer de muchos datos, de los cuales sólo algunos pueden ser útiles para la resolución del problema, es decir, considerados información útil.

"Entonces podemos decir que la información es el conocimiento producido como resultado del procesamiento de los datos."

Observación :

Vemos que lo que hace la diferencia entre Datos e Información es el Procesador ( persona o máquina)

Ejemplos:

1)

2)

La temperatura es de 25. Esto es una Dato. Si lo interpreta una argentino, procesaría la información pensando que son 25 grados centígrados, si lo escuchara un norteamericano pensaría que son grados fahrenheit, y esto sería algo muy frio, son caso -4 grados celcius. Como vemos el valor del dato tiene distinto sentido luego de ser procesado.


4. Algoritmo

¿Qué es un Algoritmo?

Un algoritmo es una forma de describir la solución de un problema, explicando paso a paso cómo se debe proceder para llegar a una respuesta encuadrada a los datos disponibles, en un tiempo finito.
Seguramente existirán distintos algoritmos para resolver un mismo problema y todos serán correctos, cada uno de ellos pensado por una persona diferente, cada uno de ellos con un diseño distinto, cada uno de ellos con un sello propio. Escribir algoritmos es un arte, en el que cada persona le dará su estilo personal.
Las características de un algoritmo deben ser:
  1. preciso, es decir, debe indicar claramente, sin ambigüedades, cada uno de los pasos a seguir para conseguir el objetivo propuesto.
  2. exacto, es decir, que si se sigue el algoritmo varias veces con el mismo juego de datos, los resultados obtenidos deben ser los mismos.
  3. finito, de tiempo finito, su ejecución debe concluir en algún momento.
En palabras sencillas, los algoritmos son caminos, rutinas, secuencias que hacemos para realizar alguna tarea de manera correcta.

4.1. ¿Quien ejecuta el Algoritmo?

¿Quién “ejecuta” éstas acciones?
La respuesta es: un procesador.
Un procesador es aquel sujeto o máquina que puede entender un enunciado y ejecutar el trabajo indicado en el mismo.
La sintaxis ( lenguaje de Programación) y la semántica (lógica) a utilizar para escribir un algoritmo depende del lenguaje que conoce el procesador, pues según cuál sea éste, habrá que describir las tareas con más o menos detalle.
Pensemos que le queremos dar a un cocinero experto las indicaciones de como hacer puré de papa.. no se necesitaría mucho mas que decirle "hacete un puré de papas" . Pero si le queremos dar las indicaciones a alguien que no sabe que es, deberíamos comenzar indicándole que son las papas, como pelar, etc. etc. algo difícil sin dudas.
Observemos que dependiendo del procesador puede cambiar el concepto de dato o información, como ya comentamos para un chico de 2do. grado PI, lo puede tomar como dos letras P e I, pero para un estudiante de Ingeniería se referiría al valor de 3,14... que se representa con la letra griega conocida como PI ( 𝜋).
Entonces, frente a un problema, sabiendo quien será el procesador y su lenguaje de comunicación, podremos describir la solución del problema mediante un algoritmo que pueda ser entendido y ejecutado sin ambigüedades.

4.2. Ejemplo

Ejemplo Cotidiano.

Para comenzar a formalizar los conceptos fundamentales para escribir algoritmos veremos un ejemplo de la vida cotidiana:
Escribir la receta de cocina para hacer bombas de papa para 4 personas.
Existen dos fases en la resolución de este planteo:
  • determinar los ingredientes necesarios,
  • describir los pasos para hacer bombas de papas.
  1. Ingredientes (elementos necesarios): 1 Kg. de papas, 1 huevo, pan rallado, queso cremoso, aceite, sal y pimienta a gusto.
  2. Separar en tareas los pasos necesarios para lograr el objetivo:
  • Tarea 1: Pelar un Kg. de papas y cortarlas en dados pequeños
  • Tarea 2: Hervir las papas hasta que estén cocidas
  • Tarea 3: Pisar las papas hasta lograr un puré
  • Tarea 4: Condimentar a gusto y dejar enfriar.
  • Tarea 5: Batir el huevo en un recipiente
    • Tarea 5.1: Sal y pimienta a gusto
  • Tarea 6: Colocar en un plato el pan rallado
  • Tarea 7: Cortar el queso en dados de 1cm aproximadamente
  • Tarea 8: Tomar una porción de puré.Repetir la tarea 8 hasta que no haya más puré.
    • Tarea 8.1: Colocar un dado de queso en el interior.
    • Tarea 8.2: Realizar una bolo ocultando el queso
    • Tarea 8.3: Empapar con el huevo batido y luego pasar por el pan rallado.
  • Tarea 9: Colocar una taza de aceite en una sartén
    • Tarea 9.1: calentar a fuego moderado
  • Tarea 10: Colocar las bombas de papas en el aceite y cocinar hasta que se doren.
  • Repetir la tarea 10 para cocinar todas las bombas.
    • Tarea 10.1: Sacar del fuego y colocarlas sobre papel absorbente.
  • FIN.
Seguramente Ud. habrá escrito una receta de cocina distinta, o habrá pensado que no sabe hacer este algoritmo, y por lo tanto debió consultar con algún cocinero experto. Experto no se refiere a un chef especializado, sólo debe ser una persona que sepa realizar las acciones, por ejemplo su mamá.
Pero ¿quién “ejecuta” estas acciones? Tal cual está planteado el algoritmo lo podrá ejecutar toda persona que comprenda que es “batir los huevos” sin ambigüedades ni más detalles. Tal vez Ud. pueda seguir estos pasos y terminar con una exquisita comida, o quizás no esté aún preparado para enfrentar dicho desafío.Pero porqué pensar en subestimar al lector, tal vez Ud. sea un experto cocinero, y no necesite seguir estos pasos para hacer las bombas de papas, simplemente su algoritmo sea Tarea 1: hacer bombas de papas para 4 personas, pues es una orden que entiende perfectamente.
Otro punto que podemos destacar, con el cual se resalta la importancia del procesador es por ejemplo la Tarea 7: Cortar el queso en dados de 1cm aproximadamente, creo que si el procesador es un estudiante de ingeniería y no es un cocinero experimentado le resultaría menos ambiguo algo como : Tarea 7: Cortar 300 gramos de Queso Por Salut en dados de 1cm aproximadamente ,Se concluye pues que la redacción de un algoritmo depende del procesador que lo va a ejecutar.
Como conclusión, frente a un problema debemos saber quién será el procesador y escribir una solución que pueda entender y llevar a cabo sin ambigüedades.

4.3. Problemas Algoritmicos.

Son aquellos problemas cuya solución puede expresarse mediante un algoritmo.
En la vida cotidiana encontramos muchos problemas algorítmicos, tanto dentro como fuera del campo altamente especializado de la informática. Ejemplo de otros problemas algorítmicos son los siguientes:
  • Ir a la Biblioteca. Conjunto de acciones para llegar a la Biblioteca.
  • Dar la vuelta al mundo por el Ecuador. Un itinerario para recorrer el mundo.
  • Resolver una ecuación matemática. Pasos para resolver una ecuación.
  • Cambiar la rueda a un auto. Pasos a seguir para cambiar la rueda.
En estos casos, los algoritmos muestran las principales características señaladas en la definición: exactitud, efectividad y terminación garantizada. Cuando se ejecutan determinados algoritmos pueden completarse en un pequeño intervalo de tiempo, mientras que otros pueden llevar mucho tiempo.
Aquí cabe preguntar si existen problemas no algorítmicos, y la respuesta es afirmativa.
Un ejemplo de este caso es el problema de “Escribir todos los números enteros comenzando desde 1". No es un problema algorítmico, pues la resolución (que todos podemos imaginar y escribir sin dificultad) no cumple la condición de finitud.
En esa materia nos concentraremos en resolver problemas Algorítmicos.

SI SE TIENE UN ALGORITMO SE PUEDE REEMPLAZAR POR UN PROGRAMA!!

Cualquier trabajo .. incluso el docente :-), ver que en este caso NO solo tiene que ver con la transmisión de información o contenidos, si no que también con la evaluación, cronología, tiempos, etc que son partes que el docente tiene a cargo.

5. Representación de Algoritmos.

Ahora veremos en que forma se puede escribir un algoritmo. No existe un lenguaje único y universal para escribir algoritmos. Cada lenguaje tiene una sintaxis determinada, un grupo finito de elementos que ayudan a representar los algoritmos, y una semántica asociada a la sintaxis, la cual se refiere al concepto que se representa.
Existen libros que tratan el tema, en ellos existen muchísimos elementos, no es el propósito de esta materia usar todos, así que se reducen los elementos a un mínimo que consideramos adecuado para escribir cualquier Algoritmo.
La sintaxis, conformada por dibujos y/o por palabras, no debe ser ambigua, y debe tener un nivel de detalle bien establecido con el cual pueda expresarse el algoritmo. Otro punto importante a tener en cuenta es que toda representación de algoritmos debe usar alguna forma que permita independizar dicho algoritmo de detalles propios de los lenguajes de programación en sí. Además, la descripción del algoritmo deber ser tal que permita ser fácilmente transformado en un programa, esto último condiciona el uso de cualquier combinación.
Existen dos tipos de representaciones de algoritmos:
  1. Gráfica (mediante dibujos)
  2. No gráfica (mediante textos).
Los métodos usuales para representar algoritmos son:
  1. Diagrama de flujo (del tipo Gráfico)
  2. Diagrama de Nassi Schneiderman (comúnmente denominado Diagrama de Chapin)
  3. Pseudocódigo (del tipo NO Gráfico)
  4. Lenguaje natural
  5. Fórmulas
Ejemplo de métodos 1 y 3:







Los dos primeros son formas gráficas de representación, mientras que los últimos son no gráficas.
Analizaremos las distintas representaciones. Los métodos 4) y 5) no suelen ser fáciles de transformar en programas. No es frecuente que un algoritmo sea expresado por medio de una simple fórmula, pues no es sencillo traducirlo a un lenguaje de programación. Observamos en el ejemplo de las bombas de papas lo ambiguo del lenguaje natural (en nuestro caso el español). A continuación veremos las diferentes representaciones sobre un mismo algoritmo, cuyo problema base es:
Enunciado del Problema: “Calcular el promedio de un conjunto de números positivos, suponiendo que los números ingresan de a uno por teclado. Un valor cero como entrada indicará que finalizó el ingreso de números positivos y se deberá mostrar el promedio de los mismos.”
Para poder resolver el problema mediante una representación Algorítmica anteriormente en esta materia se  usaban :
  • Gráficos (Diagrama de Flujo)
  • NO Gráficos (Pseudocódigo).
A partir del Cursado Informática 2020 NO vamos a utilizar ni Pseudocódigo ni Diagrama de Flujos para crear  los Algorítmos, vamos a resolver el Algoritmo utilizando directamente el lenguaje Python.
 

6. Programa

Definiremos qué se entiende por el término programa.

Un programa es un conjunto de acciones que puede entender y ejecutar una computadora.

Otra definición podría ser:

“es un algoritmo traducido a algún lenguaje que pueda ser entendido por una computadora para poder ejecutarlo”.

Cada acción del programa se denomina instrucción.

Para llegar a hacer un programa es necesario el diseño previo del algoritmo. Esto es, representar la solución del problema en un lenguaje natural, en el cual se expresan las ideas diariamente.

Lenguaje de programación es un conjunto de símbolos (sintaxis) y reglas (semántica) que permite expresar programas

Los algoritmos deberían ser independientes tanto del lenguaje de programación en que se expresa el programa, como de la computadora que lo va a ejecutar.


No hay programa sin Algoritmo.


7. Nuestro Procesador


Introducción

Nuestro Procesador: la computadora.

En la sección anterior hemos visto el modelo computacional (Entrada-Proceso-Salida) focalizando así el estudio en la computadora como procesador de los algoritmos que desarrollaremos a lo largo de este apunte. A continuación analizaremos brevemente los conceptos básicos que hay que tener en cuenta para poder programar para ella.

El diccionario de la Real Academia Española define computador electrónico como “Máquina electrónica, analógica o digital, dotada de una memoria de gran capacidad y de métodos de tratamiento de la información, capaz de resolver problemas matemáticos y lógicos mediante la utilización automática de programas informáticos.”

La propia definición nos da indicios acerca de algunos elementos básicos del computador:

1. la memoria y

2. algún dispositivo capaz de efectuar cálculos matemáticos y lógicos.

La memoria es un gran almacén de información. En ella se guardan todo tipo de datos: valores numéricos, textos, imágenes, sonido, etc. El dispositivo encargado de efectuar operaciones matemáticas y lógicas, recibe el nombre de Unidad Aritmético-Lógica (UAL o ALU en inglés).

Es una calculadora inteligente capaz de trabajar con datos y producir, a partir de ellos, nuevos datos, o sea el resultado de las operaciones. Existe otro dispositivo muy importante, la Unidad de Control (UC), que se encarga de transportar la información de la memoria a la UAL, de controlar la UAL para que efectúe las operaciones pertinentes y de depositar los resultados en la memoria.El conjunto que forman la Unidad de Control y la UAL se conoce por Unidad Central de Proceso (UCP o CPU en inglés Central Processing Unit). Podemos decir que la UAL+UC= UCP.

Se suele utilizar erróneamente el término CPU para referirse a la computadora, en realidad la CPU, más elementos como Memorias, Discos, Fuente, Placa Madre, etc. es lo que de manera errónea llamamos CPU.

Se puede imaginar la memoria como un armario enorme con cajones numerados y la UCP, como una persona que, equipada con una calculadora (la UAL), es capaz de buscar operandos en la memoria, efectuar cálculos con ellos y dejar los resultados en la memoria. Recordar que el procesador trabaja todo en la memoria. Utilizando un lenguaje más técnico: cada uno de los cajones que conforman la memoria recibe el nombre de celda de memoria y el número que lo identifica es su dirección o posición en la memoria.

Las celdas de la memoria son circuitos electrónicos organizados en pequeñas porciones, todas de igual tamaño. En cada una de ellas se puede almacenar secuencias de unos y ceros de tamaño fijo.


7.1. ¿Por qué Unos y Ceros?

 ¿Por qué Unos y Ceros?

Porque la tecnología de las computadoras se basa en la sencillez de construir dispositivos binarios, con dos posibles estados: encendido/apagado, hay corriente/no hay corriente, cierto/falso, uno/cero.
¿Es posible representar datos tan variados como números, textos, imágenes, sonido, videos, con sólo unos y ceros?
La respuesta es SI, lógicamente en el Sistema Numérico Binario solo tiene 2 símbolos y hay que reutilizarlos para formar números mayores a 1.
Cada símbolo conoce como bit. Un bit (acrónimo de las palabras binary digit) puede ser 0 ó 1.
En el sistema decimal la cantidad de símbolos es finita: 0,2,3,4,5,6,7,8,9 , pero los números son infinitos, por eso para poder crear los infinitos números se REUTILIZAN los símbolos ( dígitos ) por ejemplo 11, 51, etc.
En el Sistema Binario, sucede lo mismo.. por lo que para poder representar muchos valores necesitaremos MUCHOS bits. Surge históricamente una asociación de bits que perdura en el tiempo y se conoce como Byte.
Un Byte es un conjunto de 8 bits. Un bit (acrónimo de las palabras binary digit) 1 Byte=8 bits.

Mas adelante en la Materia veremos los distintos sistemas numéricos ( Octal, Binario, Decimal, Hexadecimal)

El propósito de mencionar aqui es para que el alumno asocie el Sistema Numérico Binario con el que maneja un Procesador.


7.2. Microprocesador vs. Microntrolador

Un Microcontrolador es MAS que un Microprocesador.

Un Microcontrolador  tiene:

  • Microprocesador o CPU
  • Memoria RAM (SRAM)
  • Memoria ROM (Memoria flash)
  • Líneas de entrada y salida.
  • Sensor efecto Hall
  • PWN
  • Timer
  • ADC Conversor Analógico Digital
  • Puertos Series (UART)
  • I2C (I cuadrado C).
  • Wifi
  • Bluetooth
  • etc..

Microprocesador Microcontrolador


7.3. Microprocesador

Que es un Procesador o Microporcesador?

Resultado de imagen para imagen microprocesadorResultado de imagen para imagen microprocesador amd

La imagen mostrada se refiera a un MICROPROCESADOR, que es un circuito integrado que se encuentra dentro de su computador.

Definición:

Un procesador es aquel sujeto o máquina que puede entender un enunciado y ejecutar el trabajo indicado en el mismo.

Vemos que la definición habla de sujeto o máquina.. por lo que Ud. que está leyendo esto es un procesador ( sujeto) y está procesando lo que lee.

Du forstår ikke norsk, fordi du ikke klarer å behandle teksten på det språket.

Es probable que NO sea capaz de entender el texto anterior, ya que no lo puede procesar... el texto está en Noruego, no lo hace ni mas inteligente ni menos inteligente.. solo que como no lo entiende no lo puede procesar..

Aclarado esto no es raro decir que el Procesador de una Computadora o mejor llamado microprocesador no sea capaz de entender el lenguaje que utilizamos para hablar, es por eso que se usa un lenguaje de programación, pero aún así no entiende este lenguaje ( llámese Python o C++).

El microprocesador puede interpretar 0 y 1, así que el código de escribimos en un lenguaje de programación se conoce como código fuente.

El programa que es traducido de código fuente a ceros y unos se conoce como código objeto.

Esto se puede hacer de dos maneras.

  • Lenguajes Interpretados.
  • Lenguajes Compilados.

Tanto compiladores como interpretadores son programas que convierten el código que escribes a lenguaje de máquina, son como "Traductores"de código fuente a código objeto.

Los lenguajes compilados son aquellos lenguajes de alto nivel que como su nombre lo sugiere, requieren de un compilador (programa que traduce un lenguaje de alto nivel en código máquina o lenguaje máquina) para traducirlo y crear la parte ejecutable.

Los lenguajes de alto nivel permiten escribir instrucciones en un idioma muy parecido al inglés así como hacer uso de notaciones matemáticas comunes.

Ejemplos: C y C++

Lenguajes interpretados


Los lenguajes interpretados son aquellos lenguajes de programación también de alto nivel en donde el código fuente debe ser traducido a un lenguaje que la máquina entienda y pueda realizar, no crean un archivo externo.

Ejemplos: Python y Ruby

A modo de comentario el procesador es una parte de la Computadora, es , hay otras como placa madre, memoria, ventilador del micro que se encuentran dentro de lo que conocemos como computadora.


8. Nombres de programas

El nombre de un programa NO es lo mismo que el nombre de un archivo tipo documento!!


Reglas para Nombres de Programas

El propósito de esta materia es que sepamos escribir un programa, los programas necesitan ser llamados y para ello deben tener un nombre.

Normalmente no tratamos el tema de los posibles nombres a los programas, pero solía ser un error común que los alumnos asignen nombres y que luego al momento de hacer correr el programa o ejecutar tira algunos errores, es por eso que vamos a establecer para el presente curso unas reglas para los nombres de programas.


Estas 3 reglas son sencillas y veremos que tienen un parecido grande con los nombre de las variables que veremos mas adelante y nos van a permitir evitar errores menores.

1. Todo nombre de programa debe empezar con una letra del alfabeto inglés (mayúscula o minúscula).

2. No debe contener espacios en blanco ni punto. Este suele ser un error frecuente de los alumnos.

3. Puede contener una combinación de los siguientes caracteres : letras, dígitos y el guión bajo.

Se entiende por Letras:

a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N OPQRSTUVWXYZ
Se entiende por Dígitos:

0 1 2 3 4 5 6 7 8 9
Se entiende por  Caracter especial :

_  (guión bajo) 

Observación:   NO ESTA EL ESPACIO!!


8.1. Case Sensitive

Que algo sea sensible   a las mayúsculas y minúsculas, conocido como o case sensitive en inglés case sensitive, es una expresión usada en informática que se aplica a los textos en los que tiene alguna relevancia escribir un carácter en mayúsculas o minúsculas. Esto se aplica en particular para las variables y quiere decir que no es lo mismo

  • Temperatura
  • temperatura
  • TEMPERATURA
  • TEMPeratura

En Python todos estos nombres serán tratados como distintos, ya que Python es case sensitive.

8.2. Tipos de Notaciones

Tipos de Notaciones

Recordemos que los espacios no son recomendados en los nombres, ni de programas ni de variables como ya dijimos.

Se comentan aquí dos alternativas para hacer entendible el nombre usando lo que se conoce como notación con delimitadores.

Palabras separadas por _ (guión bajo)

Programa_uno

Ejemplo_dos

Ejercicio_funcion_1

Palabras separadas por mayúsculas o camello

ProgramaUno

EjemploDos

EjercicioFuncion1


8.3. Acceso Directo

Acceso Directo NO es el nombre del Programa.

En estos tiempos en lo que todo es bajo un gráfico, permite hacer que el usuario sea un ignorante respecto del nombre de un programa y para ello los Sistemas Operativos con un entorno gráfico reemplazan los nombre de los programas por otros que no tienen las limitaciones vistas y mencionadas.

Estos se llaman en Windows Accesos Directos y en Linux, Enlaces.. pero el propósito es el mismo.. eliminar las limitaciones de los nombres de los programas. Veamos algunos casos comunes.

El caso de Microsoft Word, nombre del acceso directo al programa winword.exe

El caso de LibreOffice Writer, nombre del acceso directo al programa  /usr/lib/libreoffice/program/soffice.bin --writer

El caso de LibreOffice Calc, nombre del acceso directo al programa  /usr/lib/libreoffice/program/soffice.bin --calc

El caso de Bloc de Notas, nombre del acceso directo al programa notepad.exe

Importante: En este curso escribiremos programas (no accesos directos) , por lo tanto debemos respetar las limitaciones de los nombres o probablemente no funcionarán


8.4. Ejercicios


El docente plantea a la clase para que en 5 minutos que cada Alumno proponga 6 nombres de programas. Deben:

1)Respeten las reglas de Nombres de Programa

2) Tengan los dos tipos de Notaciones ( Camello y guión bajo)

El docente toma nota de algunos en el pizarrón e identifica el tipo de notación o los errores que se puedan observar.

Recordar que:

NO deben existir espacios.

NO deben existir letras acentuadas : á, é, í, ó, ú

No deben existir caracteres como : ñ ,  Ñ, " , ' ,