Sei sulla pagina 1di 39

UNIVERSIDAD ESTATAL DEL SUR DE

MANAB

Excelencia Acadmica para el Desarrollo


Tema:
Fundamento de Programacin
ALUMNO:

ALAN ALEXANDER RODRIGUEZ RIZZO

PROFESOR:
Ing. Edwin Mero Lino

CARRERA:
Ing. Computacin y Redes

AULA:
B
PRIMER SEMESTRE
JIPIJAPA-MANAB-ECUADOR

2015 2016

Contenido
UNIDAD 01: FUNDAMENTO DE PROGRAMACION.............................................1
1.1 Transcripcin de Conceptos Bsicos de Fundamentos de Programacin...2
1.2 Introduccin:.......................................................................................... 2
1.3 CONCEPTO DE ALGORITMO....................................................................2
1.4 DIAGRAMA DE FLUJO................................................................................. 4
IMPORTANCIA DE LOS DIAGRAMAS DE FLUJO..............................................4
SMBOLOS UTILIZADOS EN LOS DIAGRAMAS DE FLUJO................................5
PROBLEMAS RESUELTOS CON DIAGRAMAS DE FLUJO.................................7
VENTAJAS Y DESVENTAJAS DEL MTODO DE ORDENACIN POR BURBUJA10
MTODOS DE BSQUEDA..........................................................................10
DIFERENCIAS FUNDAMENTALES ENTRE LOS MTODOS DE BSQUEDA
SECUENCIAL Y BINARIO............................................................................. 12
CONCLUSIN............................................................................................. 12
RECOMENDACIONES................................................................................. 13
1.5 LOS LENGUAJES DE PROGRAMACIN.................................................14
1.6 Interpretacin y compilacin..................................................................16
Lenguaje compilado................................................................................ 16
Algunos ejemplos de lenguajes ampliamente usados...................................16
UNIDAD 02: ALGORITMOS............................................................................. 18
2.1. Tipos de algoritmos.............................................................................. 18
Significado de algoritmo............................................................................. 18
Clasificacin y Tipos de algoritmos.............................................................18
2.2 Anlisis del Problema............................................................................ 19
2.3 REPRESENTACION DE UN ALGORITMO.................................................20
2.4 INTRODUCCIN AL DISEO DE ALGORITMOS EN
PROGRAMACIN....................................................................................... 25
2.5 Ejercicios de Aplicaciones.....................................................................32
Bibliografa.................................................................................................... 35

UNIDAD 01: FUNDAMENTO DE PROGRAMACION


1.1 Transcripcin de Conceptos Bsicos de Fundamentos de
Programacin
(Arturo Gonzlez, 2012)
Fundamentos de programacin Conjunto de Pasos para resolver un problema
Algoritmo Idioma Artificial que sirve para expresar procesos que pueden ser
llevados a cabo por maquinas Lenguaje de Programacin Conjunto de
Instrucciones que una vez ejecutadas, realizaran tareas en una computadora
Programa El proceso de Disear, codificar, depurar y mantener el cdigo fuente
de un programa computacional Programacin Forma que determinan los
Mtodos y las Herramientas que un programador usar en la construccin de
un software Paradigma de Programacin Se utiliza para crear y editar archivos
de texto sin formato Editores de Texto Traduce el Texto escrito en lenguaje de
alto nivel, una vez terminada la traduccin informa sobre posibles errores.
Lleva a cabo instrucciones escritas en lenguaje de alto nivel, lnea por lnea
(correctas) hasta finalizar Intrprete Archivo que tiene la capacidad de ser
ejecutado de forma independiente, o bien, sin ayuda de una aplicacin externa
Ejecutable.

1.2 Introduccin:
(Angel Garca-Beltrn, s.f.)
Este primer tema se dedica a los conceptos computacionales bsicos ms
relacionados con la arquitectura de los ordenadores, como su estructura fsica
y funcional, la representacin de datos, la aritmtica del ordenador y los
principios algebraicos fundamentales del diseo de circuitos. Se hace especial
hincapi en las caractersticas especficas de los ordenadores personales al ser
stos la herramienta fundamental de la mayora de los futuros ingenieros.
Adems se analizan las herramientas lgicas que permiten la comunicacin
con los elementos fsicos del ordenador, como son: los programas, los
lenguajes de programacin de bajo y alto nivel y los sistemas operativos.

1.3 CONCEPTO DE ALGORITMO


(step.hanie.prez9900, 2008)
Para ser un programador eficaz se necesita aprender a resolver problemas de
un modo riguroso y sistemtico. Los algoritmos son ms importantes que los
lenguajes de programacin o las computadoras. Un lenguaje de programacin
es tan slo un medio para expresar el algoritmo, y una computadora es slo un
procesador para ejecutarlo.
Definicin
Un algoritmo es un conjunto de tareas o pasos en una cantidad finita que se
ejecutan en un orden determinado, y para determinada situacin inicial se
resuelve el problema en un tiempo finito. Situacin algoritmo solucin inicial
Caractersticas que debe cumplir
1) Debe ser Correcto responder a lo que me piden y resolver el problema;
2) Eficiente en cuanto a recursos y tiempo
3) Claro
4) Flexible poder adaptarse a pequeos cambios de lgica
5) Preciso e indicar el orden de realizacin de cada paso
6) Estar definido: Si se sigue un algoritmo dos veces, se debe obtener el mismo
resultado cada vez
7) Ser finito: se debe terminar el algn momento; debe tener un nmero finito
de pasos.
8) Fiable o confiable: estar acorde a lo anterior en cuanto a propuesta de
solucin. La definicin de un algoritmo debe describir tres partes: entrada,
proceso y salida.
COMPONENTES DE UNA COMPUTADORA
Hardware es el conjunto de componentes fsicos de una computadora, y
software es el conjunto de programas que controlan el funcionamiento de una

computadora. El hardware de una computadora se compone de: _ La Unidad


Central de Procesos: es el conjunto de circuitos electrnicos capaces de
ejecutar algunos clculos sencillos. La potencia de una computadora depende
completamente de la velocidad y fiabilidad de la CPU. _ Memoria Central: La
informacin procesada por la CPU se almacena normalmente en la memoria
central hasta que se terminan los clculos. Los programas de computadora
tambin

se

almacenan

en

la

memoria

central.

Dispositivos

de

almacenamiento secundario (memoria auxiliar): Diferentes dispositivos tales


como discos y cintas magnticas se utilizan para almacenar grandes
cantidades de informacin. Para ser procesados por la CPU, los datos se
almacenan en dispositivos de almacenamiento secundario y luego deben
llevarse a la memoria central. _ Perifrico o dispositivos de entrada / salida:
Permiten al usuario comunicarse con la computadora.

1.4 DIAGRAMA DE FLUJO


(Mercado, s.f.)

Es un esquema para representar grficamente un algoritmo. Se basan en la


utilizacin de diversos smbolos para representar operaciones especficas, es
decir, es la representacin grafica de las distintas operaciones que se tienen
que realizar para resolver un problema, con indicacin expresa el orden lgico
en que deben realizarse.
Se les llama diagramas de flujo porque los smbolos utilizados se conectan por
medio de flechas para indicar la secuencia de operacin. Para hacer
comprensibles los diagramas a todas las personas, los smbolos se someten a
una normalizacin; es decir, se hicieron smbolos casi universales, ya que, en un
principio cada usuario podra tener sus propios smbolos para representar sus
procesos en forma de Diagrama de flujo. Esto trajo como consecuencia que
slo aquel que conoca sus smbolos, los poda interpretar. La simbologa
utilizada para la elaboracin de diagramas de flujo es variable y debe ajustarse a
un patrn definido previamente.

El diagrama de flujo representa la forma ms tradicional y duradera para


especificar los detalles algortmicos de un proceso. Se utiliza principalmente en
programacin, economa y procesos industriales.
IMPORTANCIA DE LOS DIAGRAMAS DE FLUJO
Los diagramas de flujo son importantes porque nos facilita la manera de
representar visualmente el flujo de datos por medio de un sistema de
tratamiento de informacin, en este realizamos un anlisis de los procesos
o procedimientos que requerimos para realizar un programa o un objetivo.
Por ejemplo: si nosotros queremos realizar una pizza, primero necesitamos los
ingredientes, este ya seria un proceso, luego de haber conseguido los
ingredientes necesitamos realizar la masa, este seria otro proceso, luego
realizamos la salsa, este seria otro procesos y finalmente unimos todo lo que
hemos hecho y agregamos los complemento como el jamn, el queso, etc.
Para la realizacin de esta pizza ya contamos con 4 procesos los cual
podemos desarrollar en un diagrama de flujo y unirlos en el mismo. Para as
obtener un producto final que seria nuestra pizza.
SMBOLOS UTILIZADOS EN LOS DIAGRAMAS DE FLUJO

Este se utiliza para representar el inicio o el fin de un algoritmo. Tambin puede


representar una parada o una interrupcin programada que sea necesaria
realizar en un programa.

Este se utiliza para un proceso determinado, es el que se utiliza comnmente


para representar una instruccin, o cualquier tipo de operacin que origine
un cambio de valor.

Este smbolo es utilizado para representar una entrada o salida de informacin,


que sea procesada o registrada por medio de un perifrico.

Este es utilizado para la toma de decisiones, ramificaciones, para la indicacin


de operaciones lgicas o de comparacin entre datos.

Este es utilizado para enlazar dos partes cualesquiera de un diagrama a travs


de un conector de salida y un conector de entrada. Esta forma un enlace en la
misma pgina del diagrama.

Este es utilizado para enlazar dos partes de un diagrama pero que no se


encuentren en la misma pagina.

Este es utilizado para indicar la secuencia del diagrama de flujo, es decir, para
indicar el sentido de las operaciones dentro del mismo.

Este es utilizado para representar la salida de informacin por medio de


la impresora.

Este es utilizado para representar la salida o para mostrar la informacin por


medio del monitor o la pantalla.
PROBLEMAS RESUELTOS CON DIAGRAMAS DE FLUJO

1.

Determinar si 2 nmeros son iguales o diferentes, si son diferentes


determinar cual de los 2 es el mayor.

2.

Cambiar un Caucho desinflado de un Automvil.

MTODO DE ORDENACIN POR BURBUJA


El mtodo de ordenacin por burbuja es un algoritmo de ordenamiento, que
funciona revisando cada elemento de la lista que va a ser ordenada con el
siguiente, e intercambindolos de posicin si esta est en el orden errneo. Es
estrictamente necesario realizar este proceso varias veces de modo que no
necesite mas intercambios, hasta que este ordenada. En este mtodo de
ordenacin se realiza el intercambio entre los ms grandes y los mas pequeos
(los ms grandes quedan arriba y los pequeos abajo). Estos intercambios
suceden en dos ciclos un ciclo que es interno que realiza las comparaciones y
se asegura de que en la primera revisin que los elementos mas grandes
suban a la posicin ms alta, y el otro ciclo que es un poco mas externo se
encarga de realizar las revisiones.
VENTAJAS Y DESVENTAJAS DEL MTODO DE ORDENACIN POR
BURBUJA
Ventajas:

Es bastante sencillo y el ms utilizado por su fcil comprensin


y programacin.

En un cdigo reducido se realiza el ordenamiento.

Eficaz.
Desventajas:

Es el ms ineficiente de todos los mtodos.

Consume bastante tiempo de computadora.

Requiere de muchas lecturas/escrituras en memoria.

MTODOS DE BSQUEDA
La bsqueda es una operacin que tiene por objeto la localizacin de un
elemento dentro de la estructura de datos. A menudo un programador estar
trabajando con grandes cantidades de datos almacenados en arreglos y
pudiera resultar necesario determinar si un arreglo contiene un valor que
coincide con algn valor clave o buscado.
Siendo el array de una dimensin o lista una estructura de acceso directo y a
su vez de acceso secuencial, encontramos dos tcnicas que utilizan estos dos
mtodos de acceso, para encontrar elementos dentro de un array: bsqueda
secuencial y bsqueda binaria.
Bsqueda Secuencial:
La bsqueda secuencial es la tcnica ms simple para buscar un elemento en
un arreglo. Consiste en recorrer el arreglo elemento a elemento e ir
comparando con el valor buscado (clave). Se empieza con la primera casilla del
arreglo y se observa una casilla tras otra hasta que se encuentra el elemento
buscado o se han visto todas las casillas. El resultado de la bsqueda es un
solo valor, y ser la posicin del elemento buscado o cero. Dado que el arreglo
no est en ningn orden en particular, existe la misma probabilidad de que el
valor se encuentra ya sea en el primer elemento, como en el ltimo. Por lo
tanto, en promedio, el programa tendr que comparar el valor buscado con la
mitad de los elementos del arreglo.
El mtodo de bsqueda secuencial funciona bien con arreglos pequeos o para
arreglos no ordenados. Si el arreglo est ordenado, se puede utilizar la tcnica
de alta velocidad de bsqueda binaria, donde se reduce sucesivamente la
operacin eliminando repetidas veces la mitad de la lista restante.

Ventajas.

1.

Es eficiente cuando un arreglo no esta ordenado es la nica


manera en la que se puede emplear.

Desventajas.

1.

Es muy lento.

2.

Requiere mucho tiempo, debido a que se comparan uno a uno.

Bsqueda Binaria
La bsqueda binaria es el mtodo ms eficiente para encontrar elementos en
un arreglo ordenado. El proceso comienza comparando el elemento central del
arreglo con el valor buscado. Si ambos coinciden finaliza la bsqueda. Si no
ocurre as, el elemento buscado ser mayor o menor en sentido estricto que el
central del arreglo. Si el elemento buscado es mayor se procede a hacer
bsqueda binaria en el subarray superior, si el elemento buscado es menor que
el contenido de la casilla central, se debe cambiar el segmento a considerar al
segmento que est a la izquierda de tal sitio central.

Ventajas.

1.

Es muy eficiente para realizar bsquedas en arreglos ordenados.


Desventajas.

1.

Requiere mucho tiempo en caso de que sean muchos


los valores que contenga el vector, debido a que este lo recorre todo para
encontrar el centro.

DIFERENCIAS FUNDAMENTALES ENTRE LOS MTODOS DE BSQUEDA


SECUENCIAL Y BINARIO
El mtodo secuencial y el mtodo binario se diferencian porque el mtodo
secuencial realiza una bsqueda casilla por casilla y comparndolas con el
valor que se desea, y el mtodo binario realiza una bsqueda directa en el
centro del arreglo y la compara con el valor deseado.
En el caso del mtodo de bsqueda binaria, los arreglos deben estar
nicamente ordenados, como se planteo anteriormente, por su parte el mtodo
de bsqueda secuencial o lineal, puede emplearse tanto en arreglos pequeos,
como en aquellos que no estn ordenados.
En segundo orden, podemos ver que el mtodo de bsqueda binaria, es el
mtodo ms eficiente para encontrar elementos en un arreglo ordenado, lo
contrario sucede con el mtodo de bsqueda secuencial ya que este es muy
lento, pero si los datos no estn en orden es el nico mtodo que puede
emplearse para hacer las bsquedas.
CONCLUSIN
El diagrama de flujo es uno de los principales instrumentos en la realizacin de
cualquier mtodo o sistema, ellos permiten la visualizacin de las actividades
innecesarias y verifica si la distribucin del trabajo est equilibrada.
El mtodo de Ordenacin por burbuja es la tcnica ms utilizada por su fcil
comprensin y programacin aunque consume bastante tiempo de
computadora.
En cuanto a la tcnica de ordenacin por el mtodo de burbuja, consiste en
hacer varias pasadas a travs del array. En cada pasada, se comparan parejas
sucesivas del elemento. Si una pareja esta en orden creciente (o los valores son
idnticos), se dejan los valores como estn. Si una pareja esta en orden
decreciente, sus valores se intercambian en el array.

El mtodo de bsqueda secuencial compara cada elemento del vector con el


valor a encontrar hasta que este se consiga o se termine de leer el vector
completo.
El mtodo de bsqueda binaria es uno de los mtodos eficientes para encontrar
elementos de un arreglo ordenado. El proceso comienza comparando el
elemento central del arreglo con el valor buscado.
Es fcil adaptar la bsqueda secuencial para que utilice una lista enlazada
ordenada, lo que hace la bsqueda ms eficaz. Es fcil mantener el orden
insertado cada registro en el lugar donde termina una bsqueda sin xito y cada
bsqueda termina cuando se encuentra un registro con una clave no menor
que la clave de bsqueda.
RECOMENDACIONES
Para la realizacin de un diagrama de flujo debemos tener el anlisis lgico de
lo que se quiere expresar o representar, es decir, hacer un breve razonamiento
al problema o a dicha situacin para luego ser representada en diagrama de
flujo. Adems de que los diagramas de flujo deben escribirse de arriba hacia
abajo, y de izquierda a derecha. Debemos conocer bien los conectores
y smbolos que son utilizados en la resolucin de problemas ya sea para conocer
el comienzo o el fin del diagrama y saber como fluye la solucin del problema.
Realizar los smbolos y unirlos con lneas, las cuales tienen en la punta una
flecha que indica la direccin que fluye la informacin de los procesos, se deben
utilizar solamente lneas de flujos horizontales o verticales, pero nunca
diagonales.
Nunca deben quedar lneas de flujo sin conectar. Todo texto escrito dentro de
un smbolo debe ser legible, preciso, evitando el uso de muchas palabras.
Utilizar y asignar valores que sean precisos ya que no se deben de admitir
ambigedades en la realizacin de los diagramas. Tratar de que
el procedimiento sea genrico para que pueda ser usado con cualquier tipo de
valor numrico. Tener en cuenta que el smbolo para las operaciones de
asignacin en este caso el rectngulo y cualquier smbolo de entrada y salida

puedan ser precedidos de una o varias flechas, pero solo pueden ser seguidos
por una. Las flechas de flujo no deben cruzarse.

1.5 LOS LENGUAJES DE PROGRAMACIN


El procesador debe ser capaz de interpretar el algoritmo, lo que significa:
-Comprender las instrucciones de cada paso;
-Realizar las operaciones correspondientes.
Semntica: Significado, interpretacin de lo que la sintaxis est expresando.
Sintaxis: Combinacin entre cierta
Simbologa o signos, y palabras clave (Que no sean ambiguas).Los principales
tipos de lenguajes utilizados en la actualidad son tres:
Lenguaje mquina;
Lenguaje de bajo nivel (ensamblador)
Lenguaje de alto nivel.
Instrucciones a la computadora
El trmino instruccin (operacin realizable) se suele referir a los lenguajes
mquina y bajo nivel, reservando el trmino sentencia o proposicin para los
lenguajes de alto nivel. Las instrucciones bsicas y comunes a todos los
lenguajes de programacin se pueden condensar en cuatro grupos:
Instrucciones de entrada / salida: Instrucciones de transferencia de informacin
entre dispositivos perifricos y la memoria central;
Instrucciones aritmticas / lgicas: Instrucciones que ejecutan operaciones
aritmticas y lgicas;
Instrucciones selectivas: Instrucciones que permiten la seleccin de tareas
alternativas

en

condicionales;

funcin

de

los

resultados

de

diferentes

expresiones

Instrucciones repetitivas:

Instrucciones que

permiten

la

repeticin

de

secuencias de instrucciones un nmero determinado o indeterminado de veces.


El que se lleve a cabo una instruccin se denomina ejecucin.
Los lenguajes de programacin son herramientas que nos permiten crear
programas y software. Entre ellos tenemos Delphi, Visual Basic, Pascal, Java,
etc...
Una computadora funciona bajo control de un programa el cual debe estar
almacenado en la unidad de memoria; tales como el disco duro.
Los lenguajes de programacin de una computadora en particular se conocen
como cdigo de mquinas o lenguaje de mquinas. (Programacin, s.f.)
John Von Neumann desarroll el modelo que lleva su nombre, para describir
este concepto de "programa almacenado". En este modelo, se tiene una
abstraccin de la memoria como un conjunto de celdas, que almacenan
simplemente nmeros. Estos nmeros pueden representar dos cosas: los
datos, sobre los que va a trabajar el programa; o bien, el programa en s.
(Mendez, s.f.)
Un lenguaje de programacin" es un lenguaje diseado para describir el
conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto,
un lenguaje de programacin es un modo prctico para que los seres humanos
puedan dar instrucciones a un equipo.
Los lenguajes que los equipos usan para comunicarse entre ellos no tienen
nada que ver con los lenguajes de programacin; se los conoce
como protocolos de comunicacin. Se trata de dos conceptos totalmente
diferentes. Un lenguaje de programacin es muy estricto:
A CADA instruccin le corresponde UNA accin de procesador.

El lenguaje utilizado por el procesador se denomina lenguaje mquina. Se trata


de datos tal como llegan al procesador, que consisten en una serie de 0 y 1
(datos binarios).
Por lo tanto, un lenguaje de programacin tiene varias ventajas:

es mucho ms fcil de comprender que un lenguaje mquina:

permite mayor portabilidad, es decir que puede adaptarse fcilmente


para ejecutarse en diferentes tipos de equipos.

Lenguaje de programacin imperativo


Un lenguaje imperativo programa mediante una serie de comandos, agrupados
en bloques y compuestos de rdenes condicionales que permiten al programa
retornar a un bloque de comandos si se cumple la condicin.
Lenguaje de programacin funcional
Un

lenguaje

de

programacin

funcional(a

menudo

llamado

lenguaje

procedimental) es un lenguaje que crea programas mediante funciones,


devuelve un nuevo estado de resultado y recibe como entrada el resultado de
otras funciones. Cuando una funcin se invoca a s misma, hablamos de
recursividad.

1.6 Interpretacin y compilacin


Los lenguajes de programacin pueden, en lneas generales, dividirse en dos
categoras:
lenguajes interpretados
lenguajes compilados

Lenguaje compilado
Un programa escrito en un lenguaje "compilado" se traduce a travs de un
programa anexo llamado compilador que, a su vez, crea un nuevo archivo
independiente que no necesita ningn otro programa para ejecutarse a s
mismo. Este archivo se llama ejecutable.
Algunos ejemplos de lenguajes ampliamente usados
A continuacin, encontrar una breve lista de los lenguajes de programacin
actuales:
Lenguaje

Principal rea de aplicacin

Compilado/interpretado

ADA

Tiempo real

Lenguaje compilado

BASIC

Programacin para fines educativos

Lenguaje interpretado

Programacin de sistema

Lenguaje compilado

C++

Programacin de sistema orientado a Lenguaje compilado


objeto

Cobol

Administracin

Lenguaje compilado

Fortran

Clculo

Lenguaje compilado

Java

Programacin orientada a Internet

Lenguaje intermediario

MATLAB

Clculos matemticos

Lenguaje interpretado

Clculos

Clculos matemticos

Lenguaje interpretado

LISP

Inteligencia artificial

Lenguaje intermediario

Pascal

Educacin

Lenguaje compilado

PHP

Desarrollo de sitios web dinmicos

Lenguaje interpretado

Inteligencia artificial

Inteligencia artificial

Lenguaje interpretado

Perl

Procesamiento

matemticos

de

cadenas

de Lenguaje interpretado

caracteres

(benchmark, s.f.)

UNIDAD 02: ALGORITMOS


2.1. Tipos de algoritmos
Significado de algoritmo
(tiposde.org, s.f.)
Qu es un algoritmo? Se denomina algoritmo a una combinacin de pasos
lgicos dispuestos de forma organizada para resolver un problema. Los
algoritmos ayudan a ordenar el trabajo en numerosas disciplinas. En
informtica se utilizan para expresar las instrucciones con las que se realizan
las funciones, y se suele expresar mediante diferentes tipos de diagrama. El

esquema ms conocido es el diagrama de flujo, que muestra paso por paso


como se debe proseguir, y principalmente, las preguntas que el operador se
debe hacer para proseguir con el siguiente paso y as llegar al final del proceso.
Si algn paso falla, el algoritmo permite retroceder ordenadamente la cantidad
de pasos que sean necesarios para corregir el error.
Clasificacin y Tipos de algoritmos
Se ha clasificado a los algoritmos de diversas formas, de acuerdo con algunos
de sus atributos. Por ejemplo:
A) Segn el sistema de signos con el que describen los pasos a seguir, se
reconocen:
Algoritmos cualitativos: cuando se hace a travs de palabras, es decir, las
instrucciones son verbales. Sucede, por ejemplo, con recetas de cocina.
Algoritmos cuantitativos: cuando se hace a travs de clculos numricos. Se
puede hacer un algoritmo, por ejemplo, para obtener la raz cuadrada de un
nmero.
B) Segn su funcin, los algoritmos pueden ser:
Algoritmos de ordenamiento: secuencian los elementos que ingresan a partir
de un cierto orden, en general, segn un orden numrico o lxico.
Algoritmos de bsqueda: al contrario de realizar operaciones o secuenciar
elementos, se dedica a encontrar dentro de una lista que ingresa, uno o varios
elementos en particular que cumplan con el conjunto de condiciones dadas.
Algoritmos de encaminamiento: deciden de qu modo se deber transmitir algo
que llega, y cmo seguir un conjunto de pasos encadenados. Se dividen
fundamentalmente entre adaptativos y estticos, los primeros con cierta
capacidad de aprendizaje y ajuste a la circunstancia, mientras que los
segundos funcionan mecnicamente, siempre del mismo modo. Es importante
decir que los algoritmos de encaminamiento cuentan con una propia
subdivisin, segn el camino que se toma para que la transmisin llegue de
manera efectiva (ejemplos de estos tipos son: por el camino ms corto, de
manera ptima, basado en el flujo, etc.).

C) Tambin los algoritmos han sido clasificados segn la estrategia que se


utiliza para llegar al resultado. Veamos algunos ejemplos:
Algoritmos probabilsticos: no se puede estar seguro de la exactitud de la
respuesta que darn. Se agrupan en distintos subtipos, pero con esa premisa:
o bien presentan soluciones aproximadas del problema, o bien presentan
soluciones que pueden ser correctas pero tambin errneas.

Algoritmo cotidiano: es el que se da en la vida comn de las personas, no se


aplica en sistemas informticos ni en nada ajeno al da a da. Muchas de las
decisiones que se toman desde que uno se despierta por la maana
pertenecen a este grupo.
Algoritmo heurstico: abandona alguno de los objetivos como recurso para
terminar llegando a la solucin. En general, son utilizados cuando no existe una
solucin mediante las vas tradicionales.
Algoritmo de escalada: se comienza con una solucin insatisfactoria (que no
cumple la entrada y la salida), y se la va modificando aproximndose a lo que
se busca. En algn momento, estaremos cerca de (o llegaremos a) la solucin
correcta.
Algoritmo voraz: Con la idea de llegar a una solucin ptima definitiva, elige
analizar cada paso como nico y elegir la solucin ptima para ese paso.
Algoritmo determinista: es completamente lineal (cada paso tiene un paso
sucesor y un paso predecesor) y por lo tanto predictivo, si se conocen sus
entradas y su forma de proceder. El algoritmo de Euclides, que permite
averiguar el mximo comn divisor entre dos nmeros, responde a este tipo.
Se distinguen de los no deterministas, donde el algoritmo tiene un
comportamiento en forma de rbol.

2.2 Anlisis del Problema


(Alex, 2014)

El anlisis del problema es la fase fundamental para resolver un


problema. Esta fase requiere normalmente el mximo de imaginacin y
creatividad por parte del programador o del analista.
Se analiza teniendo presente la especificacin de los requerimientos dados por
el cliente de la empresa o por la persona que encarga el problema.

Acciones que debe tener el anlisis del problema:


ENTRADA PROCESO SALIDA
Entrada: el objetivo de este paso es determinar los datos que se utilizaran para
resolver el problema.
Proceso: el objetivo es graficar el Procesamiento de Datos, que permita
identificar las entradas y salidas de cada uno de los procesos.

Salida: El objetivo es definir las salidas que tendr el problema referente a las
necesidades detectadas.

Pasos que se deben realizar:


Se debe examinar cuidadosamente el problema a fin de identificar qu tipo de
informacin se necesita producir (Salida)
A continuacin debe identificar aquellos elementos de informacin dados en el
problema, que puedan ser tiles para obtener solucin (Entrada y datos
adicionales)
Luego, identificar los procedimientos necesarios que permitan transformar los
datos de entrada en salida (Proceso).

Crear el Identificador:
En este paso se crearan las variables, identificar el tipo de variables o
constante y aplicarn las frmulas que se vieron en el tema Expresiones.

2.3 REPRESENTACION DE UN ALGORITMO


(monografias.com, s.f.)
Los algoritmos pueden ser expresados de muchas maneras, incluyendo al
lenguaje natural, pseudocdigo, diagramas de flujo y lenguajes de
programacin entre otros. Las descripciones en lenguaje natural tienden a ser
ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita muchas
ambigedades del lenguaje natural. Dichas expresiones son formas ms
estructuradas para representar algoritmos; no obstante, se mantienen
independientes de un lenguaje de programacin especfico.
La descripcin de un algoritmo usualmente se hace en tres niveles:
1.Descripcin de alto nivel. Se establece el problema, se selecciona un modelo
matemtico y se explica el algoritmo de manera verbal, posiblemente con
ilustraciones y omitiendo detalles.
2.Descripcin formal. Se usa pseudocdigo para describir la secuencia de
pasos que encuentran la solucin.
Implementacin. Se muestra el algoritmo expresado en un lenguaje de
programacin especfico o algn objeto capaz de llevar a cabo instrucciones.
Tambin es posible incluir un teorema que demuestre que el algoritmo es
correcto, un anlisis de complejidad o ambos.

Los algoritmos pueden ser creados de dos formas:

1)Seudocdigo.- Es un conjunto pequeo y claro de instrucciones; en


secuencia, que permite llevar a cabo una tarea.
2)Diagrama de flujo.- Es la representacin de la secuencia, a travs de
smbolos, de la tarea que se va a realizar.
Un ejemplo de algoritmo es el que realizamos para cambiar una llanta a un
automvil:
Inicio
Aflojar tornillos de las llantas
levantar el coche con el gato
Sacar los tornillos de las llantas
Quitar la llanta
Poner la llanta de repuesto
Poner los tornillos
Bajar el gato
Apretar los tornillos
fin
Definicin
Mucho se habla del pseudocdigo en las carreras de Analista de Sistemas y
Programacin. Pero no existe mucha bibliografa al respecto.
Comencemos aclarando que no es una forma de programacin. Se trata de
una herramienta que los analistas de sistemas utilizan para comunicar a los
programadores la estructura del programa que van a realizar, de forma de tener
una
idea
bien
clara
de
lo
que
se
necesita
programar.
Digamos que el pseudo cdigo es una forma de diagramar un algoritmo para
resolver un determinado problema, sin atenerse a ningn lenguaje de
programacin en especial.
Un algoritmo es un conjunto de procedimientos que permiten resolver un
problema.
En vez de escribir el programa directamente en un lenguaje de programacin
determinado (C, Basic, etc.), crearemos un borrador entendible para todos,
para luego de tener bien en claro lo que se debe hacer, pasar a la
programacin propiamente dicha.

El pseudo cdigo se refiere a crear un cdigo para orientar a los


programadores, pero sin la sintaxis ni la estructura propia de ningn lenguaje.
Utilizacin en la prctica
En el trabajo de un analista de sistemas, una de las partes ms trabajosas es la
de determinar que es lo que necesitan de un sistema los usuarios finales. Se
dedican muchas horas a hacer un relevamiento de los datos que sern
necesarios, los tipos de procesamientos, las salidas, etc. Y debe existir una
realimentacin entre el diseo y el usuario, para garantizar que el sistema
cumpla con los requisitos del usuario.

Supongamos que tenemos un sistema para una empresa que utiliza una
interfaz grfica en Visual Basic, algunas aplicaciones especficas en C, y
pginas PHP para trabajo va Internet. Seguramente que crear un diagrama
especfico para cada lenguaje sera una tarea tediosa.Gracias a esta
herramienta, podemos reunir a todos los programadores, dar las pautas de
trabajo, y mediante el pseudo cdigo, cada programador sabr lo que hace el
sistema, y podr escribir el cdigo correspondiente.
Incluso dos programadores que dominen el mismo lenguaje pueden tener
metodologas de trabajo distintas. Un problema puede ser resuelto de muchas
maneras, cada una ms o menos eficiente que la otra, pero todas cumplen con
el objetivo.

El pseudo cdigo elimina estas diferencias, dando libertad a los programadores


para que puedan ajustarse a su metodologa de trabajo.
Generalmente, este cdigo se escribe con la participacin de todos los
programadores. Esto representa la ventaja de que muchas opiniones ayudan a
elegir la mejor entre todas, logrando una solucin efectiva y eficaz al problema
planteado.
Ejemplo

2) EXPRESAR UN ALGORITMO CON UN DIAGRAMA DE FLUJO

DIAGRAMA DE FLUJO
Es un esquema para representar grficamente un algoritmo. Se basan en la
utilizacin de diversos smbolos para representar operaciones especficas, es
decir, es la representacin grafica de las distintas operaciones que se tienen
que realizar para resolver un problema, con indicacin expresa el orden lgico
en que deben realizarse.
Se les llama diagramas de flujo porque los smbolos utilizados se conectan por
medio de flechas para indicar la secuencia de operacin. Para hacer
comprensibles los diagramas a todas las personas, los smbolos se someten a
una normalizacin; es decir, se hicieron smbolos casi universales, ya que, en
un principio cada usuario podra tener sus propios smbolos para representar
sus procesos en forma de Diagrama de flujo. Esto trajo como consecuencia
que slo aquel que conoca sus smbolos, los poda interpretar. La simbologa
utilizada para la elaboracin de diagramas de flujo es variable y debe ajustarse
a un patrn definido previamente.

El diagrama de flujo representa la forma ms tradicional y duradera para


especificar los detalles algortmicos de un proceso. Se utiliza principalmente en
programacin, economa y procesos industriales.
Para realizar los diagramas de flujo utilizamos distintas figuras geomtricas en
forma de caja de texto, que sirven para distinguir el tipo de tareas que se
ejecutan, las flechas indican el flujo del proceso y se valen de determinada
simbologa especfica para facilitar su comprensin
Por otra parte, un algoritmo consta de tres partes, secciones mdulos
principales, en la siguiente figura podemos observar las secciones que
constituyen un algoritmo.

El mdulo 1.- representa la operacin o accin que permite el ingreso de los


datos del programa.
El mdulo 2.- representa la operacin o conjunto de operaciones secuenciales,
cuyo objetivo es obtener la solucin al problema.
El mdulo 3.- representa una operacin o conjunto de operaciones que
permiten comunicar al exterior el o los resultados alcanzados.

2.4

INTRODUCCIN

PROGRAMACIN
(htt7)

AL

DISEO

DE

ALGORITMOS

EN

Recordemos ahora el esquema de pasos lgicos para realizar un programa que


es habitual estudiar cuando empezamos a hablar de fundamentos de
programacin, y que nos permite saber dnde estamos.

Si comparamos esta situacin con la que constatbamos en etapas anteriores


comprobaremos que No nos hemos movido! Bueno, esto de no nos hemos
movido suena un poco decepcionante y no es demasiado justo. Si recordamos
la analoga con la construccin de un edificio, vendra a significar que no
hemos empezado a construir el edificio. En cambio, tenemos el proyecto muy
avanzado, lo cual es sin duda una satisfaccin.
Si consideramos el esquema anterior no slo con sus pasos, sino tambin con
los volmenes de trabajo correspondientes, podramos tener algo as:

Si invertimos la figura para poner como base los pasos iniciales (el sombreado
indica el nivel de desarrollo en que nos encontraramos si venimos siguiendo
los cursos de bases de la programacin de aprenderaprogramar.com):

Visto as la cuestin es un poco ms alentadora: estamos terminando la


definicin de nuestra base, cuya solidez y tamao siempre ser deseable
seguir aumentando en el futuro, para a continuacin ver cmo plasmar
nuestros desarrollos en un ordenador.
Titulamos el epgrafe como Diseo de algoritmos. No hemos hablado hasta
ahora de diseo de algoritmos? Por supuesto que s. Llevamos mucho tiempo
hablando de diseo de algoritmos. Ya decamos cuando se introdujo el
concepto de algoritmo que este trmino casi se confunde con el de programa.
Del mismo modo, el concepto de diseo de algoritmos casi se confunde con el
de programacin. No podemos entonces aqu, en unas pocas pginas, tratar de
condensar las supuestas pautas para el correcto diseo de algoritmos.
Llevamos trabajando en ello todo el tiempo a lo largo del curso. Cuando
hablbamos de eficiencia nos referamos a diseo, cuando hablbamos del
nombre de variables nos referamos a diseo, cuando hablbamos de
estructuras, de control de flujo, de mdulos, en fin... todo. Hablbamos de
diseo.

Cul es el objetivo ahora de proponer un apartado como diseo de


algoritmos?
Pues por un lado, el servir de alto en el camino, de reflexin sobre distintas
cosas de las que se ha hablado. Y por otro, introducir nuevas herramientas o
enfoques que quizs ms que aumentar nuestro bagaje de recursos, lo que
hacen es darle una mayor potencialidad al mismo. El motor ser el mismo, pero
vamos a desarrollar modificaciones para multiplicar su potencia.

PROGRAMAR,

RESOLVER

PROBLEMAS.

RESOLVER

PROBLEMAS,

PROGRAMAR.
No es casualidad el que dediquemos tiempo en nuestros cursos a Conocer el
problema a resolver. Una de las identidades que en muchas ocasiones
podemos establecer es:
Programar = Resolver problemas

El concepto de resolucin de problemas tiene sus orgenes probablemente en


los albores de la humanidad y del pensamiento. Es algo mucho ms antiguo
que la informtica, y an que las matemticas, que ya de por s tienen orgenes
remotos. Las tcnicas y el entrenamiento mental para resolver problemas son
aspectos del conocimiento, en trminos genricos, de indudable importancia.
Sin embargo, es raro que en la universidad o en los centros de enseanzas
medias se dedique tiempo suficiente a ello, lo cual sera deseable.
El programador habr de aplicar conocimientos especficos del saber
informtico que posea, pero tambin estrategias y enfoques que son vlidos
para cualquier disciplina.
El filsofo francs Ren Descartes (1596 1650) dedic parte de su tiempo al
estudio del conocimiento y a la bsqueda de mtodos para su desarrollo. En su
Reglas para la direccin del espritu escriba (Regulae ad directionem ingenii.
Reglas para la direccin del espritu. Ren Descartes. Traduccin de Juan
Manuel Navarro Cordn. Ed. Alianza. Madrid 2003.):

Dice en la regla IV: Los mortales estn posedos por una curiosidad tan ciega
que con frecuencia conducen sus espritus por vas desconocidas, sin motivo
alguno de esperanza, sino tan slo para tantear si se encuentra all lo que
buscan: como alguien que ardiese en tan estpido deseo de encontrar un
tesoro, que vagase continuamente por las calles, tratando de encontrar por
casualidad alguno [...] No niego que algunas veces vagan tan felizmente que
encuentran algo de verdad [...]

As pues entiendo por mtodo reglas ciertas y fciles, mediante las cuales el
que las observe exactamente no tomar nunca nada falso por verdadero.

Regla V: Todo el mtodo consiste en el orden y disposicin de aquellas cosas a


las que se ha de dirigir la mirada de la mente a fin de que descubramos alguna
verdad. Y la observaremos exactamente si reducimos gradualmente las
proposiciones complicadas y oscuras a otras ms simples, y si despus
intentamos ascender por los mismos grados desde la intuicin de las ms
simples hasta el conocimiento de todas las dems.

Dice en la regla V: [...] Esta regla ha de ser seguida por el que ha de


emprender el conocimiento de las cosas no menos que el hilo de Theseo
Regla II: Conviene ocuparse tan slo de aquellos objetos, sobre los que
nuestros espritus parezcan ser suficientes para obtener un conocimiento cierto
e indudable.

Regla IV: El mtodo es necesario para la investigacin de la verdad de las


cosas.

por quien ha de entrar en el laberinto [...] Muchos [...] con frecuencia examinan
las cuestiones ms difciles tan desordenadamente, que me parecen obrar del

mismo modo que si intentaran llegar de un solo salto desde la parte ms baja
de un edificio hasta la ms alta [...]

Regla VII: Para completar la ciencia es preciso recorrer en un movimiento


continuo e ininterrumpido del pensamiento todas y cada una de las cosas que
conciernen a nuestro propsito, y abarcarlas en una enumeracin
suficientemente ordenada.

Regla X: Para que el espritu se vuelva sagaz debe ejercitarse en buscar las
mismas cosas que ya han sido descubiertas por otros, y en recorrer con
mtodo incluso los ms insignificantes artificios de los hombres, pero sobre
todo aquellos que explican el orden o lo suponen.

Regla XIII: Si entendemos perfectamente una cuestin, debemos abstraerla de


todo concepto superfluo, reducirla a la mayor simplicidad y dividirla en las
partes ms pequeas que se pueda enumerndolas.

Dice la regla XIII: [...] Dada una cuestin cualquiera, es preciso esforzarse ante
todo por comprender [...] lo que se busca.

Pues frecuentemente algunos de tal modo se apresuran en investigar los


problemas, que aplican a su solucin un espritu ligero [...]

Son tan ineptos como un criado que, enviado a algn sitio por su amo [...] se
apresurase a correr sin haber recibido an las rdenes y no sabiendo adnde
se le mandaba ir.

Regla XVI: En cuanto a las cosas que no requieren la atencin presente de la


mente, incluso si son necesarias para la conclusin, es mejor designarlas por
medio de signos muy breves que por figuras completas: pues as la memoria
no podr fallar, mientras que adems el pensamiento no se distraer en
retenerlas, cuando se dedique a deducir otras.
Dice la regla XVI: [...] los calculistas acostumbran a designar cada una de las
magnitudes por medio de varias unidades o por medio de algn nmero, y que
nosotros en cambio en este lugar hacemos abstraccin de los nmeros
mismos* [...]

[...] Una vez que la hemos buscado expresada en trminos generales, conviene
someterla a los nmeros dados [...] Todo esto lo distinguimos nosotros, que
buscamos un conocimiento evidente y distinto de las cosas, pero no los
calculistas, que se quedan satisfechos con tal que se les presente la suma
buscada, aun cuando no se den cuenta de qu modo sta dependa de los
datos, en lo cual slo, sin embargo, consiste propiamente la ciencia.

Hemos trado este texto de Descartes a colacin porque es sorprendentemente


actual y aplicable a la programacin, incluso teniendo en cuenta que por esa
poca an faltaban siglos para el nacimiento de la informtica. Lo errtico del
tanteo sin reflexin previa, la necesidad de dividir el problema en partes ms
simples... Nada de eso es nuevo! La programacin tiene entre sus bases la
resolucin de problemas y la actividad mental humana: es ciencia, arte,
filosofa... quizs todas y cada una de las vertientes del pensamiento
humano.La bsqueda de soluciones a problemas es uno de los motores que
mueve al hombre hasta acercarlo al apasionamiento, al reto. Programar es
apasionante, una partida de ajedrez contra el ordenador, o mejor dicho, contra
nosotros mismos... un reto. Es difcil comprender la pasin que puede
despertar una partida de ajedrez y cmo un jugador puede sentirse tan dentro
de ella como para sentir dolor, rabia o placer en funcin del desarrollo de los
movimientos. No es una mala estrategia para aproximarse a la programacin,

para no entenderla como una actividad intelectual desesperante y compleja;


considerarla un reto nos ayudar a tener en cuenta que no debemos
precipitarnos, a dedicarle tiempo, mtodo y a sentirnos satisfechos con
nuestros desarrollos.Dar igual la escasa trascendencia de lo que vayamos a
programar. Si lo asumimos como un reto personal, la motivacin ser
suficiente.
Estudiar la creacin de algoritmos es intelectualmente ms interesante que
estudiar la creacin de programas usando un lenguaje concreto, precisamente
porque el carcter de reto es mucho ms ntido. Desarrollar la ingeniera del
motor de un coche es ms complicado y apasionante que el trabajo mecnico
de montarlo. Sin desdear que tanto una cosa como otra son necesarias para
alcanzar el objetivo final.
Si en la programacin interviene la resolucin de problemas (la actividad
mental humana) no es de extraar que se vea afectada por factores
variopintos. Entre ellos la capacidad intrnseca del programador, sus
conocimientos, su entrenamiento, sus hbitos o costumbres, sus ideas o
creencias, sus inclinaciones personales, su estado emocional, su actitud, su
autoconfianza y autoestima, etc. Y todo ello a su vez se ve influido por factores
externos como la cultura, el ambiente, las modas, las convenciones impuestas
por los estudiosos o la comunidad de programadores. El estudio de todos estos
factores es sin duda interesante: conocer nos hace libres, nos permite tener
conclusiones propias. Dado que abarcar tantos elementos de estudio excede
nuestros objetivos, vamos a centrarnos en algunos aspectos del conocimiento
humano que nos sern de utilidad como programadores. Y empezaremos
hablando de la abstraccin de los problemas y la aprehensin de los
problemas.

2.5 Ejercicios de Aplicaciones


C alcular lo s in ter valo s de cre cimie n to y de cr e cimie nto de las
funcio ne s si guie nte s:

(virtuto, s.f.)

Bibliografa
(s.f.). Obtenido de http://www.aprenderaprogramar.com/index.php?
option=com_content&view=article&id=247:diseno-de-algoritmos-enprogramacion-del-pseudocodigo-al-programa-resolucion-deproblemas-cu00224a&catid=36:curso-qbases-de-la-programacionnivel-iiq&Itemid=60
Alex. (04 de 05 de 2014). claseinfo. Obtenido de
http://claseinfo.blogia.com/2007/032701-analisis-del-problema.php
Angel Garca-Beltrn, R. M. (s.f.). Open Course Ware. Recuperado el 28 de
octubre de 2015, de Open Course Ware: http://ocw.upm.es/ciencia-dela-computacion-e-inteligencia-artificial/fundamentosprogramacion/contenidosteoricos/ocwfundamentosprogramaciontema
1.pdf/view
Arturo Gonzlez, F. (22 de Septiembre de 2012). prezi. Recuperado el 28 de
octubre de 2015, de prezi: https://prezi.com/dkstnjtqh5sc/conceptosbasicos-de-fundamentos-de-programacion/
benchmark, c. (s.f.). ccmbenchmark. Obtenido de ccmbenchmark:
http://es.ccm.net/contents/304-lenguajes-de-programacion
cibercrazy5000. (s.f.). monografias.com. Obtenido de
http://www.monografias.com/trabajos15/algoritmos/algoritmos.shtml
Mendez, J. (s.f.). monografias.com. Obtenido de monografias.com:
http://www.monografias.com/trabajos/lengprog/lengprog.shtml
Mercado, W. (s.f.). monografias. Obtenido de
http://www.monografias.com/trabajos59/diagrama-flujo/diagramaflujo2.shtml

monografias.com. (s.f.). Yordi Jaziel. Obtenido de


http://algoritmos021415.blogspot.com/2012/04/representacion-de-unalgoritmo.html
Programacin, L. d. (s.f.). Lenguajes de Programacin. Obtenido de
Lenguajes de Programacin: http://www.lenguajes-deprogramacion.com/lenguajes-de-programacion.shtml
step.hanie.prez9900. (16 de Noviembre de 2008). scribd. Recuperado el 28
de octubre de 2015, de scribd:
http://es.scribd.com/doc/8032086/fundamentos-de-programacionalgoritmos-y-estructura-de-datos#scribd
tiposde.org. (s.f.). Obtenido de http://www.tiposde.org/ciencias-exactas/843tipos-de-algoritmos/
virtuto. (s.f.). Obtenido de http://www.vitutor.com/fun/5/a_a.html

Potrebbero piacerti anche