Está en la página 1de 14

ALGORITMOS Y PROGRAMAS

 CONCEPTO DE ALGORITMO:

El objetivo fundamental de esta texto es enseñar a resolver problemas


mediante una computadora. Un programador de computadora es antes que
nada una persona que resuelve problemas, por lo que para llegar a ser un
programador eficaz se necesita aprender a resolver problemas de un modo
riguroso y sistemático. A lo largo de todo este libro nos referimos a la
metodología necesaria para resolver problemas mediante programas, al
concepto se denomina metodología de la programación.

 CARACTERÍSTICAS DE LOS ALGORITMOS

Las características fundamentales que debe cumplir todo algoritmo son:

• Un algoritmo debe ser preciso e indicar el orden de realización de cada


paso.

• Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se


debe obtener el mismo resultado cada vez.

• Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en


algún momento; osea, debe tener un número finito de pasos.

La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.


En el algoritmo citado anteriormente se tendrá:
Entrada ingredientes y utensilios empleados
Proceso elaboración de la receta de cocin
Salida terminación del plato (por ejemplo, cordero)
CLASIFICACIÓN DE LOS ALGORITMOS:

Se puede clasificar tomando en cuenta dos aspectos.

• Secuenciales

• Condicionales

• Repetitivos

TIPOS DE ALGORITMOS:

o Cualitativos: Son aquellos en los que se describen los pasos utilizando


palabras.
o Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para
definir los pasos del proceso.

LENGUAJES ALGORITMICOS:

Es una serie de símbolos y reglas que se utilizan para describir de manera explícita
un proceso.

TIPOS DE LENGUAJES ALGORITMICOS:

 Gráficos: Es la representación gráfica de las operaciones que realiza un


algoritmo (diagrama de flujo).
 No Gráficos: Representa en forma descriptiva las operaciones que debe
realizar un algoritmo (pseudocodigo).

Un algoritmo puede ser expresado de las siguientes formas.

a) Lenguaje Natural : el uso de términos del lenguaje natural, es una forma de


representar un algoritmo.
b) Lenguaje Simbólico: es otra forma de representación de un algoritmo, que además
permite una introducción a la programación estructural.
c) Lenguaje Gráfico : es una forma de escribir una secuencia de pasos en forma de
diagrama, en la practica se denomina Diagramas de Flujo.

Una receta de un plato de cocina se puede expresar en español, ingles o francés pero
cualquiera sea el lenguaje los pasos para la elaboración del plato se realizarán sin
importar el cocinero.
TÉCNICAS DE REPRESENTACIÓN:

Para la representación de un algoritmo, antes de ser convertido a lenguaje de


programación, se utilizan algunos métodos de representación escrita, gráfica o
matemática. Los métodos más conocidos son:

 Diagramación libre (Diagramas de flujo)


 ·Diagramas Nassi-Shneiderman
 Pseudocódigo
 Lenguaje natural (español, inglés, etc.)
 Fórmulas matemáticas

El lenguaje natural puede no ser suficientemente preciso, permitiendo ambigüedades,


obteniendo una descripción no del todo satisfactoria.

DIAGRAMAS DE FLUJO

Es quizás la forma de representación más antigua. Algunos autores suelen llamarlos


también como diagramas de lógica o flujogramas.
Un diagrama de flujo utiliza cajas estándar tales como las que se muestran en las
figuras 1, 2 y 3:
DIAGRAMAS NASSI-SCHNEIDERMAN O CHAPIN

También conocidos como Diagramas de Chapin, corresponden a uno de los tipos de


diagramación estructurada. Las acciones se escriben en rectángulos o cajas sucesivas.
Se pueden escribir diferentes acciones en una caja. La simbología utilizada es como
vemos en las figuras siguientes
LENGUAJES DE PROGRAMACIÓN (LENGUAJE MÁQUINA,
ENSAMBLADOR Y DE ALTO NIVEL)

Al igual que los idiomas sirven de vehículo de comunicación entre seres humanos,
existen lenguajes que realizan la comunicación entre ellos y las computadoras. Estos
lenguajes permiten expresar las instrucciones que el programador desea que la
computadora ejecute.

Los principales tipos de lenguajes utilizados en la actualidad son tres:

 Lenguaje maquina
 Lenguaje de bajo nivel (ensamblador)
 Lenguajes de alto nivel
 Lenguajes máquina

Se llama lenguaje máquina a las instrucciones que se dan directamente a la


computadora, utilizando una serie de dígitos binarios o bits, representados por los
números 0 y 1 que especifican una operación. Aunque este lenguaje es el que
entiende la computadora, es muy difícil de manejar en la comunicación humana. Las
instrucciones en lenguaje maquina dependen del hardware de la computadora y, por
lo tanto, diferirán de una computadora a otra.

Lenguajes de bajo nivel (ensamblador):

Los lenguajes de bajo nivel son más fáciles de utilizar que los lenguajes máquina,
pero, al igual que ellos, dependen de la máquina en particular. El lenguaje de bajo
nivel por excelencia es el ensamblador (assembler lenguaje). Las instrucciones en
lenguaje ensamblador son conocidas como mnemotécnicos.

NOTA: No se debe confundir el programa ensamblador, encargado de efectuar la


traducción del programa fuente escrito a lenguaje maquina, con el lenguaje
ensamblador (assembly language), lenguaje de programación con una estructura y
gramática definidas.

Lenguajes de alto nivel:

Los lenguajes de alto nivel son los mas utilizados por los programadores. Están
diseñados para que las personas escriban y entiendan los programas de un modo
mucho más fácil que los lenguajes máquina y ensambladores. Otra razón es que un
programa escrito en un lenguaje de alto nivel es independiente de la máquina; esto
es, las instrucciones del programa de la computadora no dependen del diseño del
hardware o de una computadora en particular. En consecuencia, los programas
escritos en lenguajes de alto nivel son portables o transportables, lo que significa la
posibilidad de poder ser ejecutados con poca o ninguna modificación en diferentes
tipos de computadoras; al contrario que los programas en lenguaje máquina o
ensamblador que sólo se pueden ejecutar en un determinado tipo de computadora.

TRADUCTORES DE LENGUAJE:

Los traductores de lenguajes son programas que traducen a su vez los programas
fuente escritos en lenguajes de alto nivel a código máquina.
Los traductores se dividen en:
 Compiladores
 Interpretes
Interpretes

Un interprete es un traductor que toma un programa fuente, lo traduce y a


continuación lo ejecuta (dicho programa por medio de la computadora desarrolla una
tarea especifica).
Un lenguaje que soporte un traductor de tipo intérprete se denomina lenguaje
interpretado. BASIC es el modelo por excelencia interpretado.
Los programas fuente en BASIC se escriben con ayuda de un programa denominado
editor que suele venir incorporado al programa intérprete.

Compiladores

Un compilador es un programa que traduce los programas fuente escritos en


lenguajes de alto nivel a lenguaje máquina.
Los programas escritos en lenguajes de alto nivel (en el editor del lenguaje) se
llaman programas fuente y el programa traducido programa objeto o código objeto.
El compilador traduce (sentencia a sentencia) el programa fuente.
Lenguajes compiladores típicos son: PASCAL, COBOL, C..
Fases de la compilación:

La compilación es el proceso de la traducción de programas fuente a programas


objeto.
El programa objeto obtenido de la compilación no ha sido traducido normalmente a
código máquina sino a ensamblador. Para conseguir el programa máquina real se
debe utilizar un programa llamado montador o enlazador (linker). El proceso de
montaje conduce a un programa en lenguaje máquina directamente ejecutable:

Por ejemplo, el proceso de ejecución de un Programa en C++ tiene los siguientes


pasos:

 Escritura del programa fuente con un editor (programa que permite a una
computadora actuar de modo similar a una máquina de escribir electrónica) y
guardarlo en un dispositivo de almacenamiento (un disco).
 Introducir el programa fuente en memoria.
 Compilar el programa con el compilador C++.
Verificar y corregir errores de compilación (listado de errores).
 Obtención del programa objeto.
 El montador obtiene el programa ejecutable.
 Se ejecuta el programa y si no existen errores, se tendrá la salida del mismo
DEFINICIÓN DE PROGRAMA:

Un programa de computadora es un conjunto de instrucciones (ordenes dadas a la


máquina) que producirán la ejecución de una determinada tarea. En esencia, un
programa es un medio para conseguir un fin. El fin será normalmente definido como
la información necesaria para solucionar un problema.

El proceso de programación es, por consiguiente, un proceso de solución de


problemas (como ya se vio anteriormente) y el desarrollo de un programa requiere
las siguientes fases:

1. Definición y análisis del problema.


2. Diseño de algoritmos.
- diagrama de flujo;
- pseudocódigo.
3. Codificación del programa.
4. Depuración y verificación del programa.
5. Documentación.
6. Mantenimiento.

Software
En computación, el software -en
sentido estricto- es un conjunto de
programas de cómputo,
procedimientos, reglas,
documentación y datos asociados
que forman parte de las
operaciones de un sistema de
computación para realizar tareas
específicas. El
término “software” fue usado por
primera vez por John W. Tukey en 1957. La palabra “software” es un contraste de
“hardware”; el software se ejecuta dentro del hardware.

Algunos autores prefieren ampliar la definición de software e incluir también en la


definición todo lo que es producido en el desarrollo del mismo.
Considerando esta definición, el concepto de software va más allá de los programas
de cómputo en sus distintos estados: código fuente, binario o ejecutable; también
sudocumentación, datos a procesar e información de usuario forman parte del
software: es decir, abarca todo lo intangible, todo lo “no físico” relacionado.
Es un ingrediente indispensable para el funcionamiento del computador. Está
formado por una serie de instrucciones y datos, que permiten aprovechar todos los
recursos que el computador tiene, de manera que pueda resolver gran cantidad de
problemas. Un computador en sí, es sólo un conglomerado de componentes
electrónicos; el software le da vida al computador, haciendo que sus componentes
funcionen de forma ordenada.
En general, el software es un conjunto de instrucciones detalladas que controlan la
operación de un sistema computacional.

Elementos y funciones

Están compuestos por una serie


de rutinas, las cuales están
formadas
porinstrucciones,procedimientos
y comandos que conforma
dichoprograma. Cada una de
las rutinas realiza una función
dentro del mismo.
Como programa, consiste
enun código que se suele
escribir en un lenguaje de
programación de alto nivel, que
es más sencillo de escribir (pues
es más cercano
al lenguaje natural humano),
pero debe convertirse en
un lenguaje-
máquina específico para ser
ejecutado por un
procesador individual.
El código es una secuencia de
instrucciones ordenadas que
cambian el estado
del hardware de
una computadora.
Funciones del software:

o Administrar los recursos de cómputo

o Proporcionar las herramientas para optimizar estos recursos.

o Actuar como intermediario entre el usuario y la información almacenada.


El software establece procedimientos de comunicación entre el usuario y viceversa.
Tales componentes lógicos incluyen, entre otros, aplicaciones
informáticas comoprocesador de textos, que permite al usuario realizar todas las
tareas concernientes a edición de textos.

Clasificaciones del Software

Como concepto general, el software puede dividirse en varias categorías basadas en


el tipo de trabajo realizado. Las dos categorías primarias de softwareson los sistemas
operativos (software del sistema), que controlan los trabajos del ordenador o
computadora, y elsoftware de aplicación, que dirige las distintas tareas para las que
se utilizan las computadoras. Por lo tanto, el software del sistema procesa tareas tan
esenciales, aunque a menudo invisibles, como el mantenimiento de los archivos del
disco y la administración de la pantalla, mientras que el software de aplicación lleva
a cabo tareas de tratamiento de textos, gestión de bases de datos y similares.
Constituyen dos categorías separadas elsoftware de red, que permite comunicarse a
grupos de usuarios, y el software de lenguaje utilizado para escribir programas.
Además de estas categorías basadas en tareas, varios tipos de software se describen
basándose en su método de distribución. Entre estos se encuentran los así llamados
programas enlatados, el software desarrollado por compañías y vendido
principalmente por distribuidores, el freeware y software de dominio público, que se
ofrece sin costo alguno, el shareware, que es similar al freeware, pero suele conllevar
una pequeña tasa a pagar por los usuarios que lo utilicen profesionalmente y, por
último, el infame vapourware, que es software que no llega a presentarse o que
aparece mucho después de lo prometido

Software de Sistema
Su objetivo es desvincular
adecuadamente al usuario y al
programador de los detalles de la
computadora en particular que se
use, aislándolo especialmente del
procesamiento referido a las
características internas de:
memoria, discos, puertos y
dispositivos de comunicaciones,
impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y
programador adecuadas interfaces de alto nivel, herramientas y utilidades de apoyo
que permiten su mantenimiento. Incluye entre otros:

o Sistemas operativos

o Herramientas de Corrección y Optimización

o Controladores de dispositivos

o Herramientas de diagnóstico

o Servidores Utilidades

Sistemas Operativos

Un sistema operativo es un software de sistema, es decir, un conjunto de


programas de computación destinados a realizar muchas tareas entre las que
destaca la administración de los dispositivos periféricos.
Se encarga de ejercer el control y coordinar el uso del hardware entre diferentes
programas de aplicación y los diferentes usuarios. Es un administrador de los
recursos de hardware del sistema.

En una definición informal es un sistema que consiste en ofrecer una distribución


ordenada y controlada de los procesadores, memorias y dispositivos de E/S entre los
diversos programas que compiten por ellos.
A pesar de que todos nosotros usamos sistemas operativos casi a diario, es difícil
definir qué es un sistema operativo. En parte, esto se debe a que los sistemas
operativos realizan dos funciones diferentes.

Proveer una máquina virtual, es decir, un ambiente en el cual el usuario pueda


ejecutar programas de manera conveniente, protegiéndolo de los detalles y
complejidades del hardware. Administrar eficientemente los recursos del
computador.

Controlador de dispositivo

Un controlador de dispositivo, llamado normalmente controlador (en inglés, device


driver) es unprograma informático que permite al sistema operativo interactuar con
un periférico, haciendo unaabstracción del hardware y proporcionando una interfaz -
posiblemente estandarizada- para usarlo. Se puede esquematizar como un manual de
instrucciones que le indica cómo debe controlar y comunicarse con un dispositivo
en particular. Por tanto, es una pieza esencial, sin la cual no se podría usar el
hardware.

Herramientas de diagnóstico
Una herramienta de diagnóstico es un software que permite monitorear y en algunos
casos controlar la funcionalidad del hardware, como: computadoras, servidores y
periféricos, según el tipo y sus funciones. Estos dispositivos pueden ser, la memoria
RAM, el procesador, los discos duros, ruteadores, tarjetas de red, entre muchos
dispositivos más.

Servidores
Una aplicación informática o programa que realiza algunas tareas en beneficio de
otras aplicaciones llamadas clientes. Algunos servicios habituales son los servicios
de archivos, que permiten a los usuarios almacenar y acceder a los archivos de una
computadora y los servicios de aplicaciones, que realizan tareas en beneficio directo
del usuario final. Este es el significado original del término. Es posible que un
ordenador cumpla simultáneamente las funciones de cliente y de servidor.

Software de Aplicación

Es aquel quepermitea los usuarios llevar a cabo una o varias tareas específicas, en
cualquier campo de actividad susceptible de ser automatizado o asistido, con especial
énfasis en los negocios. Incluye entre otros:

o Aplicaciones para Control de sistemas y automatización industrial

o Aplicaciones ofimáticas

o Software educativo

o Software empresarial

o Bases de datos

o Telecomunicaciones (p.ej. internet y toda su estructura lógica)

o Videojuegos Software médico

o Software de Cálculo Numérico y simbólico.

o Software de Diseño Asistido (CAD)

o Software de Control Numérico (CAM)


Software educativo

Se denomina software educativo al destinado a la enseñanza y el auto aprendizaje y


además permite el desarrollo de ciertas habilidades cognitivas.
Como software educativo tenemos desde programas orientados al aprendizaje
hasta sistemas operativos completos destinados a la educación, como por ejemplo las
distribuciones GNU/Linux orientadas a la enseñanza.

Software empresarial
Cualquier tipo de software que está orientado a ayudar a una empresa a mejorar su
productividad o a medirla.

Base de datos
Una base de datos o banco de datos es un conjunto de datos pertenecientes a un
mismo contexto y almacenados sistemáticamente para su posterior uso. En este
sentido, una biblioteca puede considerarse una base de datos compuesta en su
mayoría por documentos y textos impresos en papel e indexados para su consulta.
En la actualidad, y debido al desarrollo tecnológico de campos como la informática y
la electrónica, la mayoría de las bases de datos están en formato digital
(electrónico), que ofrece un amplio rango de soluciones al problema de almacenar
datos.

Software de Programación o de Usuario Final


Es el conjunto de herramientas quepermiten al programador desarrollar programas
informáticos, usando diferentes alternativas y lenguajes de programación, de una
manera práctica. Incluye entre otros:
Entornos de Desarrollo Integrados (IDE):Agrupan las anteriores herramientas,
usualmente en unentorno visual, de forma tal que el
programadorno necesite introducir múltiples comandos para compilar, interpretar,
depurar, etc. Habitualmente cuentan con una avanzada interfaz gráfica de usuario
(GUI).

o Editores de texto

o Compiladores

o Intérpretes

o Enlazadores

o Depuradores
Editores de texto
Es un programa que permite crear y modificar archivos digitales compuestos
únicamente por texto sin formato, conocidos comúnmente como archivos de texto o
texto plano. El programa lee el archivo e interpreta los bytes leídos según el código
de caracteres que usa el editor. Se usan cuando se deben crear o modificar archivos
de texto como archivos de configuración, scripts o el código fuente de algún
programa.

Compiladores
Un compilador es un programa informático que traduce un programa escrito en
un lenguaje de programación a otro lenguaje de programación, generando un
programa equivalente que la máquina será capaz de interpretar.

Enlazadores
Un enlazador (en inglés, linker) es un programa que toma los ficheros de código
objeto generado en los primeros pasos del proceso de compilación, la información
de todos los recursos necesarios (biblioteca), quita aquellos recursos que no
necesita, y enlaza el código objeto con su(s) biblioteca(s) con lo que
finalmenteproduce un fichero ejecutable o una biblioteca

Depurador
Un depurador (en inglés, debugger), es un programa que permite depurar o limpiar
los errores de otro programa informático. El depurador permite detener el programa
en:

o Un punto determinado mediante un punto de ruptura.

o Un punto determinado bajo ciertas condiciones mediante un punto de ruptura

condicional.

o Un momento determinado cuando se cumplan ciertas condiciones.

o Un momento determinado a petición del usuario