El propósito de este bloc es que introduce al lector en los conceptos iniciales sobre Algoritmos. Aquellos lectores que nunca han programado encontraran aquí los conocimientos básicos para hacerlo. Basado en el libro "Algoritmos a fondo" por el Ing.Pablo Augusto Szanajdlerder
lunes, 1 de octubre de 2018
Concepto de Programacion
Programación es la acción y efecto de programar. Este verbo tiene varios usos: se refiere a idear y ordenar las acciones que se realizarán en el marco de un proyecto; al anuncio de las partes que componen un acto o espectáculo; a la preparación de máquinas para que cumplan con una cierta tarea en un momento determinado; a la elaboración de programas para la resolución de problemas mediante ordenadores; y a la preparación de los datos necesarios para obtener una solución de un problema a través de una calculadora electrónica, por ejemplo.
Lenguajes de programación
Es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.
Está formado de un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.
También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:
- El desarrollo lógico del programa para resolver un problema en particular.
- Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa)
- Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
- Prueba y depuración del programa.
- Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo el HTML. (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación sino un conjunto de instrucciones que permiten diseñar el contenido y el texto de los documentos)
Permite especificar de manera precisa sobre qué datos debe operar una computadora, cómo deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador pueda usar un conjunto común de instrucciones que sean comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.
Codificación de un algoritmo
Una vez que los algoritmos de una aplicación han sido diseñados, ya se puede iniciar la fase de codificación. En esta etapa se tienen que traducir dichos algoritmos a un lenguaje de programación específico; es decir, las acciones definidas en los algoritmos hay que convertirlas a instrucciones.
Para codificar un algoritmo hay que conocer la sintaxis del lenguaje al que se va a traducir. Sin embargo, independientemente del lenguaje de programación en que esté escrito un programa, será su algoritmo el que determine su lógica.
La lógica de un programa establece cuales son sus acciones y en qué orden se deben ejecutar. Por tanto, es conveniente que todo programador aprenda a diseñar algoritmos antes de pasar a la fase de codificación.
Para codificar un algoritmo hay que conocer la sintaxis del lenguaje al que se va a traducir. Sin embargo, independientemente del lenguaje de programación en que esté escrito un programa, será su algoritmo el que determine su lógica.
La lógica de un programa establece cuales son sus acciones y en qué orden se deben ejecutar. Por tanto, es conveniente que todo programador aprenda a diseñar algoritmos antes de pasar a la fase de codificación.
Pseudocódigo
Se basa en un lenguaje de programación real, donde se permite expresar las instrucciones en un lenguaje común (ejemplo: español, inglés u otro idioma) para facilitar la escritura y lectura, debido a que está en lenguaje común si requiere una modificación es fácil hacerla. La escritura sólo puede ser comprendida por el ser humano y no por la máquina, por ende, tampoco puede ejecutarla. La finalidad de un pseudocódigo es representar la solución a un algoritmo (problema) de la forma más detallada posible, utilizando acciones sucesivas. Según Analía Lanzillotta:“Considerado como un lenguaje falso el pseudocódigo, que es un lenguaje intermedio entre nuestro lenguaje y el de programación, debido a que quien lo utiliza se guía por una serie de normas, pero sin llegar a usar una estructura tan rígida como la del lenguaje de programación”.
En otras palabras, el pseudocódigo es un lenguaje simplificado entre el programador y la máquina, hecho por el programador en su propio idioma, para describir un algoritmo y poder comprender mejor la estructura de dicho programa, donde el lenguaje simplificado no puede ser compilado, ejecutado ni corrido por la máquina. Siendo una herramienta que se encuentra previa al lenguaje formal de programación.
biografia:
http://michelletorres.mx/que-es-el-pseudocodigo/
CONCEPTO DE ALGORITMO
Definición de algoritmo y problema
Llamamos "algoritmo" al conjunto finito y ordenado de acciones con la que podemos resolver un determinado problema.
Llamamos "problema" a un situación que se nos presenta y que , mediante la aplicación de un algoritmo, pretendemos resolver
Los algoritmos están presentes en nuestra vida cotidiana y, aun sin saberlo, aplicamos algoritmos cada vez que se nos presenta un problema sin importar cual sea su grado de complejidad
Para ejemplificar esto imaginemos que estamos dando un paseo por la ciudad y que , al llegar a un esquina, tenemos que cruzar la calle. Intuitivamente, aplicaremos el siguiente algoritmo:
- Esperar a que la luz del semáforo peatonal este en verde (esperarSemaforo);
- Cruzar la calle (cruzarCalle );
La acción de esperarSemaforo implica:
- Observar la luz del semáforo (observarLuz);
- Si la luz está en "rojo" o en "verde intermitente" entonces
-ir a: observarLuz;
Por otro lado, la acción cruzarCalle implica:
- Bajar la calzada (bajarCalzada);
- Avanzar un paso (avanzarPaso);
- Si la distancia hacia la otra calzada es mayor que la distancia que podemos avanzar dando un nuevo paso entonces
Subir la calzada de la vereda de enfrente (subirCalzada);
Como vemos, cada acción puede descomponerse en acciones mas puntuales y especificas. Por lo tanto, cada una de las acciones del algoritmo se resuelve con su propio algoritmo o secuencia finita y ordenada de acciones.
Cuando una acción se descompone de acciones mas puntuales y especificas decimos que es un "modulo".
Podemos seguir profundizando cada acción tanto como queramos. Por ejemplo, analicemos la acción (o el modulo) bajarCalzada: esta acción se resuelve:
- levanto un pie,
- adelantándolo,
- inclinando el cuerpo hacia adelante,
- y poyando el pie en la calle, luego levanto el otro pie,
- adelantándolo y ,
- apoyándolo en la calle.
Análisis del enunciado de un problema
Resulta evidente que, si vamos a diseñar un algoritmo para resolver un determinado problema, tenemos que tener totalmente estudiado y analizado el contexto de dicho problema. Esto implica:
- Comprender el alcance.
- Identificar los datos de entrada
- Identificar los datos de salida o resultados
Análisis del problema
Repasemos el contexto del problema de "cruzar la calle" que formulamos mas arriba:
Caminando por la ciudad llegamos a una esquina y pretendemos cruzar la calle. Para poder cruzar con la mayor seguridad posible, tenemos que esperar que el semáforo habilite el paso peatonal.Hasta que esto ocurra nos encontraremos detenidos al lado del semáforo y una vez que esto lo permita avanzaremos, paso a paso, hasta llegar a la vereda de enfrente. Se considera que el semáforo habilita el paso peatonal cuando emite una luz "verde fija". En cambio si el semáforo emite una luz "roja" o "verde intermitente" se recomienda esperar
Datos de entrada
En este contexto podemos identificar los siguientes datos de entrada:
- Nuestra posición inicial, posición en donde nos detuvimos a esperar a que el semáforo habilite el paso peatonal.La llamaremos posInicial.
- Luz del semáforo, el color de la luz que el semáforo está emitiendo. Lo llamaremos luz.
- Distancia de avance de paso, que distancia avanzamos cada vez que damos un nuevo paso. La llamaremos distPaso.
- Posición de la vereda de enfrente. La llamaremos posFinal ya que es allí hacia donde nos dirigimos
Datos de salida
Si bien en este problema no se identifica datos de salida resulta evidente que luego de ejecutar la secuencia de acciones del algoritmo nuestra posición actual deberá de ser la misma de la posición de la vereda de enfrente. Es decir, si llamamos p a nuestra posición actual resultara que su valor al inicio del algoritmo sera posInicial y al final del mismo deberá ser posFinal.
biografia: "Algoritmos a fondo-Ing. Pablo A. Sznajdleder
Suscribirse a:
Entradas (Atom)