Está en la página 1de 11

UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA

ALGORITMOS

1. ALGORITMO
Es un método para resolver un problema. Proviene de Mohammed Al-Khowarizmi,
matemático Persa que vivió durante el siglo IX y alcanzó gran reputación por el
enunciado de la regla paso a paso para sumar, restar, multiplicar y dividir números
decimales. La traducción al latín del apellido es Algoritmus que con el tiempo se llamó
algoritmo.

Programador
Persona que resuelve problemas, pero para llegar a ser eficaz necesita resolver
problemas de modo riguroso y sistemático.

Características de los algoritmos


• Preciso
Indicar el orden de realización de cada caso.
• Definido
Si se sigue el algoritmo dos veces, se debe tener el mismo resultado cada vez.
• Finito
Si se sigue un algoritmo debe terminar en cualquier momento. Debe tener un
número finito de pasos.

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


Ejemplo un algoritmo para la receta de cocina.

Entrada: Ingredientes y utensilios


Proceso: elaboración de la receta de cocina.
Salida: terminación del plato (ejemplo: cordero, ají de gallina, flan, etc )

Ejemplo1
Redactar el algoritmo correspondiente para el siguiente caso: Un cliente ejecuta un
pedido a una fábrica. La fábrica examina en su banco de datos la ficha del cliente; si el
cliente es solvente entonces la empresa acepta el pedido; en caso contrario; rechazará el
pedido.

Los pasos del algoritmo son:


1. Inicio
2. Leer pedido.
3. examinar la ficha del cliente.
4. Si el cliente es solvente, aceptar el pedido; en caso contrario; rechazar el pedido.
5. fin.

2. RESOLUCIÓN DE UN PROBLEMA.

Problema Diseño del Programa de


Algoritmo computadora

Ingeniería de Sistemas – UNSCH Página 1


Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

Pasos para la resolución de un problema


• Diseño del algoritmo
Describe la secuencia ordenada de pasos(sin ambigüedades), que conducen a la
solución de un problema dado. (Análisis del problema y desarrollo del algoritmo)
• Expresar el algoritmo como un programa en un lenguaje de programación
adecuado. (Fase de codificación)
• Ejecución y validación del programa por la computadora.

3. SOFTWARE
Las operaciones que debe realizar el hardware son especificadas por una lista de
instrucciones, llamadas programas o software. El software se divide en dos grandes
grupos: software del sistema y software de aplicaciones.

Software del sistema


Es el conjunto de programas indispensables para que la máquina funcione, se denomina
también programas del sistema. Estos programas son básicamente: el sistema operativo,
los editores de texto, los compiladores/intérpretes (lenguajes de programación) y los
lenguajes de utilidad.
Uno de los programas más importe es el sistema operativo, que sirve esencialmente para
facilitar la escritura y uso de los propios programas. El sistema operativo dirige las
operaciones globales de la computadora, instruye ala computadora para ejecutar otros
programas y controla el almacenamiento y recuperación de archivos (programas y
datos) de cintas y discos. Gracias al sistema operativo es posible que el programador
pueda introducir y grabar nuevos programas, así como instruir ala computadora para q
los ejecute.
Software de aplicaciones
Programas que realizan tareas concretas, nómina, contabilidad, etc.

4. LENGUAJES DE PROGRAMACION
El ordenador sólo entiende un lenguaje conocido como código binario o código
máquina, consistente en ceros y unos. Es decir, sólo utiliza 0 y 1 para codificar
cualquier acción.

Los lenguajes más próximos a la arquitectura hardware se denominan lenguajes de bajo


nivel y los que se encuentran más cercanos a los programadores y usuarios se
denominan lenguajes de alto nivel.

Un lenguaje de programación es un lenguaje que puede ser utilizado para controlar el


comportamiento de una computadora. Consiste en un conjunto de reglas sintácticas y
semánticas que definen su estructura y el significado de sus elementos, respectivamente.
Un lenguaje de programación permite a un programador especificar de manera precisa:
sobre qué datos una computadora debe operar, cómo deben ser estos almacenados y
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.
Los procesadores usados en las computadoras son capaces de entender y actuar según lo
indican programas escritos en un lenguaje fijo llamado lenguaje de máquina. Todo
programa escrito en otro lenguaje puede ser ejecutado de dos maneras:
Ingeniería de Sistemas – UNSCH Página 2
Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

• Mediante un programa que va adaptando las instrucciones conforme son


encontradas. A este proceso se lo llama interpetar y a los programas que lo hacen se
los conoce como intérpretes.
• Traduciendo este programa al programa equivalente escrito en lenguaje de máquina.
A ese proceso se lo llama compilar y al traductor se lo conoce como compilador.

Clasificación de los lenguajes de programación


Los lenguajes de programación se determinan según el nivel de abstracción, Según la
forma de ejecución y Según el paradigma de programación que poseen cada uno de
ellos y esos pueden ser:

a. Según el nivel de abstracción


• Lenguajes de bajo nivel.
Los lenguajes de bajo nivel son lenguajes de programación que se acercan al
funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia,
el código máquina. A éste le sigue el lenguaje ensamblador, ya que al programar en
ensamblador se trabajan con los registros de memoria de la computadora de forma
directa.
Son lenguajes totalmente dependientes de la máquina, es decir que el programa que se
realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas.
Al estar prácticamente diseñados a medida del hardware, aprovechan al máximo las
características del mismo.

Dentro de este grupo se encuentran:


 El lenguaje maquina: este lenguaje ordena a la máquina las operaciones
fundamentales para su funcionamiento. Consiste en la combinación de 0's y 1's
para formar las ordenes entendibles por el hardware de la maquina.
Este lenguaje es mucho más rápido que los lenguajes de alto nivel.
La desventaja es que son bastantes difíciles de manejar y usar, además de tener
códigos fuente enormes donde encontrar un fallo es casi imposible.

 El lenguaje ensamblador: es un derivado del lenguaje maquina y esta formado


por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición
de este lenguaje se crearon los programas traductores para poder pasar los
programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja
con respecto al código máquina es que los códigos fuentes son más cortos y los
programas creados ocupan menos memoria. Las desventajas de este lenguaje es
tener que aprender un nuevo lenguaje difícil de probar y mantener.

• Lenguajes de medio nivel


Hay lenguajes de programación que son considerados por algunos expertos como
lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características
que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas
cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.
Dentro de estos lenguajes podría situarse C ya que puede acceder a los registros del
sistema, trabajar con direcciones de memoria, todas ellas características de lenguajes de
bajo nivel y a la vez realizar operaciones de alto nivel.

Ingeniería de Sistemas – UNSCH Página 3


Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

• Lenguajes de alto nivel


Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados
por elementos de lenguajes naturales, como el inglés. Por tanto se encuentran más
cercanos al lenguaje natural que al lenguaje máquina. Están dirigidos a solucionar
problemas mediante el uso de Estructuras Dinámicas de Datos.

Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en


principio, un programa escrito en un lenguaje de alto nivel, se puede migrar de una
máquina a otra sin ningún tipo de problema.

Estos lenguajes permiten al programador olvidarse por completo del funcionamiento


interno de la maquina para la que están diseñando el programa. Tan solo necesitan un
traductor que entiendan el código fuente como las características de la maquina.

b. Según la forma de ejecución


• Lenguajes compiladores
Los compiladores son aquellos cuya función es traducir un programa fuente escrito en
un determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina
con código binario - programa objeto). Naturalmente, un programa que se escribe en un
lenguaje de alto nivel tiene que traducirse a un código que pueda utilizar la máquina.

Al usar un lenguaje compilado, el programa desarrollado nunca se ejecuta mientras haya


errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en
el código.

• Lenguajes interpretes
Se puede también utilizar una alternativa diferente de los compiladores para traducir
lenguajes de alto nivel y a continuación ejecutarlo. En vez de traducir el programa
fuente y grabar en forma permanente el código objeto que se produce durante la corrida
de compilación para utilizarlo en una corrida de producción futura, el programador sólo
carga el programa fuente en la computadora junto con los datos que se van a procesar. A
continuación, un programa intérprete, almacenado en el sistema operativo del disco, o
incluido de manera permanente dentro de la máquina, convierte cada proposición del
programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el
proceso de los datos. No se graba el código objeto para utilizarlo posteriormente.

La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir
a lenguaje máquina.

El intérprete elimina la necesidad de realizar una corrida de compilación después de


cada modificación del programa cuando se quiere agregar funciones o corregir errores;
pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con
mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida
de producción.

Ingeniería de Sistemas – UNSCH Página 4


Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

c. Según el paradigma de programación


• Lenguajes imperativos
Se llama lenguajes imperativos a aquellos en los cuales se le ordena a la computadora
cómo realizar una tarea siguiendo una serie de pasos o instrucciones, por ejemplo:

Paso 1, solicitar número.


Paso 2, multiplicar número por dos.
Paso 3, imprimir resultado de la operación.
Paso 4, etc,

El proceso anterior se puede realizar con un lenguaje imperativo como por ejemplo
BASIC, C, C++, Java, Clipper, Dbase, C#, PHP, Perl, etc.
Dentro de la programación imperativa, se tiene un conjunto de instrucciones que le
indican al computador cómo realizar una tarea.

• Lenguajes declarativos
Se les llama así a aquellos lenguajes de programación en los cuales se le indica a la
computadora qué es lo que se desea obtener o qué es lo que se esta buscando, por
ejemplo: Obtener los nombres de todos los empleados que tengan más de 32 años. Eso
se puede lograr con un lenguaje declarativo como SQL.

La programación declarativa es una forma de programación que implica la descripción


de un problema dado en lugar de proveer una solución para dicho problema, dejando la
interpretación de los pasos específicos para llegar a dicha solución a un intérprete no
especificado. La programación declarativa adopta, por lo tanto, un enfoque diferente al
de la programación imperativa tradicional.

En otras palabras, la programación declarativa provee el “qué”, pero deja el “cómo”


liberado a la implementación particular del intérprete.

• Lógicos
En los lenguajes lógicos se utiliza el formalismo de la lógica para representar el
conocimiento sobre un problema y para hacer preguntas que, si se demuestra que se
pueden deducir a partir del conocimiento dado en forma de axiomas y de las reglas de
deducción estipuladas, se vuelven teoremas.
Así se encuentran soluciones a problemas formulados como preguntas. Con base en la
información expresada dentro de la lógica de primer orden, se formulan las preguntas
sobre el dominio del problema y el intérprete del lenguaje lógico trata de encontrar la
respuesta automáticamente. El conocimiento sobre el problema se expresa en forma de
predicados (axiomas) que establecen relaciones sobre los símbolos que representan los
datos del dominio del problema.
El PROLOG es el primer lenguaje lógico y el más conocido y utilizado.

• Lenguajes orientados a objetos


En la Programación Orientada a Objetos (POO u OOP según siglas en inglés) se definen
los programas en términos de "clases de objetos", objetos que son entidades que
combinan estado (es decir, datos) comportamiento (esto es, procedimientos o métodos)
e identidad (propiedad del objeto que lo diferencia del resto). La programación
Ingeniería de Sistemas – UNSCH Página 5
Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

orientada a objetos expresa un programa como un conjunto de estos objetos, que


colaboran entre ellos para realizar tareas. Esto permite hacer los programas módulos
más fáciles de escribir, mantener y reutilizar.

5. PROGRAMACIÓN MODULAR
Uno de los métodos más conocidos para resolver un problema es dividir en problemas
más pequeños, llamados subproblemas. De esta manera, en lugar de resolver una tarea
compleja y tediosa, se resuelve otras más sencillas y a partir de ellas llegamos a la
solución.
Esta técnica se usa mucho en programación para resolver problemas, y se le suele
llamar diseño descendente, metodología del divide y vencerás o programación top-
down.
Esta metodología nos lleva a tratar con subproblemas, entonces también se trabaja con
subprogramas para resolver los problemas. A estos subprogramas se les suele llamar
módulos, de ahí viene el nombre de programación modular.

Ejemplo1.
Un profesor quiere crear un programa para gestionar las notas de sus alumnos. Quiere
que dicho programa le permita realizar tareas tales como asignar notas, cambiar notas,
ver las notas según distintas calificaciones, etc.

6. PROGRAMACIÓN ESTRUCTURADA
La programación estructurada permite la escritura de programas fáciles de leer y
modificar de forma clara. En un programa estructurado el flujo lógico se gobierna por
las estructuras de control básicas: secuenciales, repetitivas y selectivas. Siendo
innecesario y no permitiéndose el uso de la instrucción o instrucciones de transferencia
incondicional ( GOTO ).
a. Secuenciales: Sucesión simple de dos o mas operaciones.
b. Selectivas: bifurcación condicional de una o mas operaciones.
c. Repetitivas: Repetición de una operación mientras se cumple una condición.

Estos tres tipos de estructuras lógicas de control pueden ser combinados para producir
programas que manejen cualquier tarea de procesamiento de información.
Ingeniería de Sistemas – UNSCH Página 6
Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

Ventajas
• Los programas son más fáciles de entender, ya que pueden ser leído de forma
secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro
bloques de código para entender la lógica.
• La estructura del programa es más clara puesto que las instrucciones están más
ligadas o relacionadas entre sí.
• Reducción del esfuerzo en las pruebas. El seguimiento de las fallas ("debugging") se
facilita debido a la lógica más visible, por lo que los errores se pueden detectar y
corregir más fácilmente.
• Reducción de los costos de mantenimiento.
• Programas más sencillos y más rápidos.
• Los bloques de código son auto explicativos, lo que apoya a la documentación.

Desventajas
El principal inconveniente de este método de programación, es que se obtiene un único
bloque de programa, que cuando se hace demasiado grande puede resultar problemático
su manejo, esto se resuelve empleando la programación modular, definiendo módulos
interdependientes programados y compilados por separado. Un método un poco más
sofisticado es la programación por capas, en la que los módulos tienen una estructura
jerárquica muy definida y se denominan capas.

7. RESOLUCIÓN DE UN PROBLEMA CON LA COMPUTADORA


Éste proceso conduce ala escritura de un programa y a su ejecución en la misma. Las
fases de resolución de un problema con computadora son:

• Análisis: el problema se analiza teniendo presente la especificación de los requisitos


dados por el cliente de la empresa o por la persona que encarga el programa.
• Diseño: una vez analizado el problema se diseña una solución que conducirá a un
algoritmo que solucionará el problema.
• Codificación: la solución se escribe en la sintaxis del lenguaje de alto nivel.
• Ejecución, prueba y depuración: el programa se ejecuta, se comprueba
rigurosamente y eliminan todos los errores q pudieran aparecer.
• Mantenimiento: el programa se actualiza y modifica, cada vez que sea necesario,
de modo que se cumplan todas las necesidades de cambio de sus usuarios.
• Documentación: escritura de las diferentes fases del ciclo de vida del software,
esencialmente el análisis diseño y codificación, unidos a manuales de usuario y de
referencia así como normas para el mantenimiento.

8. HERRAMIENTAS DE PROGRAMACIÓN
Las tres herramientas más utilizadas son: diagrama de flujo, pseudocódigo y diagrama
N-S.

Diagrama de flujo.
Un diagrama de flujo (flowchart) es una representación gráfica de un algoritmo. Los
símbolos utilizados han sido normalizados por el Instituto Norteamericano de
Normalización (ANSI).

Ingeniería de Sistemas – UNSCH Página 7


Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

Terminal (representa el comienzo “Inicio” y el fina “fin”


de un programa)

Entrada/Salida (cualquier tipo de introducción de datos en


la memoria desde los periféricos “entrada” o registro de la
información procesada de un periférico “Salida”)

Proceso (Cualquier tipo de operación que pueda originar


cambio de operación.)

Decisión (Indica operación lógica de comparación entre 2


o más datos)

Conector lógico (En la misma página)

Indicador de dirección, línea de flujo.

Línea conectora

Llamada a subrutina o proceso predeterminado.

Conector lógico (En diferentes páginas)

Ingeniería de Sistemas – UNSCH Página 8


Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

Pseudocódigo
Es una herramienta de programación en la que las instrucciones se escriben en palabras
similares al inglés o español, que facilitan tanto la escritura como la lectura de de
programas.

Diagramas de Nassi - Schneiderman


El diagrama N-S o también conocido como diagrama de Chapín es una técnica de
especificación de algoritmos que combina la descripción textual, propia del
pseudocódigo, con la representación gráfica del diagrama de flujo.
Los símbolos utilizados en el diagrama de Chapín, corresponden a cada tipo de
estructura.

9. ASIGNACIÓN DE VALOR
La asignación de valor, es el modo de darle valor a una variable, se representa con el

símbolo u operador . La operación de asignación se conoce como instrucción


o sentencia de asignación cuando se refiere a un lenguaje de programación.

El formato general de una oprecaión de asignación es:

Nombre_de_a_variable expresión

Es preferible el uso de la flecha , en la redacción de algoritmos para evitar


ambigüedades.

Ejemplo1:
Después de la asignación de valores, Cuál es el valor final de la variable A.

A 3
B 4
C A+2*B
C C+B
B C-A
A C*B

En las dos primeras acciones Ay B toman los valores de 3 y 4.


C A+2*B (C= 3+2*4 =3+8=11)
C 11

La siguiente acción
C C+B (C= 11+4 =15)
C 15

En la acción
B C–A (B= 15 - 3 =12)
B 12

Ingeniería de Sistemas – UNSCH Página 9


Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

Por último
A C*B (A= 15 *12 =180)

Ejemplo2:
Cuál es el valor de X, después de las siguientes operaciones.

X 2
X CUADRADO (X+X)
X RAIZ2 (X+RAIZ2 (X) +5)

El resultado de X es 5

10. ENTRADA Y SALIDA DE INFORMACIÓN


Las operaciones de entrada permiten leer determinados valores y asignarlos a
determinadas variables. Esta entrada se conoce como operación de lectura (read). Los
datos de entrada se introducen al procesador mediante dispositivos de entrada (teclado,
unidades de disco, etc). La salida puede aparecer en un dispositivo de salida (pantalla,
impresora, etc.) La operación de salida se denomina escritura (write)

11. DISEÑO DE ALGORITMOS

Ejercicio1
Diseñar el algoritmo para la suma de dos números.

a. Pseudocódigo
1. Inicio
2. Leer X
3. Leer Y
4. Z X+Y
5. Escribir Z
6. Fin

b. Diagrama N – S

Inicio

Leer X

Leer Y

Z X+Y

Fin

Ingeniería de Sistemas – UNSCH Página 10


Ing. Jennifer Pillaca De La cruz
UNIVERSIDAD NACIONAL SAN CRISTÓBAL DE HUAMANGA
ALGORITMOS

c. Diagrama de flujo

Inicio

Leer X

Leer X

Z X+Y

Escribir Z

Fin

Ingeniería de Sistemas – UNSCH Página 11


Ing. Jennifer Pillaca De La cruz

También podría gustarte