Anda di halaman 1dari 17

Instituto tecnolgico de piedras

negras

Materia: fundamentos de programacin


Karla Alejandra Mercado Escamilla


ING. Sistemas Computacionales

Unidad 1. Conceptos bsicos

Unidad 2. Algoritmo



Unidad 1. Conceptos bsicos
1.1 Clasificacin del software de sistemas de aplicacin
1.2 Algoritmo
1.3 Lenguaje de programacin
1.4 Programa
1.5 Programacin
1.6 Paradigmas de programacin
1.7 Editores de texto
1.8 Compiladores e interpretes
1.9 Ejecutables
1.10 Consola de lnea de comandos

Unidad 2. Algoritmo
2.1 Anlisis de problemas
2.2 Representacin de algoritmos, grfica y seudocdigo
2.3 Diseo de algoritmos aplicados a problemas
2.4 Diseo de algoritmos de funciones



1.1 clasificacin del software de sistemas y
aplicacin.
El software es la parte lgica de computadora, que permite el manejo de
los recursos y la realizacin de tareas especficas, tambin denominados
programas.
Se clasifica en 2 partes:
1. SOFTWARE DE SISTEMAS
2. SOFWARE DE APLICACIN

1. SOFTWARE DE SISTEMAS: Son aquellos programas que permiten la
administracin de la parte fsica o los recursos de la computadora, es la
que interacta entre el usuario y los componentes hardware del
ordenador. Se clasifican el Sistemas Operativos Mono usuarios y
Multiusuario.

2. SOFTWARE DE APLICACION: Son aquellos programas que nos ayudan
atareas especficas como edicin de textos, imgenes, clculos, etc.
tambin conocidos como aplicaciones.


Software de Sistema Coleccin de programas residentes en la
computadora, este tipo de software resulta pieza esencial para el uso de la
computadora y el desarrollo de ms software, una definicin ms que
podemos dar es que es una de las partes que permite el funcionamiento de
la computadora, el objetivo del software de sistemas aislar tanto como sea
posible al programador de aplicaciones de los detalles del computador
particular que se use, especialmente de las caractersticas fsicas dela
memoria, impresoras, pantallas, teclados etc. El software de sistema son
los programas bsicos el cual controla a la computadora, tambin llamado
sistema operativo el cual tiene tres grandes funciones: coordina y
manipula el hardware del ordenador, como la memoria, las unidades de
disco; organiza los archivos en diversos dispositivos de almacenamiento y
gestiona los errores de hardware y del mismo software.

1.2 Algoritmo
En matemticas, lgica, ciencias de la computacin y disciplinas
relacionadas, un algoritmo (del griego y latn, dixit algorithmus y este a su
vez del matemtico persa Al-Juarismi
1
) es un conjunto preescrito de
instrucciones o reglas bien definidas, ordenadas y finitas que permite
realizar una actividad mediante pasos sucesivos que no generen dudas a
quien deba realizar dicha actividad.
2
Dados un estado inicial y una entrada,
siguiendo los pasos sucesivos se llega a un estado final y se obtiene una
solucin. Los algoritmos son el objeto de estudio de la algoritmia.
1

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver
problemas. Algunos ejemplos son los manuales de usuario, que muestran
algoritmos para usar un aparato, o las instrucciones que recibe un
trabajador por parte de su patrn. Algunos ejemplos en matemtica son
el algoritmo de multiplicacin, para calcular el producto, el algoritmo de
la divisin para calcular el cociente de dos nmeros, el algoritmo de
Euclides para obtener el mximo comn divisor de dos enteros positivos, o
el mtodo de Gauss para resolver un sistema lineal de ecuaciones.

1.2 Lenguaje de programacin
Un lenguaje de programacin es un lenguaje formal diseado para
expresar procesos que pueden ser llevados a cabo por mquinas como las
computadoras.
Pueden usarse para crear programas que controlen el comportamiento
fsico y lgico de una mquina, para expresar algoritmos con precisin, o
como modo de comunicacin humana.
1

Est formado por un conjunto de smbolos y
reglas sintcticas y semnticas 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 (de ser necesario) y se mantiene el cdigo
fuente de un programa se le llama programacin.
Tambin la palabra programacin se define como el proceso de creacin
de un programa de computadora, mediante la aplicacin de
procedimientos lgicos, a travs de los siguientes pasos:
El desarrollo lgico del programa para resolver un problema en
particular.
Escritura de la lgica del programa empleando un lenguaje de
programacin especfico (codificacin del programa).
Ensamblaje o compilacin del programa hasta convertirlo en lenguaje
de mquina.
Prueba y depuracin del programa.
Desarrollo de la documentacin.
Existe un error comn que trata por sinnimos los trminos 'lenguaje de
programacin' y 'lenguaje informtico'. Los lenguajes informticos
engloban a los lenguajes de programacin y a otros ms, como por
ejemplo HTML (lenguaje para el marcado de pginas web que no es
propiamente un lenguaje de programacin, sino un conjunto de
instrucciones que permiten disear el contenido de los documentos).
Permite especificar de manera precisa sobre qu datos debe operar una
computadora, cmo deben ser almacenados o transmitidos y qu acciones
debe tomar bajo una variada gama de circunstancias. Todo esto, a travs
de un lenguaje que intenta estar relativamente prximo al lenguaje
humano o natural. Una caracterstica relevante de los lenguajes de
programacin es precisamente que ms de un programador pueda usar un
conjunto comn de instrucciones que sean comprendidas entre ellos para
realizar la construccin de un programa de forma colaborativa.

1.3 Programa
Un programa informtico es un conjunto de instrucciones que una vez
ejecutadas realizarn una o varias tareas en una computadora. Sin
programas, estas mquinas no pueden funcionar.
1

2
Al conjunto general de
programas, se le denomina software, que ms genricamente se refiere al
equipamiento lgico o soporte lgico de una computadora digital.
En informtica, se los denomina comnmente binarios, (propio en
sistemas Unix, donde debido a la estructura deeste ltimo, los ficheros no
necesitan hacer uso de extensiones; posteriormente, los presentaron
como ficheros ejecutables, con extensin .exe, en los sistemas
operativos de la familia Windows) debido a que una vez que han pasado
por el proceso de compilacin y han sido creados, las instrucciones que se
escribieron en un determinado lenguaje de programacin, han sido
traducidas al nico idioma que la mquina comprende,
combinaciones llamado cdigo mquina. El mismo trmino, puede
referirse tanto a un programa ejecutable, como a su cdigo fuente, el cual
es transformado en un binario una vez que es compilado.
Generalmente el cdigo fuente lo escriben profesionales conocidos
como programadores. Este cdigo se escribe en un lenguaje que sigue uno
de los siguientes dos paradigmas: imperativo o declarativo, y que
posteriormente puede ser convertido en una imagen ejecutable a travs
de un programa-compilador. Cuando se pide que el programa sea
ejecutado, el procesador ejecuta instruccin por instruccin.
De acuerdo a sus funciones, los programas informticos se clasifican
en software de sistema y software de aplicacin. En los computadores
actuales, al hecho de ejecutar varios programas de forma simultnea y
eficiente, se le conoce como multitarea.

1.4 programacin
La programacin es el proceso de disear, codificar, depurar y mantener
el cdigo fuente de programas computacionales. El cdigo fuente es
escrito en un lenguaje de programacin. El propsito de la programacin
es crear programas que exhiban un comportamiento deseado. El proceso
de escribir cdigo requiere frecuentemente conocimientos en varias reas
distintas, adems del dominio del lenguaje a utilizar, algoritmos
especializados y lgica formal. Programar no involucra necesariamente
otras tareas tales como el anlisis y diseo de la aplicacin (pero s el
diseo del cdigo), aunque s suelen estar fusionadas en el desarrollo de
pequeas aplicaciones.

1.5 paradigmas de programacin.
Un paradigma de programacin es una propuesta tecnolgica que es
adoptada por una comunidad de programadores cuyo ncleo central es
incuestionable en cuanto a que unicamente trata de resolver uno o varios
problemas claramente delimitados. Es un estilo de programacin
empleado. La resolucin de estos problemas debe suponer
consecuentemente un avance significativo en al menos un parmetro que
afecte a la ingeniera de software. Tiene una estrecha relacin con la
formalizacin de determinados lenguajes en su momento de definicin. Un
paradigma de programacin est delimitado en el tiempo en cuanto a
aceptacin y uso ya que nuevos paradigmas aportan nuevas o mejores
soluciones que la sustituyen parcial o totalmente.
El paradigma de programacin que actualmente es el ms usado es la
orientacin a objetos. El ncleo central de este paradigma es la unin de
datos y procesamiento en una entidad llamada "objeto", relacionable a su
vez con otras entidades "objeto".
Tradicionalmente datos y procesamiento se han separado en reas
diferente del diseo y la implementacin de software. Esto provoc que
grandes desarrollos tuvieran problemas de fiabilidad, mantenimiento,
adaptacin a los cambios y escalabilidad. Con la orientacin a objetos y
caractersticas como el encapsulado, polimorfismo o la herencia se
permiti un avance significativo en el desarrollo de software a cualquier
escala de produccin.
La orientacin a objeto parece estar ligada en sus orgenes con lenguajes
como Lisp y Simula aunque el primero que acu el ttulo de programacin
orientada a objetos fue Smalltalk
Los ms comunes son:
Imperativo o por procedimientos: es considerado el ms comn y est
representado, por ejemplo, por C, BASIC o Pascal
Funcional: est representado por Scheme o Haskell. Este es un caso del
paradigma declarativo.
Lgico: est representado por Prolog. Este es otro caso del paradigma
declarativo.
Declarativo: por ejemplo la programacin funcional, la programacin
lgica, o la combinacin lgico-funcional.
Orientado a objetos: est representado por Smalltalk, un lenguaje
completamente orientado a objetos.
Programacin dinmica: est definida como el proceso de romper
problemas en partes pequeas para analizarlos.

1.6 editores de texto
No debe confundirse con procesador de texto o corrector de textos.
Un editor de texto es un programa que permite crear y modificar archivos
digitales compuestos nicamente por un texto sin formato, conocidos
comnmente como archivos de texto o texto plano. El programa lee el
archivo e interpreta los bytes ledos segn el cdigo de caracteres que usa
el editor. Hoy en da es comnmente de 7- 8-bits en ASCII o UTF-8, rara
vez EBCDIC.
Por ejemplo, un editor ASCII de 8 bits que lee el nmero binario 0110 0001
(decimal 97 hexadecimal 61) en el archivo lo representar en la pantalla
por la figura a, que el usuario reconoce como la letra "a" y ofrecer al
usuario las funciones necesarias para cambiar el nmero binario en el
archivo.
Los editores de texto son incluidos en el sistema operativo o en
algn paquete de software instalado y se usan cuando se deben crear o
modificar archivos de texto como archivos de configuracin, scripts o
el cdigo fuente de algn programa.
El archivo creado por un editor de texto incluye por convencin
en DOS y Microsoft Windows la extensin ".txt", aunque pueda ser
cambiada a cualquier otra con posterioridad. Tanto Unix comoLinux dan al
usuario total libertad en la denominacin de sus archivos.
Al trasladar archivos de texto de un sistema operativo a otro se debe
considerar que existen al menos dos convenciones diferentes para sealar
el trmino de una lnea: Unix y Linux usan sloretorno de carro en
cambio Microsoft Windows usa al trmino de cada lnea retorno de carro y
salto de lnea.
1.7 Compiladores e intrpretes
Compilador, que analiza el programa fuente y lo traduce a otro
equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de
la mquina). Su accin equivale a la de un traductor humano, que
toma un libro y produce otro equivalente escrito en otra lengua.
Intrprete, que analiza el programa fuente y lo ejecuta
directamente, sin generar ningn cdigo equivalente. Su accin
equivale a la de un intrprete humano, que traduce las frases que
oye sobre la marcha, sin producir ningn escrito permanente.
Intrpretes y compiladores tienen diversas ventajas e
inconvenientes que los hacen complementarios:
Un intrprete facilita la bsqueda de errores, pues la ejecucin
de un programa puede interrumpirse en cualquier momento
para estudiar el entorno (valores de las variables, etc.).
Adems, el programa puede modificarse sobre la marcha, sin
necesidad de volver a comenzar la ejecucin.
Un compilador suele generar programas ms rpidos y
eficientes, ya que el anlisis del lenguaje fuente se hace una
sola vez, durante la generacin del programa equivalente. En
cambio, un intrprete se ve obligado generalmente a analizar
cada instruccin tantas veces como se ejecute (incluso miles o
millones de veces).
Un intrprete permite utilizar funciones y operadores ms
potentes, como por ejemplo ejecutar cdigo contenido en una
variable en forma de cadenas de caracteres. Usualmente, este
tipo de instrucciones es imposible de tratar por medio de
compiladores. Los lenguajes que incluyen este tipo de
operadores y que, por tanto, exigen un intrprete, se llaman
interpretativos. Los lenguajes compilativos, que permiten el
uso de un compilador, prescinden de este tipo de operadores.

1.8 Ejecutables
Un ejecutable o archivo ejecutable, es tradicionalmente un, o como se le
conoce mayormente, archivo binario cuyo contenido se interpreta por
el ordenador como un programa.
Generalmente, contiene instrucciones en cdigo mquina de
un procesador en concreto, pero tambin puede contener bytecode que
requiera un intrprete para ejecutarlo. Adems suele contener llamadas a
funciones especficas de un sistema operativo (llamadas al sistema).
Dependiendo del tipo de que se traten las instrucciones, hablaremos de
ejecutables portables (se pueden ejecutar en varias plataformas) y no
portables (destinado a una plataforma concreta). Por ejemplo, un
ejecutable Java es portable ya que utiliza un bytecode no asociado a un
procesador en concreto.
Sin embargo en un sentido ms general, un programa ejecutable no tiene
por qu necesariamente contener cdigo de mquina, sino que puede
tener instrucciones a interpretar por otro programa. Este tipo de
ejecutables son conocidos con el nombre de scripts.
Determinar si un archivo es ejecutable es sobre todo una cuestin de
convencin. Unos sistemas operativos se basan en la extensin de archivo
(como la terminacin .exe) y otros lo hacen leyendo los metadatos (como
los bits de permiso de ejecucin en Unix).
En la mayora de los sistemas modernos, un archivo ejecutable contiene
mucha informacin que no es parte del programa en s: recursos como
textos e imgenes, requisitos del entorno de ejecucin, informacin
simblica y de depuracin, u otra informacin que ayude al sistema
operativo a ejecutar el programa.

1.9 Consola de lnea de comandos
Interfaz de Lnea de Comandos (CLI), por su acrnimo
en ingls de Command Line Interface (CLI), es un mtodo que permite a
las personas dar instrucciones a algn programa informtico por medio de
una lnea de texto simple. Debe notarse que los conceptos de
CLI, Shell y Emulador de Terminal no son lo mismo, aunque suelen
utilizarse como sinnimos.
Las CLI pueden emplearse interactivamente, escribiendo instrucciones en
alguna especie de entrada de texto, o pueden utilizarse de una forma
mucho ms automatizada (archivo batch), leyendo comandos desde un
archivo de scripts.
Esta interfaz existe casi desde los comienzos de la computacin, superada
en antigedad solo por las tarjetas perforadas y mecanismos similares.
Existen, para diversos programas y sistemas operativos, para
diversos hardware, y con diferente funcionalidad.


2.1 Anlisis de problemas
Anlisis de problemas
El primer paso para resolver un problema es analizarlo. Anlisis de
problemas ayuda a encontrar la causa de raz de un problema, diferentes
maneras de llegar a una solucin, encontrar la mejor solucin posible y
evitando soluciones pobres. En el mundo real, la definicin de un problema
en s no puede ser clara, la declaracin de un problema podra ser vaga o a
mltiples problemas podran estar escondiendo dentro de un solo
problema.
En cualquier caso, con el fin de resolver un problema, es esencial tener
mayor claridad sobre lo que usted est tratando de resolver. Esta
informacin puede obtenerse por interactuar con clientes, anlisis de
documentos de especificaciones de requisitos de negocio, interactuar con
los usuarios finales y estudiando en detalle los casos de uso. Despus de
reunir los requisitos, se hace ms fcil clasificar un problema como solubles
o insolubles.
Un problema puede caer en la categora insoluble debido a muchas
razones, incluyendo la necesidad de hacer modificaciones importantes a la
arquitectura de una aplicacin que ya est en produccin, la solucin
podra ser altamente intensiva de recursos o las caractersticas que
requiere una solucin no se admiten en el lenguaje de programacin que
utiliza una aplicacin ya.
Una vez que han analizado el problema, el siguiente paso es desarrollar el
pseudocdigo con pasos para resolver el problema. En esta etapa, algunos
de los factores importantes que debe considerar son almacenamiento y
tiempo. Si el algoritmo propuesto toma demasiado almacenamiento o
demasiado tiempo para procesar la entrada pequea, entonces
funcionara incluso ms lentamente para grandes entradas. Por lo tanto,
mediante el anlisis de almacenamiento y tiempo necesarios para resolver
un problema, se puede determinar aproximadamente la eficiencia del
algoritmo.
Los programadores principiantes se centran principalmente en llegar a una
solucin en lugar de centrarse en factores importantes como el
rendimiento; pero practicando para analizar la complejidad de un
problema le dara a los programadores principiantes una comprensin
profunda acerca de diversos aspectos de resolver el problema.
A continuacin siguen algunos de los pasos en el anlisis de un problema.
Definir claramente el problema:
Si es claramente un problema, puede omitir este paso; pero rara vez en el
mundo real son problemas claramente. Cuando usted tiene escenarios
empresariales complejos, es comn tener problema vaga definicin. Por lo
tanto, es esencial tener una definicin clara del problema con nfasis en
caractersticas importantes que debe para tener una solucin. Adems, en
esta etapa los programadores con experiencia pueden razonar fcilmente
si un problema es resoluble o no.
Identificar la causa raz del problema:
De hecho, identificar lo que causa el problema mediante el anlisis de
escenarios de negocio y casos de uso podra revelar otros problemas
ocultos. Esta fase requiere anlisis minucioso de los detalles pertinentes a
un problema y puede requerir la interaccin con el cliente para obtener
una idea ms clara sobre el problema. A veces, un problema podra ser tan
simple como cambiar un archivo de configuracin o podra ser tan
complejo como la alteracin de la arquitectura de una aplicacin.
Definicin de la frontera:
Si la solucin es una aplicacin independiente, entonces tiene que definir
sus lmites mediante la definicin de los actores que interactan con l. Si
la solucin que se desarrolla es parte de una aplicacin existente, debe
encajar en el contexto de la aplicacin existente. Identificar las
restricciones:
Este paso ayuda a encontrar las dificultades involucradas en la bsqueda
de una solucin a un problema. De hecho, restricciones ayudan a dar forma
a una solucin de ser genrico a uno ms especfico. En general, anlisis de
un problema da idea ms clara acerca de lo complejo es un problema y si
puede ser resueltos dentro de la arquitectura existente de un producto.
2.2 Representacin de algoritmos, grfica y
seudocdigo
Representacin de grfica de algoritmo
Teora de grafos se utiliza para modelar estructuras complejas con
diferentes tipos de relaciones como un grupo de objetos con enlaces de
conexin de cada objeto. Diferentes tipos de estructuras de datos pueden
utilizarse para almacenar grficos, pero los dos principales factores que se
consideran al momento de decidir una estructura de datos correctos son:
la complejidad de la estructura de grafo y el algoritmo utilizado para
manipular el grfico.
Si una estructura de datos tiene menores requerimientos de memoria ser
fcil almacenar un grfico que crece en complejidad. Las estructuras de
datos preferido para almacenar grficos son lista y matriz. Lista tiene
menores requerimientos de memoria y puede ser utilizado para almacenar
datos sobre vrtices, valor de borde o peso. Matrix permite un acceso ms
rpido a los datos, pero a costa de ms memoria. En aplicaciones en
tiempo real, puede ser necesario utilizar la matriz y lista para almacenar un
grfico.
Uno de las operaciones ms comunes realizadas en grficos es encontrar
el camino ms corto desde el nodo x a y de nodo. En el caso de grafo
dirigido, cada borde puede representar un valor y las operaciones se
podran encontrar caminos con valores diferentes. Esto puede aplicarse a
un anlisis de flujo de trfico de red; Si cada arista del grafo representa la
capacidad de flujo, las tareas sera encontrar los caminos que tienen la
capacidad de flujo mximo o mnimo. Hay muchas tcnicas para atravesar
un grfico pero si usted quiere encontrar el camino ms corto desde el
nodo x a y de nodo, el ms popular y ampliamente algoritmo es el
algoritmo de Dijkstra.
2.3 Diseo de algoritmos aplicados a problemas
Diseo del algoritmo. Diseo de algoritmos busca eficiente solucin a un
problema. Un algoritmo realizar eficientemente puede utilizarse como
plantilla para resolver una amplia gama de problemas similares. Lenguajes
de programacin de alto nivel proporcionan la implementacin de
algoritmos eficientes como estructuras de datos listo para su uso.
Paradigma de diseo del algoritmo se ocupa de una variedad de tcnicas
como la fuerza bruta, dividir y conquistar, retroceso, rama y enlazado,
transformar y conquistar y algoritmo voraz.
Divide y vencers tcnica:
Divide y vencers resuelve un problema por derribar un problema en
problemas ms pequeos hasta el ms pequeo problema convertido en
sencillo y fcil de resolver de forma recursiva. Luego, las soluciones de los
problemas ms pequeos se combinan para producir la solucin a un
problema mayor. Esta tcnica se aplica en quick sort, merge sort, anlisis
sintctico y transformada de Fourier discreta. Divide y vencers es una
tcnica poderosa para resolver un problema complejo como torre de
rompecabezas de Hanoi a travs de repetidas recursividad. Este enfoque
funciona mejor en multi-processors sistemas con memoria compartida
como cada subproblema distinto puede funcionar independientemente en
procesadores separados. Divide y vencers paradigma puede ser aplicado
para producir algoritmos eficientes como algoritmo de Strassen o
algoritmo de mergesort.
Como cada problema se divide en problemas ms pequeos, este enfoque
utiliza memoria cach eficientemente y se llama como cach inconsciente
debido a su uso ptimo de la memoria cach. Divide y vencers algoritmo
funciona mejor para procedimientos recursivos siempre que haya
suficiente espacio para almacenar datos recursivo; de lo contrario, puede
provocar desbordamiento de pila.
Programacin dinmica:
Programacin dinmica es casi similar a dividir y conquistar excepto que
ayuda a optimizar los clculos. En un clculo de recursiva mediante divide y
vencers, los clculos se realizan varias veces resultando en subproblemas
idnticos. Programacin dinmica optimiza este enfoque mediante el
almacenamiento de los resultados de subproblemas idnticos en una
tabla, evitando as la necesidad de realizar la misma operacin varias veces.
Si el tamao de entrada crece, los subproblemas tambin crecen junto con
l; por lo tanto tener una solucin optimizada para resolver el
subproblema slo una vez y almacenar el resultado en una tabla puede
ahorrar mucho tiempo de procesamiento.
Enfoque de arriba hacia abajo:
Este enfoque es similar a la solucin de un problema utilizando
recursividad. Si un problema puede ser recursivamente solved resolviendo
sus subproblemas y si los subproblemas se superponen entre s, la solucin
a los subproblemas puede ser memorizada o almacenada en una tabla.
Cuando surge un nuevo subproblema, la tabla se comprueba primero para
ver si el subproblema ya ha sido resuelto o no; Si subproblema se ha
resuelto, solo es reutilizado, de lo contrario, encontrar la solucin a la
subproblema y aadirlo a la tabla.
Enfoque de abajo hacia arriba:
Este enfoque es justo lo contrario de enfoque top-down. En este caso,
primero se resuelven los subproblemas y las soluciones de los
subproblemas se utilizan para derivar las soluciones de problemas
mayores. Las soluciones de los subproblemas se almacenan en una tabla y
son recursivamente iterada para encontrar una solucin a un problema
mayor. Por ejemplo, si se conoce la solucin F30 y F31, es sencillo calcular
su valor siguiente F32. Algunos de los algoritmos populares que utilizan
programacin dinmica son de Fibonacci, tablero de ajedrez, torre de
Hanoi y el alineamiento de secuencias.

2.4 Diseo de algoritmos de funciones
Funciones algortmicas de diseo
Una funcin algortmica se refiere a la implementacin de un algoritmo y
normalmente forma parte de un programa grande. Tambin se llama una
funcin algortmica como procedimiento, rutina, mtodo o subprograma.
Un algoritmo es un procedimiento detallado paso a paso para resolver un
problema, pero es independiente de cualquier lenguaje de programacion
ya que representa el concepto abstracto de la solucin. Por lo tanto,
despus de disear un algoritmo y desarrollar su pesudocode, el siguiente
paso es implementar en un lenguaje de programacin especfico.
Al disear un algoritmo que muchos factores como tiempo, espacio y
tamao esperado de entrada se consideran. Desarrollo y anlisis de
algoritmos tambin implican encontrar peor de los casos, el mejor de los
casos y situaciones de promedio, como el rendimiento es muy importante
para una aplicacin cuya entrada aumenta con el tiempo.
Una vez que haya finalizado el algoritmo, se traduce en una funcin o un
procedimiento que es especfico de un lenguaje de programacin.
Tericamente, independientemente de un lenguaje de programacin, un
algoritmo debe producir repetidamente misma salida. Pero, esto no
sucede en la realidad, ya que cada lenguaje de programacin tiene sus
propias ventajas y desventajas. Las caractersticas de un lenguaje de
programacin determinan la eficiencia de un algoritmo debido a
problemas como la incapacidad para asignar recursos en tiempo de
ejecucin o tener fugas de memoria silenciosa puede ralentizar un
programa y puede llevar a mal funcionamiento de un algoritmo
especialmente cuando aumenta la entrada.
Factores que influyen en el diseo de una funcin algortmica
Si un algoritmo hace uso de dividir y conquistar el enfoque o la
programacin dinmica, el lenguaje de programacin que se utiliza para
codificar una funcin algortmica debe tener soporte para realizar llamadas
recursivas anidados. Casi todos los lenguajes de programacin modernos
tienen soporte para realizar llamadas recursivas pero programas escritos
en lenguajes antiguos como FORTRAN no tenga soporte para realizar
llamadas anidadas. En el caso de recursividad, un lenguaje de
programacin se encarga de varias ejecuciones de una funcin de
anidacin y hacer nuevas copias de las variables en cada llamada. Para
lograrlo, la mayora de lenguajes de programacin almacenar detalles
sobre las llamadas de funcin anidada en una pila.
Aunque todos los lenguajes de programacin proporcionan apoyo para
realizar llamadas de funcin anidada, existe una actuacin area en
almacenar y recuperar los parmetros y variables locales, en recuperar
direcciones relativas de cada llamada a una funcin anidada y en ajusta el
puntero de pila. Esta sobrecarga a su vez aumenta el tiempo de ejecucin
como el nmero de aumentos de llamadas recursivas. Al analizar y disear
una funcin algortmica, esta involucrado en la fabricacin de llamadas
recursivas de gastos generales no se puede predecir, pero es mejor dejar
espacio para lenguaje de programacin factores dependientes como este.
Casi todos los lenguajes de programacin orientada a objetos producen
excepciones cuando la entrada no es vlida o cuando encuentra un error.
Sin embargo, otra alternativa, que se puede considerar al disear la
funcin algortmica es devolver un cdigo de error. Este enfoque puede
ser til en idiomas que no proporcionan ningn apoyo para el manejo de
errores. Un cdigo de error normalmente da descripcin sobre el tipo de
error que se ha encontrado una funcin.
A pesar de que un algoritmo establece claramente la esperada entrada y
salida junto con los Estados intermedios, la aplicacin real de la funcin
algortmica podra variar de un lenguaje de programacin a otro. Una
funcin algortmica diseada aumenta la legibilidad de un programa,
aumenta la calidad del cdigo, reduce errores de hard to find y ayuda a
mantener grandes programas fcilmente.