0% encontró este documento útil (0 votos)
10 vistas

Introduccion a los Algoritmos

Cargado por

Diego Marcucci
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas

Introduccion a los Algoritmos

Cargado por

Diego Marcucci
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

Carrera: Redes y Telecomunicaciones Profesor: Ing.

Mirábile Marcelo
Asignatura: Programación

Introducción
Diariamente el ser humano trata de darle solución a cada problema que se le presenta, o de
mejorar las soluciones disponibles. Para algunos problemas fundamentales ha encontrado
soluciones brillantes que consisten en una serie de acciones, que siempre que se realicen de
manera ordenada y precisa conducen a la respuesta correcta. Algunas de esas soluciones
han requerido el trabajo, la creatividad, la inteligencia y la persistencia de muchas
generaciones. Hoy la sociedad cuenta con ese legado de soluciones, además de las
máquinas capaces de ejecutarlas precisa y velozmente. Esas máquinas maravillosas, son las
computadoras.

Si nos preguntamos ¿qué es la programación?, podríamos decir que es una disciplina que
requiere simultáneamente del uso de cierto grado de creatividad, un conjunto de
conocimientos técnicos asociados y la capacidad de operar constantemente con
abstracciones (tanto simbólicas como enteramente mentales). La creatividad necesaria para
programar no se diferencia demasiado de aquella utilizada para producir textos, por
ejemplo. Sin embargo, lo que hace a la programación algo especial es que requiere emplear
un conjunto de conocimientos técnicos asociados a la manipulación de las computadoras.
Esto agrega un grado notable de rigurosidad a esta actividad, ya que no podemos programar
sin tener en cuenta este aspecto. Por otra parte, al poseer una naturaleza ligada a la
resolución de diferentes problemas del mundo real, se requiere de una capacidad de
abstracción que permita operar sin que los conocimientos técnicos limiten al programador a
resolver adecuadamente dichos problemas

Algoritmos
Un algoritmo es la especificación rigurosa de una secuencia de pasos para alcanzar un
resultado deseado en un tiempo finito. En su acepción más general, el término algoritmo
puede aplicarse a casi cualquier actividad de la vida diaria, son algoritmos las recetas de
cocina, los programas de actos musicales, las instrucciones de uso de un equipo, etc.
En todos estos casos existen dos características vinculadas con el concepto de algoritmo,
por un lado se trata de tareas (batir un huevo, ejecutar una nota musical, etc.), y por el otro
hay un orden cronológico en el cual deben ser ejecutadas.
Si se examina una de estas tareas o instrucciones, se observa que su ejecución implica a su
vez la ejecución ordenada de otras tareas más elementales, por ejemplo para batir un huevo
se requiere tomar un recipiente, tomar un batidor, partir los huevos, colocarlos dentro del
recipiente, etc. A su vez, cada una de estas tareas puede describirse en función de otras más
elementales aún, y así sucesivamente.
Con este concepto, podemos decir que un algoritmo es un conjunto finito de algoritmos
para producir un proceso determinado, esto es lo que denominamos "definición recursiva".
Para que esta definición no conduzca a una sucesión infinita, sería necesario definir
aquellas instrucciones elementales que no pueden definirse como algoritmos.

Características de un algoritmo
Las características más importantes que debe poseer una secuencia de tareas para
considerarse algoritmo son: precisión, determinismo y finitud.

1
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

 Precisión: Hay un orden preciso en el cual deben ejecutarse las tareas que
conforman el algoritmo.
 Determinismo: Todas las veces que se realicen las tareas o pasos de un algoritmo,
con las mismas condiciones iniciales, se deben obtener resultados idénticos.
 Finitud: El algoritmo debe terminar en algún momento y debe usar una cantidad
finita de recursos.

Elementos básicos de un algoritmo


En esencia un algoritmo está constituido por los siguientes tres elementos:
 Datos: Es la información con la que se trabaja en el algoritmo (datos de entrada, de
salida o intermedios).
 Instrucciones: Las acciones o procesos que el algoritmo realiza sobre los datos.
 Estructuras de control: Las que determinan el orden en que se ejecutarán las
instrucciones del algoritmo.

Representación de Algoritmos
Cuando se quiere que un computador ejecute un algoritmo es indispensable, por lo menos
hasta hoy, representar ese algoritmo mediante algún formalismo. Las técnicas utilizadas
más comúnmente para la representación de algoritmos son:

 Diagramas de flujo
Se basan en la utilización de diversos símbolos geométricos para representar operaciones
específicas. Se les llama diagramas de flujo porque los símbolos utilizados se conectan por
medio de flechas para indicar la secuencia que sigue la ejecución de las operaciones.

2
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

 Pseudocódigo
Es un lenguaje de especificación de algoritmos. Tiene asociado un léxico (conjunto de
palabras), una sintaxis (reglas gramaticales) y una semántica precisa (significado), de
manera análoga a un lenguaje natural como el castellano. El uso de tal lenguaje hace
relativamente fácil el paso de codificación final del algoritmo (esto es, la traducción a un
lenguaje de programación).
La ventaja del pseudocódigo es que le permite al programador concentrarse en la lógica y
en las estructuras de control del algoritmo que quiere diseñar, sin preocuparse de las
reglas de un lenguaje específico de programación, que normalmente incluyen infinidad de
detalles. Es también fácil modificar el pseudocódigo si se descubren errores o anomalías en
la lógica del programa; además de lo anterior, es fácil su traducción a lenguajes de
programación como C, Java, Phyton, PHP.
El pseudocódigo describe un algoritmo utilizando una mezcla de frases en lenguaje común,
instrucciones de programación y palabras clave que definen las estructuras básicas. Su
objetivo es permitir que el programador se centre en los aspectos lógicos de la solución a un
problema.
El pseudocódigo utiliza palabras reservadas (similares a sus homónimos en los lenguajes de
programación) para representar las acciones y estructuras de control, tales como inicio, fin,
si entonces-sino, mientras, etc.

El formato general de un algoritmo expresado mediante pseudocódigo es el siguiente:

[<definición de registros o tipos de datos>]


[constantes <declaración constantes>]
[variables <declaración variables globales del programador>]
[<definición de funciones y procedimientos>]
procedimiento principal()
[constantes <declaración constantes>]
[variables <declaración variables>]
inicio
/*bloque de instrucciones*/
fin_procedimiento

3
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

Ejemplo:
ALGORITMO Mostrar;
VAR
ENTERO entrada;
INICIO
ESCRIBIR("Dame un número");
LEER( entrada );
ESCRIBIR( entrada );
FIN

Por ahora basta con saber que en las primeras secciones se definen las constantes y
variables que se usan dentro del algoritmo; posteriormente se especifican algunos
procedimientos y funciones; y finalmente, se escriben las instrucciones que conforman el
algoritmo principal.
También conviene mencionar que la información que se manipula dentro de un algoritmo
se agrupa en conjuntos llamados TIPOS. Hay unos tipos predefinidos en el pseudocódigo:
entero (conjunto de valores enteros), real (conjunto de valores reales), caracter (conjunto de
símbolos representables en el computador) y booleano (los dos valores lógicos: falso y
verdadero).
Más adelante veremos algunos en detalle todas las herramientas con las que contamos en
pseudocodigo para poder armar un programa.

Representación de la solución de un problema con ambas herramientas


Se desea realizar el algoritmo que resuelva el siguiente problema: Cálculo de los salarios
mensuales de los empleados de una empresa, sabiendo que éstos se calculan en base a las
horas semanales trabajadas y de acuerdo a un precio especificado por horas. Si se pasan
de cuarenta horas semanales, las horas extraordinarias se pagarán a razón de 1,5 veces la
hora ordinaria.
Los cálculos son:

1. Leer datos del archivo de la empresa, hasta que se encuentre la ficha final del
archivo (HORAS, PRECIO_HORA, NOMBRE).
2. Si HORAS <= 40, entonces SALARIO es el producto de horas por PRECIO_HORA.
3. Si HORAS > 40, entonces SALARIO es la suma

El diagrama de flujo completo del algoritmo y la codificación en pseudocódigo se indican a


continuación:

4
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

Problemas
Dada una breve introducción a lo que es un algoritmo, podemos llegar a la conclusión de
que un algoritmo tiene sentido cuando constituye una forma efectiva de resolver un
problema interesante. Se tiene un problema cuando se desea encontrar uno o varios objetos
desconocidos (ya sean estos números, símbolos, diagramas, figuras, u otras cosas), que
cumplen condiciones o relaciones, previamente definidas, respecto a uno o varios objetos
conocidos. De esta manera, solucionar un problema es encontrar los objetos desconocidos
de dicho problema.

Clasificación
Los problemas se clasifican, de acuerdo a la existencia de una solución, en solubles, no
solubles e indecidibles.
 Un problema se dice “SOLUBLE” si se sabe de antemano que existe una solución
para él.
 Un problema se dice “INSOLUBLE” si se sabe que no existe una solución para él.
 Un problema se dice “INDECIDIBLE” si no se sabe si existe o no existe solución
algorítmica para él.
Dentro de lo problemas “SOLUBLES” se los puede clasificar como “Algorítmicos” (son
aquellos que se pueden resolver mediante un algoritmo) y los “No Algorítmicos”.

5
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

Ejemplos de algoritmos
Ejemplo 1: Realizar la suma de dos números enteros positivos.
Solución
Inicio
PASO 1. En una hoja de papel, escribir los números el primero arriba del
segundo, de tal manera que las unidades, decenas, centenas, etc., de
los números queden alineadas. Trazar una línea debajo del segundo
número.
PASO 2. Empezar por la columna más a la derecha.
PASO 3. Sumar los dígitos de dicha columna.
PASO 4. Si la suma es mayor a 9 anotar el número que corresponde a
las decenas encima de la siguiente columna a la izquierda y anotar
debajo de la línea las unidades de la suma. Si no es mayor anotar la
suma debajo de la línea.
PASO 5. Si hay más columnas a la izquierda, pasar a la siguiente
columna a la izquierda y volver a 3.
PASO 6. El número debajo de la línea es la solución.
Fin

Ejemplo 2: Detalle los pasos para cambiar el foco de la cocina


Inicio
PASO 1: Quitar el foco dañado del techo de la cocina
PASO 2: Ir al cajón donde tenemos focos de repuestos y retirar uno
PASO 3: Colocar un foco en el lugar del foco dañado
PASO 4: Verificar el funcionamiento del nuevo foco
PASO 5: Si no funciona volver al paso 3
Finalizar
Ejemplo 3: Un estudiante se encuentra en su casa (durmiendo) y debe ir al colegio, ¿qué debe
hacer?

Solución
Inicio
PASO 1. Dormir
PASO 2. Hacer 1 hasta que suene el despertador (o lo despierte alguien).
PASO 3. Mirar la hora.
PASO 4. ¿Hay tiempo suficiente?
PASO 4.1. Si hay, entonces
PASO 4.1.1. Bañarse.
PASO 4.1.2. Vestirse.
PASO 4.1.3. Desayunar.
PASO 4.2. Sino,
PASO 4.2.1. Vestirse.
PASO 5. Cepillarse los dientes.

6
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

PASO 6. Despedirse de la mamá y el papá.


PASO 7. ¿Hay tiempo suficiente?
PASO 7.1. Si hay, entonces
PASO 7.1.1. Caminar a la parada de colectivo.
PASO 7.2. Sino, Correr a la parada de colectivo.
PASO 8. Hasta que pase un colectivo para la universidad hacer lo
siguiente:
PASO 8.1. Esperar el colectivo
PASO 8.2. Ver a las demás personas que esperan un colectivo.
PASO 8.3. Leer y responder mensajes de Whatsapp.
PASO 9. Tomar el colectivo.
PASO 10. Mientras no llegue a la universidad hacer lo siguiente:
PASO 10.1. Seguir en el colectivo.
PASO 10.2. Pelear mentalmente con el conductor.
PASO 10.3. Leer y responder mensajes de Whatsapp.
PASO 11. Tocar el timbre.
PASO 12. Bajarse.
PASO 13. Entrar a la universidad.
Fin

Ejercicios:
 Encuentre una secuencia de acciones necesarias para resolver el problema de
cambiar una rueda de su auto por su auxilio.
 Supóngase que usted se encuentra de vacaciones en una ciudad totalmente
desconocida para usted y desea conocer uno de los tantos lugares turísticos que
tiene dicha ciudad. Establezca una secuencia de acciones que resolverían su
problema de ir desde su hotel hasta dicho lugar en forma particular.

Programas
El computador es una herramienta para la resolución de problemas, más potente será cuanto
mayor sea su capacidad de modelar soluciones adecuadas para cada problema.
Llamamos programación a la tarea de construir programas que efectúen el
procesamiento de la información que nos proponemos, resolviendo así los problemas
planteados.
Cuando el código consiste mayormente de palabras y nociones que son más sencillas para
que manejen los humanos, con el objetivo de que puedan entender y construir los
programas, hablamos de un lenguaje de alto nivel, y al código resultante lo llamamos
código fuente del programa. Cuando el código consiste mayormente de números y símbolos
de difícil comprensión para los humanos, pero de rápida interpretación para su ejecución
por una máquina, hablamos de un lenguaje de bajo nivel, y al código resultante lo llamamos
código objeto o código ejecutable.
Un esquema de procesamiento de la información puede describirse como sigue:

7
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

a) Análisis del Problema, dando como resultado un modelo preciso del ambiente del
problema.
b) Diseño de una solución. Teniendo en cuenta los datos de entrada y de salida.
c) Especificación de algoritmos. Es decir, cuál es la secuencia lógica de instrucciones
que el computador debe ejecutar para producir los datos de salida a partir de los
datos de entrada, teniendo en cuenta que una transformación sobre los mismos datos
puede resolverse con una utilización de recursos diferentes.
d) Escritura de programas. El algoritmo debe expresarse en un lenguaje de
programación concreto y acorde a las características del problema, que la maquina
pueda interpretar y ejecutar.
e) Verificar. Una vez escrito el programa en un lenguaje determinado se debe verificar
que su ejecución conduce al resultado deseado con datos representativos del
problema real.

Caracteristicas de un “buen programa”


Un buen programa debería cumplir por lo menos con las siguientes características:

 EFICAZ: Que satisfaga las necesidades para las cuales fue creado, en otras palabras,
que dadas las entradas produzca los resultados requeridos.
 EFICIENTE: Que consuma la menor cantidad de recursos (CPU, memoria, Sistema
Operativo, etc.).
 LEGIBLE: Que su diseño sea simple, estructurado, ordenado, autodocumentado.
 FLEXIBLE: Fácil de adaptar a nuevos requerimientos.
 AMISTOSO: Mensajes claves, fácil de usar, presentación agradable.

Etapas de una correcta Programación


Las siguientes son etapas que deben cumplirse a los efectos de resolver un problema
mediante un programa informático:

Definición del problema.


Se debe partir de un enunciado de problema claro y completo.

Análisis del problema


A partir de comprender claramente cual es el problema, se procede a analizar alternativas
de solución, como ser:
• Resultados que se esperan.
• Datos de entrada que se brindan.
• Posibles métodos a utilizar para obtener la salida deseada.

Construcción de un algoritmo
Por medio de un lenguaje de especificación (puede ser gráfico o un pseudocódigo) se
procede a construir un algoritmo que resuelva el problema en estudio. En esta etapa, una
vez construido el algoritmo, se sugiere que el diseñador realice una prueba de escritorio
(someter el algoritmo a diversas ejecuciones, variando los datos de entrada y verificar su
funcionamiento) a los efectos de determinar si el método elegido funciona correctamente.

8
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

Codificación
Utilizando un lenguaje de computadora se traduce el algoritmo a un programa fuente que
una máquina sea capaz de entender y ejecutar. Se recomienda que el técnico que realice
esta tarea -el programador- inserte comentarios junto a las líneas de código a los efectos de
facilitar la lectura del programa (documentación interna) en instancias superiores de
validación o mantenimiento.

Compilación
Si el lenguaje utilizado en el proceso de codificación requiere de una traducción a lenguaje
de máquina se utiliza un programa compilador a los efectos de generar un programa objeto.
Es importante destacar que una de las funciones de todo compilador es el análisis sintáctico
del programa fuente a los efectos de detectar errores de sintaxis ocasionados por errores de
codificación. El compilador no analiza semántica, es decir que las fallas de lógica que
pueda existir en el programa fuente no son detectadas por el compilador.

Prueba
Se ejecutar el programa con distintos juegos de datos de entrada y se corrigen los errores
que se puedan presentar. Al final se obtiene un programa depurado.

Documentación
Etapa final en la cual se realiza la documentación externa en la cual se explica lo que el
programa hace y cuáles son los datos de entrada y salida. Parte de esta documentación es
requerida por usuarios y por programadores encargados del mantenimiento del software.

Los paradigmas de programación


Un paradigma de programación es un conjunto de ideas y conceptos vinculados a la
forma en que se relacionan las nociones necesarias para solucionar problemas con el uso
de un lenguaje de programación.

Otra definición acertada es que: un paradigma de programación es un estilo de desarrollo


de programas. Es decir, un modelo para resolver problemas computacionales. Los
lenguajes de programación, necesariamente, se encuadran en uno o varios paradigmas a la
vez a partir del tipo de órdenes que permiten implementar, algo que tiene una relación
directa con su sintaxis.
Se pueden identificar cuatro grandes paradigmas:

 el paradigma imperativo
 el paradigma orientado a objetos
 el paradigma funcional
 el paradigma lógico

Los dos primeros están más orientados a la forma de manejar estado y podrían ser
denominados procedurales, mientras que los dos últimos están más orientados a expresar
conceptos o nociones independientes del estado, y podrían ser denominados declarativos.
El paradigma que se desarrolló con mayor ímpetu al principio fue el imperativo, debido a
su cercanía con los lenguajes de bajo nivel. Los otros tardaron más tiempo en adoptar un

9
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

estado de madurez, y no fue hasta mediados de la década de 1980 que tanto el paradigma
funcional como el lógico y el orientado a objetos empezaron a ser foco de atención masiva.

Técnicas de Programación
El programar con diagramas de flujo resulta muy difícil en el momento en que el
programa se complica, por ello es recomendable utilizar alguna otra herramienta para
programar como por ejemplo un lenguaje de programación y para eso es necesario tener en
cuenta algunas técnicas que nos serán muy útiles a la hora de comprender mejor el mundo
del desarrollo.

Estas técnicas son:

 Programación modular: Consiste en dividir el programa en partes llamadas


módulos, e implementar cada uno de esos módulos por separado.
 Programación estructurada: Cuyo objetivo es hacer más legible y lógico la
estructura del programa utilizando para ello solamente tres tipos de estructuras:
selectivas, secuenciales (condicionales) y repetitivas.
 Programación Orientada a Objetos: La programación orientada a objetos expresa
un programa como un conjunto de estos objetos, que se comunican entre ellos para
realizar tareas.

 Programa Modular
Se basa en dividir el programa en partes llamadas módulos, que se analizan y
codifican de forma independiente y que realizan una determinada tarea que será en realidad
una parte del problema total a resolver.
En todo algoritmo o programa existirá un módulo o programa principal que es al
que transfiere el control cuando comienza la ejecución del programa, y luego desde él, se
va llamando al resto de los subprogramas.
Llamar a un subprograma quiere decir transferirle el control, es decir que se
comienza a ejecutar y lo hará desde el comienzo del subprograma hasta que se termine y al
terminar devuelve el control al subprograma que lo llamó. Dentro del subprograma a su vez
también puedo llamar a otros pero en cualquier caso al final se devuelve el control al
módulo que hace la llamada. El control al programa llamado se devuelve a la instrucción
siguiente a la que se hizo la llamada.
Un módulo solo tiene acceso a los módulos a los que llama y a los submódulos a los
que a su vez llaman éstos. Los resultados producidos por un módulo pueden ser utilizados
por otros.
No existe un criterio fijo para determinar el tamaño, ni muy grandes ni muy
pequeños, la idea fundamental es que realicen una única cosa y muy concreta.
Los módulos o subprogramas reciben diferentes nombres según el lenguaje de
programación y según su tipo. Se las suele llamar procedimientos, funciones, subrutinas,
secciones, dependiendo el lenguaje que se utilice.

10
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

 Programación Estructurada
La característica fundamental es que se va a basar en el uso únicamente de tres
estructuras de control. Para ello se apoya en las siguientes filosofías:
1. Recursos abstractos: Son los recursos con los que no contamos a la hora de
programar, pero en los que nos apoyamos a la hora de solucionarlos. Estos
recursos se tienen que ir transformando en recursos concretos.
2. Diseño descendente (top down): Se trata de ir descomponiendo el problema en
niveles o pasos cada vez más sencillos, tal que la salida de una etapa va a servir
como entrada de la siguiente. En las primeras etapas tomamos el punto de vista
externo, es decir, que entradas hay y que salidas hay, y a medida que vamos
bajando de nivel, lo vamos viendo de modo interno (como lo hace por dentro).
3. Estructuras básicas de control: Para hacer cualquier programa siguiendo los
anteriores pasos de razonamiento, al final codificamos el programa usando tres
tipos de secuencias (repetitivas, alternativas y secuenciales).

Al final todo programa va a tener una única entrada y una única salida. Desde la
entrada tienen que existir caminos que nos permiten pasar por todas las partes del programa
y llevarnos a la salida, y finalmente no se van a permitir los bucles infinitos.
Una característica importante en un programa estructurado es que puede ser leído en
secuencia, desde el comienzo hasta el final sin perder la continuidad de la tarea que cumple
el programa, lo contrario de lo que ocurre con otros estilos de programación. Esto es
importante debido a que, es mucho más fácil comprender completamente el trabajo que
realiza una función determinada, si todas las instrucciones que influyen en su acción están
físicamente contiguas y encerradas por un bloque.

11
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

 Programación Orientada a Objetos


Es una metodología de diseño de software y un paradigma de programación que
define los programas en términos de “clases de objetos”, objetos que son entidades que
combinan estado (es decir, datos) y comportamiento (esto es, procedimientos o métodos).
Se trata de una técnica que aumenta considerablemente la velocidad de desarrollo de
los programas gracias a la reutilización de los objetos.

12
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

¿Que son los lenguajes de programación?

Cuando programamos, no podemos utilizar el lenguaje natural con que nos


comunicamos cotidianamente los seres humanos. Por el contrario, los programadores
emplean un lenguaje que la computadora puede interpretar para realizar tareas. En otras
palabras, un lenguaje de programación.

Un lenguaje de programación es una serie de reglas que establecen qué


descripciones serán aceptadas y ejecutadas y cuáles no tienen sentido para el mecanismo
de ejecución provisto por la computadora. Además, estas reglas están diseñadas de manera
composicional, para que sea sencillo construir programas de mayor envergadura.

Existen muchos y variados lenguajes de programación, de características


sumamente diferentes y que emplean diferentes enfoques con los que podemos programar.
Cada lenguaje comprende un conjunto de ideas que guían, como su propósito final, la
forma en que codificamos la descripción que otorgaremos a la máquina. En todo momento
el lenguaje de programación permite especificar de manera precisa el trabajo que el
programador espera que la computadora realice.
A su vez, algunos lenguajes de programación están pensados para volcar mejor las
ideas abstractas que el programador intenta emplear. Estos se conocen como lenguajes de
alto nivel, ya que intentan, con cierto grado de eficacia, soslayar aquellas tareas que la
computadora requiere realizar para que el programa cumpla con sus objetos. Pero existen
también lenguajes de bajo nivel, que nos hacen definir en mayor o menor medida cada paso
que el programa seguirá, y por ende, están ligados a la naturaleza operacional de la
máquina.

Compilacion o Interpretacion
Para que un programa escrito en algún lenguaje de alto nivel pueda ser “reconocido”
(ejecutado) por una maquina debe traducirlo al lenguaje que ella conoce: lenguaje de
máquina. He aquí donde se introduce un nuevo concepto y proceso: compilación o
interpretación. Los compiladores traducen el programa completo a lenguaje maquina
antes de ejecutar cualquiera de las instrucciones, mientras que los interpretes recorren el
programa tomando cada instrucción (o bloques de ellas) la traducen y la ejecutan. Este
proceso se realiza automáticamente y generalmente pasa desapercibido ante los ojos del
programador.
El programa original escrito en el lenguaje de alto nivel se denomina fuente
mientras que el compilado (o interpretado) se denomina objeto (en lenguaje maquina).
Desde mi punto de vista el programador no debería preocuparse demasiado si un
lenguaje es compilado o interpretado, solo debe concentrarse en solucionar el problema que
tanto lo aqueja; pero sí debe saber que para que la maquina “entienda” lo que él quiere
hacer y/o decir, existe un proceso que traduce a un lenguaje que la maquina entiende.

13
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

 Interprete

 Compilador

Que es la depuracion (debugging)?


La programación es un proceso complejo y, por ser realizado por humanos, a
menudo desemboca en errores. Esos errores se llaman bugs y el proceso de buscarlos y
corregirlos se llama depuración (en inglés “debugging”).
Hay tres tipos de errores que pueden ocurrir en un programa, de sintaxis, en tiempo
de ejecución y semánticos. Es muy útil distinguirlos para encontrarlos más rápido.

 Errores sintácticos
En cualquier lenguaje solo puede ejecutar un programa si el programa es correcto
sintácticamente.
En caso contrario, es decir si el programa no es correcto sintácticamente, el proceso
falla y devuelve un mensaje de error. El termino sintaxis se refiere a la estructura de
cualquier programa y a las reglas de esa estructura. Por ejemplo, en español la primera
letra de toda oración debe ser mayúscula, y todas las oraciones deben terminar con un
punto. esta oración tiene un error sintactico.

esta oración también

Durante las primeras semanas de su carrera como programador pasara, seguramente,


mucho tiempo buscando errores sintácticos. Sin embargo, tal como adquiera experiencia
tendrá menos errores y los encontrara más rápido.

 Errores en tiempo de ejecución


El segundo tipo de error es un error en tiempo de ejecución. Este error no aparece
hasta que se ejecuta el programa. Estos errores también se llaman excepciones porque
indican que algo excepcional (y malo) ha ocurrido.
Con los programas que vamos a escribir al principio, los errores en tiempo de
ejecución ocurrirán con poca frecuencia, así que puede pasar bastante tiempo hasta que vea
uno.

14
Carrera: Redes y Telecomunicaciones Profesor: Ing. Mirábile Marcelo
Asignatura: Programación

Este tipo de errores suelen ser aquellos que según la lógica del problema que
estamos resolviendo, y de la codificación desarrollada, permite que sucedan situaciones
erróneas, por ejemplo: división por cero, se esperan parámetros que en alguna situación en
particular no existen, etc,etc.

 Errores semánticos
El tercer tipo de error es el error semántico. Si hay un error de lógica en su
programa, el programa se ejecutara sin ningún mensaje de error, pero el resultado no será el
deseado. Sera cualquier otra cosa. Concretamente, el programa hará lo que usted le dijo.
A veces ocurre que el programa escrito no es el programa que se tenía en mente.
El sentido o significado del programa (su semántica) no es correcto. Es difícil hallar
errores de lógica, porque requiere trabajar al revés, observando el resultado del programa
para averiguar lo que hace.

 Depuración experimental
Una de las técnicas más importantes que usted aprenderá es la depuración. Aunque
a veces es frustrante, la depuración es una de las partes más intelectualmente ricas,
interesantes y estimulantes de la programación.
La depuración es una actividad parecida a la tarea de un investigador: se tienen que
estudiar las claves para inducir los procesos y eventos que llevaron a los resultados que
tiene a la vista.
La depuración también es una ciencia experimental. Una vez que se tiene la idea de
cuál es el error, se modifica el programa y se intenta nuevamente. Si su hipótesis fue la
correcta se pueden predecir los resultados de la modificación y estará más cerca de un
programa correcto. Si su hipótesis fue errónea tendrá que idearse otra hipótesis.

15

También podría gustarte