Para acompañar lo que vengo publicando de programación, transcribo un resumen de un apunte teórico que tengo, que va a ser de gran ayuda, junto con las explicaciones de Python que vengo publicando. Mas adelante voy a ir publicando mas cosas y algo de Pseudo-Código
Introducción
¿Que es una computadora?
Ahora si, vamos a empezar dando una pequeña explicación de que es una computadora, a los alcances de este post, no nos vamos a meter mucho en Hardware. Para entender a esta altura como funciona una computadora tenemos que tener en claro, que esta, se compone básicamente de: Procesador, Memoria, dispositivos de entrada y dispositivos de salida. Con estos elementos, un ordenador puede llevar a cabo largas, complejas y repetitivas secuencias de operaciones a velocidades muy altas. Estas operaciones son aplicadas a datos, que pueden ser suministrados por un Usuario, otro programa, Sensores, etc, es decir, algún dispositivo de entrada. Esto a su vez, procesar estos datos genera más datos y el ciclo se vuelve a repetir.
Vamos a dar una muy simple explicacion de los componentes, para tener una idea de como actúan durante la creación/ejecución de un programa:
Procesador: Es el que realiza la secuencia de operaciones especificada en el programa. La operaciones individuales provistas por el procesador son muy simples pero son ejecutadas a velocidades muy altas.
Memoria: La memoria es el espacio físico donde se almacenan las instrucciones de un programa y los datos a procesar. Podríamos decir que hay dos clases de memoria, la principal(primaria) y la auxiliar(secundaria). La memoria principal permite al procesador traer y almacenar datos e información, a una velocidad relativamente alta, de hecho, en cada instrucción hay un acceso de lectura y otro de escritura en esta memoria. La cantidad de memoria principal disponible para ejecutar un programa es limitada y solo se utiliza para almacenar el programa y los datos que estamos procesando en ese momento y no se usa para el almacenamiento permanente de programas/datos(SI es la memoria de acceso aleatorio, RAM).
La memoria auxiliar tiene mayor capacidad de almacenamiento, y los programas/datos se almacenan de forma permanente. Es muchísimo mas lenta que la memoria principal (en pocas palabras, dispositivos de almacenamiento).
Dispositivos de Entrada y Salida: Son aquella partes de la computadora que le permiten interactuar con el mundo real, para poder ingresar datos y también mostrarlos, por ejemplo, de entrada pueden ser un teclado, un scanner, un mouse, un sensor de movimiento. Y de Salida pueden ser: monitores, impresoras, plotters, etc.
Un ejemplo de como funciona esto:
- Escribo un programa que lee de un archivo una serie de números, saca un promedio, lo muestra en el monitor, y genera otro archivo con el resultado. a este programa lo denomino promedio y lo guardo en la memoria auxiliar(en este caso el disco rígido).
- Ejecuto el programa promedio,este se almacena en la memoria principal (RAM), y por medio de un dispositivo de entrada (teclado) le doy una serie de números que también se almacenan en la memoria RAM.
- el programa promedio lee los datos introducidos, los procesa, y muestra en el dispositivo de salida(monitor) el resultado de promediar dichos números.
-
A su vez, el programa promedio almacena en la memoria auxiliar(Disco Rígido), el resultado.
- El programa promedio finalizo, por lo tanto en la memoria principal la cantidad de memoria asignada a el ahora esta disponible para otros programas.
Dato – Proceso – Información
Vamos a hacer una pequeña discriminación entre dato e Información: datos es todo elemento ingresado que todavía no fue procesado. Del otro lado, información es el resultado de procesar los datos. Cabe aclarar que la información generada por un programa puede volver a ser datos del mismo u otro programa.
Creando un Programa
Ninguna computadora, por si sola, puede realizar tarea alguna. Para que una computadora pueda realizar alguna tarea, dicha tarea debe ser analizada por alguien que le indique a la computadora, que, cuando y como. La construcción de un programa no es algo simple, sino que requiere un análisis y un conocimiento claro y profundo del problema que se quiere resolver, así como el dominio de un lenguaje de programación que permita escribir las instrucciones que un ordenador pueda comprender.
Podríamos definir 3 pasos en la creación de un programa:
- Analizar el problema o tarea a automatizar, definir los datos requeridos, como procesarlos y finalmente que información va a devolver, Esta etapa es de análisis del problema o tarea, y no de programación.
- Luego de finalizada la etapa de análisis, procedemos a crear las secuencias de pasos a realizar, los Algoritmos, el ingreso de datos, el proceso, y finalmente la salida de información. Para realizar esta tarea podemos utilizar herramientas como Pseudo-Código y Diagramas de Flujo.
- Finalmente, debemos expresar ese algoritmo de una forma que una computadora lo pueda comprender y ejecutar, esto lo hacemos por medio de un lenguaje de programación.
Sin entrar en muchos detalles, cabe aclarar que si bien, aquí termina la tarea del programador. En la mayoría de los casos, la complejidad de la tarea y la capacidad limitada del humano al programar y sumado a errores de interpretación o de comunicación. Los programas deben ser revisados y luego corregidos, a este proceso se lo llama Depuración.
Objetivos de la Programación
Si bien hay varias maneras de resolver un mismo problema. Siempre debemos apuntar a los siguientes factores:
- Exactitud: El objetivo primordial de todo programa es cumplir con los requerimientos para el cual fue creado. Sin embargo, debido a la complejidad de los programas y muchas veces a errores en la etapa de Análisis. La clave para evitar estos problemas es la simplicidad. La complejidad en la programación de un programa no trae ningún beneficio. Generalmente, un problema complejo se puede atomizar en varios problemas pequeños y simples.
- Claridad: Si bien es difícil que alguien entienda en su totalidad en la primera lectura, debemos procurar que un programa no sea mas complejo de lo que es el problema real. Para lograr claridad, hay algunos principios basicos:
- Separar el código de forma lógica y ordenada. En un programa extenso es bueno ir acomodando en bloques cada parte del programa (por ejemplo).
- Elegir las herramientas apropiadas (dentro de las posibilidades del Lenguaje) para ser lo mas claro posible a la hora de expresar algo.
- Ser claro y seguir un orden a la hora de nombrar objetos, variables, etc (cada lenguaje tiene su conjunto de practicas para esto).
- Comentar siempre que sea necesario: para explicar que hace cierto bloque de código, y/o a forma de preámbulo de los bloques principales de código.
- Utilización de lineas blancas, sangrías, etc para aclarar las relaciones entre las lineas de código. (por ejemplo la Indentación).
- Eficiencia: Podríamos medir la eficiencia de un programa por dos factores:
- El tiempo que le toma al computador realizar la tarea deseada.
- La cantidad de memoria utilizada durante el proceso
Tanto la memoria como el tiempo disponible para realizar una tarea son finitos. Se debe procurar ser lo mas espartano posible a la hora de Utilizar estos recursos: evitar la rebundancia(siempre que sea posible, no siempre es así o a veces los mismos requerimientos por los cuales el programa nace puede requerir ciertas rebundancias). En el plano de optimizar el uso de memoria se puede recomendar evitar almacenar por mas tiempo del requerido ciertos datos y la cantidad de veces que el programa escribe en medios de almacenamientos.
ue puede llevar a cabo largas, complejas y repetitivas secuencias de operaciones a velocidades muy altas
hola

Como te decía, este post me lo guardo como referencia para mis alumnos.
Gracias Guty, igual falta más que voy a ir publicando en el corto plazo