Documentos de Académico
Documentos de Profesional
Documentos de Cultura
UTESA
Facultad de Arquitectura e Ingeniería
Departamento de Informática
MANUAL DE LABORATORIO
INTRODUCCIÓN A LOS ALGORITMOS COMPUTACIONALES
(INF-117)
Contenido
I. INTRODUCCIÓN................................................................................................................. 01
II. PROGRAMA DE LA ASIGNATURA ................................................................................ 03
III. PLANIFICACION DE LA ASIGNATURA ....................................................................... 07
IV. UNIDAD I: INTRODUCCIÓN A LOS SISTEMAS COMPUTACIONALES .................... 08
4.1. La informática............................................................................................................... 09
4.1.1.Conceptos de informática............................................................................................... 10
4.1.2.Importancia de la informática ........................................................................................ 10
4.1.3.Origen del término informática ...................................................................................... 12
4.2. La computadora............................................................................................................ 13
4.2.1.Importancia de la computadora en otras áreas ............................................................. 16
4.2.2.Historia de la computadora ............................................................................................ 17
4.2.3.Clasificación y tipos de computadoras ........................................................................... 31
4.3. El software (los programas) ........................................................................................... 32
4.3.1.Clasificación del software ............................................................................................... 33
4.3.2.Resolución de problemas y desarrollo de software ....................................................... 34
4.4. Internet y Word Wide Web ........................................................................................... 35
4.4.1.Historia e importancia .................................................................................................... 37
4.4.2.Servicios disponibles ....................................................................................................... 42
4.4.3.Navegadores y buscadores ............................................................................................. 43
4.4.4.Correo electrónico (e-mail)............................................................................................. 46
4.5. PREGUNTAS DE INVESTIGACION Y REPASO .................................................................................. 49
6.5.2.Operadores ..................................................................................................................... 83
6.5.3.Definición de Variables ................................................................................................... 85
6.5.4.Estructuras de control .................................................................................................... 87
6.5.5.Ejemplos.......................................................................................................................... 91
6.6. Descripción del algoritmo (Pseudocódigo) ..................................................................... 96
6.6.1.Estructura general de un seudocódigo ........................................................................... 97
6.6.2.Ejemplos.......................................................................................................................... 109
6.7. EJERCICIOS DE PROGRAMACION (SEUDOCODIGO Y DIAGRAMAS DE FLUJO)........................ 113
I. INTRODUCCIÓN
Este manual es una guía para estudiantes que se estén iniciando en las carreras de
Ingenierías, más específicamente en la programación de computadoras. El contenido que
aborda este manual, permite al estudiante conocer y entender los conceptos elementales de la
informática y las técnicas básicas de la programación de computadoras; basado en la idea de
introducir al estudiante a la programación por medio de planteamientos de problemas y
métodos que le ayuden a desarrollar la lógica y poder implementarla en creación de
aplicaciones.
El manual ofrece una visión general al estudiante sobre los siguientes tópicos: introducción a
los sistemas computacionales y la informática, el procesamiento de datos y las técnicas de
programación como: diagramas de flujo y pseudocódigo, de manera que el estudiante pueda
tener una mejor comprensión de los pasos lógicos de un algoritmo. Al final se describe una
herramienta o programa que el estudiante puede utilizar como apoyo para la construcción y
prueba de sus diagramas de flujo.
El objetivo primordial de este manual es orientar y servir de guía al estudiante en todo lo
relacionado con la construcción de diagramas de flujo y pseudocódigos que le permitan
entender los pasos lógicos a desarrollar en un programa para resolver problemas reales de la
vida diaria y las ingenierías. Además, el estudiante también podrá:
El manual está dirigido a los estudiantes del curso Introducción a los Algoritmos
Computacionales, de las carreras de ingenierías de la Universidad Tecnológica de Santiago
(UTESA), el cual pretende ser el instrumento básico de apoyo tanto para el instructor, como
para los participantes en el mismo.
1
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Muchas Gracias.
2
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Año
Nombre Asignatura Elaboración Código No. de créditos
INTRODUCCIÓN A LOS 2015 INF-117 4
ALGORITMOS
COMPUTACIONALES
Prerrequisitos:
Introducción
Esta asignatura ofrece una visión general al estudiante sobre los siguientes tópicos:
ciclos de procesamiento de datos, diagramas de flujo para mejor comprensión de los
pasos lógicos de un algoritmo, codificación en un lenguaje de programación como
introducción a lo que sería la asignatura Programación I, programas ejemplos y tareas.
Justificación
La justificación de esta asignatura se basa en que tiene un perfil eminentemente
Teórico práctico, basado en la idea de introducir los estudiantes a la programación por
medio de los planteamientos de problemas reales y métodos que le ayude a desarrollar
la lógica y poder implementarla en creación de aplicaciones.
Competencias
• Capacidad para la resolución de los problemas matemáticos que puedan
plantearse en la ingeniería
• Capacidad para desarrollar un pensamiento lógico, identificar el proceso de
creación de un programa y desarrollo de algoritmos para resolver problemas.
• Conocimientos fundamentales sobre herramientas básicas y técnicas de
programación.
• Capacidad para aprender de manera autónoma nuevos conocimientos y técnicas
adecuados para la concepción, el desarrollo o la explotación de sistemas.
• Capacidad de conocer técnicas de resolución e idear procedimientos de
resolución de los modelos matemáticos.
• Capacidad de analizar, diseñar y desarrollar soluciones de problemas reales
utilizando algoritmos computacionales para implementarlos en un lenguaje de
programación.
3
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Objetivo General
Orientar al estudiante en todo lo relacionado con la construcción de diagramas de flujo
y pseudocódigos que le permitan entender los pasos lógicos a desarrollar en un
programa para resolver problemas reales de la vida diaria y las ingenierías.
Objetivos Específicos
• Evaluar los conceptos de algoritmo, diagrama de flujo, etc.
• Reconocer las diferentes simbologías y herramientas utilizada en los diagramas
de flujo.
• Utilizar herramientas, técnicas y diagramas para organizar adecuadamente los
datos y poder resolver un problema planteado.
• Aplicar el uso de la estructura que conforma un pseudocódigo.
• Desarrollar la capacidad de abstracción, análisis y síntesis.
• Propiciar el desarrollo de la lógica de programación.
• Reconocer el uso y aplicación de los diferentes métodos de organización y
búsqueda.
• Analizar problemas y representar su solución mediante algoritmos.
• Diseñar algoritmos que utilicen arreglos unidimensionales y
multidimensionales.
1. Contenido
Temas Horas
duración
UNIDAD I: Introducción a los Sistemas
Computacionales 12
• Informática: Conceptos. Importancia. Historia.
• La computadora: Concepto. Importancia de
computadora en otras áreas. Historia de la
computadora: Pioneros, Generaciones. Tipos de
computadora: Por su tamaño y Elaboración de
datos.
• Software: Definición. Clasificación.
• Internet: Concepto, historia e importancia,
Conceptos básicos, Servicios disponibles,
Navegadores y buscadores. Clasificación, Correo
electrónico.
4
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Procesamiento de Datos
• Ciclos de procesamiento de datos Básicos y
Ampliados. Base de datos, Conceptos, Registro,
Campo. Archivos, Nombres de archivos, Tipos de
archivos, Modo de acceso a los archivos.
Unidades de almacenamiento, Bit, Byte, Carácter,
Kilo Byte, Mega Byte, Giga Byte, Tera Byte.
UNIDAD II: Técnicas de programación. Parte I
18
• Algoritmos: Conceptos, Tipos de algoritmos,
Ejercicios.
• Diagrama de Flujo: Conceptos, Simbología,
Operadores. Lógicos, Relacionales, Aritméticos.
Bucles, Variables, Contadores, Acumuladores,
Ejercicios.
• Seudocódigos: Concepto, Estructura, Aplicación,
Ejercicios.
• Análisis de problemas reales y su representación de
Algoritmos: gráfica y pseudocódigo.
• Diseño de algoritmos aplicados a problemas.
UNIDAD III: Técnicas de programación. Parte II
• Series
• Arreglos : Vectores y Matrices
• Arreglos unidimensionales 18
• Ordenamiento de vectores
• Búsquedas en vectores
• Arreglos bidimensionales
• Arreglos multidimensionales
Descripción de la Asignatura
En esta asignatura se le enseña al estudiante a conocer y entender la estructura de los
diagramas de flujo, basado en la idea de introducir los estudiantes a la programación
por medio de planteamientos de problemas y métodos que le ayude a desarrollar la
lógica y poder implementarla en creación de aplicaciones.
5
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Metodología de Enseñanza
Exposición del profesor. Estudio de casos. Elaboración programas. Ejercicios
prácticos. Investigación en Internet. Solución de casos, Aprendizaje basado en
problemas, Análisis, discusión y debates. Estudio individual, Tareas individuales,
Investigaciones, Juego de roles.
Recursos Didácticos
Retroproyector, videos, transparencias, televisor, proyector de multimedia. Libros
de textos, publicaciones periódicas, computador, Internet, documentos
audiovisuales, planteamiento y resolución de problemas asignados por el profesor
Metodología de Evaluación
Bibliografía (Internetgrafía)
Libro de Texto:
Libros de Consultas:
6
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Evaluación
Semana Unidad/Temas Asignaciones/Tareas /Calificación
Introducción a los sistemas
computacionales:
Informática: conceptos, importancia, Investigar sobre
01 historia. conceptos 5 pts.
La computadora:
Concepto, importancia de la
computadora en otras áreas.
Historia de la computadora:
Pioneros, generaciones
Tipos de computadoras:
02 Por tamaño y elaboración de datos Tareas prácticas
Software:definición, clasificación
Internet:concepto, historia e
importancia, Conceptos básicos,
Servicios disponibles, Navegadores y
buscadores. Clasificación, Correo Tareas y ejercicios
03 electrónico. prácticos 5 pts.
Procesamiento de datos:
Ciclos de procesamiento de datos
Básicos y Ampliados.
Base de datos: Conceptos, Registro,
Campo. Archivos, Nombres de
archivos, Tipos de archivos, Modo de
acceso a los archivos.
Unidades de almacenamiento: Bit,
Byte, Carácter, Kilo Byte, Mega Byte,
04 Giga Byte, Tera Byte. Ejercicios prácticos
05 Primera prueba de evaluación Primera evaluación 20 pts.
Algoritmos:Conceptos, Tipos de Investigación sobre
06 algoritmos, Ejercicios. Temas. Tareas 5 pts.
Diagrama de Flujo: Conceptos,
Simbología, Operadores. Lógicos, Exposiciones por
Relacionales, Aritméticos. Bucles, Grupos.
07 Variables, Contadores, Tareas. Ejercicios.
7
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Acumuladores, Ejercicios.
Seudocódigos:Concepto, Estructura, Análisis de casos.
08 Aplicación, Ejercicios. Tareas. Ejercicios.
8
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
UNIDAD I
4.1. LA INFORMATICA
9
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Hoy en día, la informática juega un papel fundamental en todos los aspectos. Prácticamente
todos los ámbitos de la actividad humana se han adaptado a la aparición de la informática,
especialmente los que se orientan a la ejecución de una tarea más o menos mecánica.
La informática es aplicada en muchas áreas y sectores de la actividad humana, como son: la
industria, investigación y desarrollo, desarrollo de juegos, gestión de negocios,
comunicaciones, física, control de transportes, biología, química, meteorología, ingeniería,
almacenamiento y consulta de información, medicina, monitorización y control de procesos,
robots industriales, diseño computarizado, aplicaciones/herramientas multimedia, etc.
10
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
11
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
La informática nace hace bastante tiempo atrás, cuando comenzaron a desarrollarse aparatos
diseñados para realizar operaciones matemáticas sencillas. Sin embargo, el primer gran paso
que acercó al concepto actual de la informática se puede situar en el primer tercio del siglo
XX, cuando comienzan a solucionarse los problemas que acarreaban los rudimentarios
aparatos conocidos, reemplazando los sistemas de engranaje por impulsos eléctricos y
utilizando el código binario como fuente de información.
Su aparición como ciencia se debe a la presentación del primer ordenador, en una fecha
cercana al año 1940, aunque su aplicación y su campo de estudio se fue ampliando a medida
que la tecnología avanzó (y sigue magnificándose aún más).
Se suele definir como ciencia utilizando una terminología similar, siendo la palabra exacta la
Computación, o su nombre completo de “Ciencia de la Computación”, diferenciándose no
solo el objeto de estudio sino qué es lo que se está estudiando, siendo esta última más
enfocada al desarrollo de mejores ordenadores.
El origen del término Informática proviene de la conjunción de las palabras “Información” y
“Automática” teniendo distintas teorías para su origen:
A. Por un lado, están quienes sostienen que fue creada por el ingeniero PhilippeDreyfus,
la palabra “Informatique”, a comienzos de la década del 60, siendo entonces de
origen francés.
B. Está también la afirmación de que este vocablo es en realidad de origen alemán,
siendo el ingeniero Karl Steinbuch quien se refirió a la “Informatik” en el año 1957.
Para seguir diferenciando aún más, el origen de la palabra Computación se atribuiría al inglés,
siendo definida como “ComputerScience”, tal como hemos mencionado anteriormente.
El objeto de estudio de la Informática es entonces mucho más amplio, ya que no solo se
encarga de analizar todo lo relativo a los ordenadores desde el aspecto físico (Diseño,
Arquitectura, Fabricación, Componentes de Hardware) sino que se encarga también de lo
12
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
• Procesamiento de datos
• Almacenamiento de datos
• Transferencia de datos
• Control
El computador, por supuesto, tiene que ser capaz
de procesar datos. Los datos pueden adoptar una
gran variedad de formas, y el rango de los
requisitos de procesado es amplio. Sin embargo,
veremos que hay unos pocos métodos o tipos
fundamentales de procesado de datos.
También es esencial que un computador almacene
datos. Incluso si el computador está procesando
datos al vuelo (es decir, los datos se introducen, se
procesan y los resultados se obtienen inmediatamente), el computador tiene que guardar
13
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
temporalmente al menos aquellos datos con los que está trabajando en un momento dado. Así
hay al menos una función de almacenamiento de datos a corto plazo. Con igual importancia
un computador lleva a cabo una función de almacenamiento de datos a largo plazo. El
computador almacena ficheros de datos para que se recuperen y actualicen en un futuro.
El computador tiene que ser capaz de transferir datos entre el mismo y el mundo exterior.
El entorno de operación del computador se compone de dispositivos que sirven bien como
fuente o bien como destino de datos. Cuando se reciben o se llevan datos a un dispositivo que
está directamente conectado con el computador, el proceso se conoce como entrada-salida
(E/S), y este dispositivo recibe el nombre de periférico. El proceso de transferir datos a largas
distancias, desde o hacia un dispositivo remoto, recibe el nombre de comunicación de datos.
Finalmente, debe haber un control de estas tres funciones. Estecontrol es ejercido por el o
los ente(s) que proporciona(n) al computador instrucciones. Dentro del computador, una
unidad de control gestiona los recursos del computador y dirige las prestaciones de sus partes
funcionales en respuesta a estas instrucciones.
ESTRUCTURA DEL COMPUTADOR
Los dos componentes principales de una computadora son: hardware y software. Hardware
es el equipo físico o los dispositivos asociados con la computadora. Por ejemplo: monitor,
teclado, mouse, disco duro, memorias (RAM, ROM, flash), procesador, motherboard, etc. El
software, o la parte lógica; son los programas o aplicaciones de que se ejecutan o “corren”
en la computadora.
La figura 4.2 es la representación más sencilla posible de un computador. El computador es
una entidad que interactúa de alguna manera con su entorno externo. En general, todas sus
conexiones con el entorno externo pueden ser clasificadas como dispositivos periféricos o
líneas de comunicación.
Figura 2. El computador
Del mismo modo la representación interna del computador en su nivel más alto se muestra en
la figura 4.3. Hay cuatro componentes estructurales principales.
14
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
15
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
algún modo el más complejo es la CPU; su estructura se muestra en la figura 4.4. Sus
principales componentes estructurales son:
Figura 4. Unidad Central de Procesamiento
• Unidad de control: controla el
funcionamiento de la CPU y por tanto del
computador. Un reloj o cristal de cuarzo en
su interior regula el tiempo de las
operaciones.
• Unidad aritmético-lógica (ALU): lleva a
cabo las funciones de procesamiento de datos
del computador. Comparaciones logicas y
operaciones matematicas de suma y resta
basicamente.
• Registros: proporcionan almacenamiento
interno a la CPU.
• Interconexiones de la CPU: son
mecanismos que proporcionan comunicación
entre la unidad de control, la ALU y los
registros.
Las computadoras (ordenadores) electrónicas modernas son uno de los productos más
importantes del siglo XXI ya que se han convertido en un dispositivo esencial en la vida
diaria de las personas, como un electrodoméstico más del hogar o de la oficina y han
cambiado el modo de vivir y de hacer negocios. Constituyen una herramienta esencial en
muchas áreas: empresa, industria, gobierno, ciencia, educación..., en realidad en casi todos
los campos de nuestras vidas. Son infinitas las aplicaciones que se pueden realizar con ellas:
consultar el saldo de una cuenta corriente, retirar dinero de un banco, enviar o recibir
mensajes por teléfonos celulares (móviles) que a su vez están conectados a potentes
computadoras, escribir documentos, navegar por Internet, enviar y recibir correos
electrónicos (e-mail), etc.
16
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Miles de años después, el matemático escoces y descubridor del logaritmo, John Napier,
desarrolló en 1614 un aparato conocido como “Las Varillas o Huesos de Napier (Abaco
neperiano)” que venía a ser una tabla de búsqueda de resultados para las multiplicaciones.
Los huesos formaban una tabla movible de multiplicaciones, hechas de láminas de hueso que
17
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
tenían los números impresos. Colocadas en la combinación correcta, estás láminas podrían
realizar multiplicaciones directas.
El inventor y pintor Leonardo Da Vinci trazo las ideas para una sumadora mecánica. Siglo y
medio después el filósofo y matemático francés Blaise Pascal, invento y construyo en 1642
la primera sumadora mecánica. Se le llamo “Pascalina”. Aquel dispositivo utilizaba una
serie de ruedas de 10 dientes en la que cada uno de los dientes representaba un digito del 0 al
9. Las ruedas estaban conectadas de tal manera que podían sumarse números haciéndolas
avanzar el número de dientes correctos. En 1670 el filósofo y matemático alemán Gottfried
Wilhelm Leibnitz mejoró la máquina de Pascal, añadiéndole un cilindro escalonado de
dientes de longitud variable, conocida ahora como “Rueda de Leibnitz” para representar los
dígitos del 1 al 9. En 1673 construyó su máquina calculadora después de realizar varios
modelos distintos. Era verdaderamente superior a la de Pascal y fue el primer dispositivo
calculador de propósito general capaz de sumar, restar, multiplicar, dividir y obtener raíces.
18
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El fabricante de tejidos francés,Joseph Marie Jacquard, ideó un telar que podría reproducir
automáticamente patrones de tejidos complejos leyendo la información codificada en
patrones de agujeros perforados en unas delgadas placas de madera. El telar de Jacquard
construido en 1801 puede considerarse como la primera máquina programada. Durante la
década de 1880 el estadístico estadounidense Herman Hollerith concibió la idea de utilizar
tarjetas perforadas, similares a las placas de Jacquard, para procesar datos administrativos.
Hollerith diseñó un sistema compuesto de una lectora eléctrica de tarjetas perforadoras, una
clasificadora rudimentaria y una unidad tabuladora para realizar las sumas e imprimir los
resultados, con este sistema, consiguió recolectartoda la información estadística destinada al
censo de población de 1890 de Estados Unidos.
Figura 10 Telar automático de tarjetas perforadas Figura 11 Máquina tabuladora (Herman Hollerith)
También en el siglo XIX el matemático e inventor británico Charles Babbage elaboro los
principios de la computadora digital moderna. Invento una serie de máquinas, como “La
19
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Máquina Diferencial”en la que trabajo desde 1822 a 1847, aunque no fue terminada por
completo era un dispositivo mecánico que podía realizar sumas repetidas y calcular
funciones polinómicas.
Entre 1833 y 1842, Babbage ideo una nueva máquina llamada “Máquina Analítica” de
Babbage,esta puede considerarse el antecedente directo del ordenador actual. Ideada en 1835,
tampoco llegó nunca a realizarse. La idea central combinaba la programación con tarjetas
perforadas y la realización de las cuatro operaciones aritméticas con decisiones basadas en
los propios resultados intermedios de la secuencia de cálculo almacenados internamente. La
Máquina Analítica, ya tenía muchas de las características de un ordenador moderno. Incluía
una corriente o flujo de entrada en forma de paquete de tarjetas perforadas, una memoria para
guardar los datos, un procesador para las operaciones matemáticas y una impresora para
hacer permanente el registro. De esta manera se identificaban las etapas de una tarea
informática como entrada, tratamiento y salida de datos asociadas a los distintos elementos
de la máquina. De Babbage parte la idea de programa como un conjunto de instrucciones que
controlan las operaciones de un ordenador.
Figura 12 Maquina diferencial de Babbage Figura 13 Máquina analítica de Babbage
La hija del poeta inglés Lord Byron, Augusta Ada Byron, colaboró en su diseño, aportando
nuevas ideas y corrigiendo los errores del trabajo de Babbage. También construyó varios
procedimientos para utilizar la máquina de Babbage en la resolución de varios problemas.
Como consecuencia de sus aportaciones, Augusta Ada Byron se considera la primera
programadora de la historia.
El inventor sueco George Scheutz tuvo conocimiento del trabajo de Babbage y construye
una pequeña máquina diferencial que fue comprada en 1855 para el Observatorio Dudley de
20
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Albany en Nueva York, para imprimir tablas astronómicas. Este fue el primer ordenador que
hubo en América.
Figura 14. Maquina diferencial de Scheutz
PRIMEROS ORDENADORES
Los ordenadores analógicos comenzaron a construirse a principios del siglo XX. Los
primeros modelos realizaban los cálculos mediante ejes y engranajes giratorios. Con estas
máquinas se evaluaban se las aproximaciones numéricas de ecuaciones demasiadas
complejas como para poder ser resueltas por otros métodos. Durante las dos guerras
mundiales se utilizaron sistemas informáticos analógicos, primero mecánicos y más tarde
eléctricos, para predecir las trayectorias delos torpedos en los submarinos y para el manejo a
distancia de las bombas en la aviación.
21
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
22
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
23
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Pero el cambio tecnológico radical fue el uso de la electrónica, cuyo precursor fue el profesor
John VincentAtanasoff de la Universidad Estatal de Iowa junto a su
compañero Clifford Berry. Juntos, desarrollaron la primera computadora
digital electrónica. Su máquina de calcular, conocida como ABC
(Atanasoff-Berry-Computer), fue creada en 1939, estaba basada en el uso
de tubos de vacío y operaba en binario. Su objetivo era encontrar una
herramienta que ayudara a los estudiantes de postgrado a resolver largas y
complejas ecuaciones diferenciales. No estaba preparada para ser
programada por lo que no puede considerarse realmente un ordenador.
Algunos autores consideran que no hay una sola persona a la que se le pueda atribuir el haber
inventado la computadora, sino que fue el esfuerzo de muchas personas. Sin embargo, en el
antiguo edificio de Física de la Universidad Estatal de Iowa aparece una placa con la
siguiente inscripción: “La primera computadora digital electrónica de operación automática
del mundo, fue construida en este edificio en 1939 por John VincentAtanasoff, matemático y
físico de la Facultad de la Universidad, quien concibió la idea, y por Clifford Edward Berry,
estudiante graduado de física.”
Figura 17. Computador ABC, considerada la primera computadora digital
Sin embargo, el primer computador electrónico de propósito general del mundo se llamó
ENIAC (ElectronicNumericalIntegrator and Calculator) y se terminó en
1946 en la Universidad de Pennsylvania, fue financiada por el Ejército
de EEUU. Se utilizaba esencialmente para predicciones de tiempo,
cálculos de tablas balísticas y cálculos de energía atómica. Sus
diseñadores fueron John PrespertEckert y John W. Mauchley.La
ENIAC era una maquina decimal y no binaria. Es decir, los números
24
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
25
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
A partir de entonces, se abrieron dos caminos: mientras Von Neumann reclamaba la naciente
informática basada en la tecnología electrónica para el cálculo científico y académico, casi
siempre al servicio de proyectos militares, Eckert y Mauchly vieron pronto el potencial de
mercado de la nueva tecnología y en 1951 comercializaron el UNIVAC I (Universal
AutomaticCalculator) que fue adquirido por las oficinas del censo norteamericano. Tan sólo
dos años después se instaló en una empresa privada: General Electric. Fue el primer
ordenador electrónico con programa almacenado entregado a un usuario civil y establecía la
viabilidad de los ordenadores comerciales. La informática comenzaba a superar su
dependencia de los proyectos científico-militares que le habían dado forma.
Figura 19. UNIVAC I primer computador comercial
26
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
27
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
IBM, que había ayudado a construir el MARK I y era entonces el principal fabricante de
equipos de procesamiento con tarjetas perforadas, saco su primer computador con programas
almacenados eléctricamente, el 701, en 1953. El 701 fue diseñado principalmente para
aplicaciones científicas [BASH81]. En 1955 IBM presento los productos 702, que tenían
varias características hardware que lo hacían adecuado para aplicaciones de gestión. Estos
fueron los primeros de una larga serie de computadores 700/7000 que situaron a IBM como
el fabricante de computadores dominante.
En estos primeros días, un solo grupo de personas (generalmente ingenieros) diseñaban,
construían, programaban, operaban y daban mantenimiento a cada máquina. Toda la
programación se realizaba exclusivamente en lenguaje máquina o, peor aún, creando
circuitos eléctricos mediante la conexión de miles de cables a tableros de conexiones
(plugboards) para controlar las funciones básicas de la máquina. Los lenguajes de
programación eran desconocidos y sistemas operativos también se desconocían.
A principios de la década de 1950, la rutina había mejorado un poco con la introducción de
las tarjetas perforadas. Entonces fue posible escribir programas en tarjetas y leerlas en vez de
usar tableros de conexiones; aparte de esto, el procedimiento era el mismo
SEGUNDA GENERACION (1957-1964)
El primer cambio importante en los computadores electrónicos vino con la sustitución de los
tubos de vacío por transistores. El transistor es más pequeño, más barato, disipa menos calor
y puede ser usado de la misma forma que un tubo de vacío en la construcción de
computadores.
La introducción del transistor a mediados de la década de 1950 cambió radicalmente el
panorama. Las computadoras se volvieron lo bastante confiables como para poder fabricarlas
y venderlas a clientes dispuestos a pagar por ellas, con la expectativa de que seguirían
funcionando el tiempo suficiente como para poder llevar a cabo una cantidad útil de trabajo.
Por primera vez había una clara separación entre los diseñadores, constructores, operadores,
programadores y el personal de mantenimiento.
Estas máquinas, ahora conocidas como mainframes, estaban encerradas en cuartos
especiales con aire acondicionado y grupos de operadores profesionales para manejarlas.
Sólo las empresas grandes, universidades o agencias gubernamentales importantes podían
financiar el costo multimillonario de operar estas máquinas. Para ejecutar un trabajo (es decir,
un programa o conjunto de programas), el programador primero escribía el programa en
papel (en FORTRAN o en ensamblador) y después lo pasaba a tarjetas perforadas. Luego
llevaba el conjunto de tarjetas al cuarto de entrada de datos y lo entregaba a uno de los
operadores; después se iba a tomar un café a esperar a que los resultados estuvieran listos.
28
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Con el desarrollo de los circuitos LSI (LargeScaleIntegration, Integración a gran escala), que
contienen miles de transistores en un centímetro cuadrado de silicio (chip). El tamaño
reducido del microprocesador de chips hizo posible la creación de las computadoras
personales (PC). Hoy en día las tecnologías LSI (Integración a gran escala) y VLSI
29
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
(Integración a muy gran escala) permiten que cientos de miles de componentes electrónicos
se almacenen en un chip. Usando VLSI, un fabricante puede hacer que una computadora
pequeña rivalice con una computadora de la primera generación que ocupaba un cuarto
completo.
La cuarta generación entonces, es caracterizada por la creación y comercialización de las
computadoras personales PC. Sigue la miniaturización de los componentes electrónicos y de
las computadoras, aumento en las capacidades de memoria, de procesamiento y el
multiprocesamiento de información.
Se encontró también, que la tecnología empleada en la construcción de chips de circuitos
integrados, podía usarse para construir memorias. Entonces, a principios de la década de los
70s, Fairchild produjo la primera memoria semiconductora con relativa capacidad. Este chip,
del tamaño de un sencillo núcleo de ferrita, podía tener 256 bits de memoria. Era no
destructiva y mucho más barata que las antiguas memorias de núcleo magnético.
Esta generación se caracterizó también, por la creación y fuerte competencia de sistemas
operativos y la popularización de las interfaces graficas de usuarios (GUI). Unix, Linux, MS-
DOS que luegopasaría a ser Windows.
QUINTA GENERACION (1983 a la fecha)
30
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Son las más potentes y sofisticadas que existen en la actualidad; se utilizan para tareas que
requieren cálculos complejos y extremadamente rápidos. Tradicionalmente se han utilizado y
utilizan para fines científicos y militares en aplicaciones tales como meteorología, previsión
de desastres naturales, balística, industria aeroespacial, satélites, aviónica, biotecnología,
nanotecnología, etc. Estas computadoras emplean numerosos procesadores en paralelo y se
están comenzando a utilizar en negocios para manipulación masiva de datos (Big-Data).
Así mismo son las más caras, sus precios alcanzan los 30 millones de dólares y más; y cuenta
con un control de temperatura especial, esto para disipar el calor que algunos componentes
alcanzan a tener.
LAS GRANDES COMPUTADORAS (MAINFRAMES)
Son computadoras de escritorio muy potentes destinadas a los usuarios, pero con capacidades
matemáticas y gráficas superiores a un PC y que pueden realizar tareas más complicadas que
31
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Son las más populares y abarcan desde computadoras portátiles (laptops o notebooks, en
inglés) hasta computadoras de escritorio (desktop) que se suelen utilizar como herramientas
en los puestos de trabajo, en oficinas, laboratorios de enseñanza e investigación, empresas,
etc. Los servidores son computadoras personales profesionales y de gran potencia que se
utilizan para gestionar y administrar las redes internas de las empresas o departamentos y
muy especialmente para administrar sitios Web de Internet. Las computadoras tipo servidor
son optimizadas específicamente para soportar una red de computadoras, facilitar a los
usuarios la compartición de archivos, de software o de periféricos como impresoras y otros
recursos de red. Los servidores tienen memorias grandes, altas capacidades de memoria en
disco e incluso unidades de almacenamiento masivo como unidades de cinta magnética u
ópticas, así como capacidades de comunicaciones de alta velocidad y potentes CPU,
normalmente específicas para sus cometidos.
Además de esta clasificación de computadoras, existen actualmente otras microcomputadoras
(handheldcomputers, computadoras de mano) que se incorporan en un gran número de
dispositivos electrónicos y que constituyen el corazón y brazos de los mismos, por su gran
capacidad de proceso. Este es el caso de los PDA (Asistentes Personales Digitales). También
es cada vez más frecuente que otros dispositivos de mano, tales como los teléfonos
inteligentes, cámaras de fotos, cámaras digitales, videocámaras, etc., incorporen tarjetas de
memoria de 128 Mb hasta 4 GB, con tendencia a aumentar.
32
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Conjunto de programas escritos para dar servicio a otros programas. Determinado software
de sistemas (por ejemplo, compiladores, editores y herramientas para administrar archivos)
procesa estructuras de información complejas pero deterministas. Otras aplicaciones de
sistemas (por ejemplo, componentes de sistemas operativos, compiladores, software de redes,
procesadores de telecomunicaciones) procesan sobre todo datos indeterminados. En
cualquier caso, el área de software de sistemas se caracteriza por: gran interacción con el
hardware de la computadora, uso intensivo por parte de usuarios múltiples, operación
concurrente que requiere la secuenciación, recursos compartidos y administración de un
proceso sofisticado, estructuras complejas de datos e interfaces externas múltiples.
SOFTWARE DE APLICACIÓN
Programas aislados que resuelven una necesidad específica de negocios. Las aplicaciones en
esta área procesan datos comerciales o técnicos en una forma que facilita las operaciones de
negocios o la toma de decisiones administrativas o técnicas. Además de las aplicaciones
convencionales de procesamiento de datos, el software de aplicación se usa para controlar
funciones de negocios en tiempo real (por ejemplo, procesamiento de transacciones en punto
de venta, control de procesos de manufactura en tiempo real).
El software de aplicación tiene como función principal asistir y ayudar a un usuario de una
computadora para ejecutar tareas específicas. Por ejemplo, una aplicación de procesamiento
de textos como Word o Word Perfect que ayuda a crear documentos, una hoja de cálculo tal
como Lotus o Excel que ayudan a automatizar tareas tediosas o repetitivas de cálculos
matemáticos o estadísticos, a generar diagramas o gráficos, presentaciones visuales como
33
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
PowerPoint, o a crear bases de datos como Access u Oracle que ayudan a crear archivos y
registros de datos.
SOFTWARE EMBEBIDO
34
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
35
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Figura 20 Representación del modelo cliente-servidor. Este modelo está basado en solicitudes y respuestas
36
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Internet no es del todo una red, sino un inmenso conjunto de redes diferentes que usan ciertos
protocolos comunes y proporcionan ciertos servicios comunes. Es un sistema poco común
porque nadie lo planeó y nadie lo controla. Sus orígenes se remontan a 1969 cuando se creó
la primera red de conmutación de paquetes, antecesora del Internet actual, conocida como
ARPANET (AdvancedResearchProjects Agency Network), con la creación de esta red se
estableció la primera conexión de computadoras, entre tres universidades en California y una
en Utah.
A finales de la década de 1950. Durante el auge de la Guerra Fría, el Departamento de
Defensa de EEUU quería una red de control y comando que pudiera sobrevivir a una guerra
nuclear. En esa época todas las comunicaciones militares usaban la red telefónica pública,
que se consideraba vulnerable. La razón de esta creencia se puede entresacar de la figura
4.20a. Los puntos negros representan las oficinas de conmutación telefónica, a cada una de
las cuales se conectaban miles de teléfonos. Estas oficinas de conmutación estaban, a su vez,
conectadas a oficinas de conmutación de más alto nivel (oficinas interurbanas), para
conformar una jerarquía nacional con sólo una mínima redundancia. La vulnerabilidad del
sistema estaba en que la destrucción de algunas de las oficinas interurbanas clave podía
fragmentar el sistema en muchas islas incomunicadas.
Figura 21. (a) Estructura del sistema telefónico tradicional. (b) Sistema de conmutación distribuida propuesto por Baran
37
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
diseño de amplia distribución y tolerancia a fallas que se muestra en la figura 4.20b. Puesto
que las trayectorias entre cualquiera de las oficinas de conmutación eran ahora más grandes
de lo que las señales análogas podían viajar sin distorsión, Baran propuso que se utilizara la
tecnología digital de conmutación de paquetes a través del sistema. A los oficiales del
Pentágono les agradó el concepto y pidieron a AT&T, en ese entonces el monopolio
telefónico estadounidense, que construyera un prototipo. AT&T desechó las ideas de Baran.
Dijeron que la red de Baran no se podía construir y la idea se desechó.
Pasaron varios años y el Departamento de Defensa aún no tenía un mejor sistema de control
y comando.Es entonces,cuando el presidente Eisenhower al ver que el ejército y la fuerza
aérea se peleaban por el presupuesto de investigación del Pentágono, decide crear una
organización única de investigación para la defensa, ARPA (Agencia de Proyectos de
Investigación Avanzada). Ésta no tenía científicos ni laboratorios; de hecho, no tenía más
que una oficina y un presupuesto pequeño (por normas del Pentágono). Hacía su trabajo
otorgando subvenciones y contratos a universidades y empresas cuyas ideas le parecían
prometedoras.
Durante los primeros años, ARPA trataba de imaginarse cuál sería su misión, pero en 1967 la
atención de su entonces director, Larry Roberts, se volvió hacia las redes. Se puso en
contacto con varios expertos para decidir qué hacer. Uno de ellos, Wesley Clark, sugirió la
construcción de una subred de conmutación de paquetes, dando a cada host su propio
enrutador.
La subred constaría de minicomputadoras llamadas IMPs (Procesadores de Mensajes de
Interfaz), conectadas por líneas de transmisión de 56 kbps alquiladas a las compañías
telefónicas. Para alta confiabilidad, cada IMP estaría conectado al menos a otros dos IMPs.
La subred iba a ser de datagramas, de manera que, si se destruían algunos IMPs, los mensajes
se podrían volver a enrutar de manera automática a otras rutas alternativas.
Cada nodo de la red iba a constar de un IMP que funcionaría como un pequeño routery un
host, en el mismo cuarto, conectados por un cable corto. Un host tendría la capacidad de
enviar mensajes de más de 8063 bits a su IMP, el cual los fragmentaría en paquetes de, a lo
sumo, 1008 bits y los reenviaría de manera independiente hacia el destino. Cada paquete se
recibiría íntegro antes de ser reenviado, por lo que la subred sería la primera red electrónica
de conmutación de paquetes de almacenamiento y reenvío.
Entonces ARPA lanzó una convocatoria para construir la subred, donde seleccionó a Bolt,
Beranek and Newman (BBN), una empresa de consultoría de Cambridge, Massachusetts, y
en diciembre de 1968 le otorgó el contrato para construir la subred y escribir el software de
ésta.
38
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El software estaba dividido en dos partes: subred y host. El software de la subred constaba
del extremo IMP de la conexión host a IMP, del protocolo IMP a IMP y de un protocolo de
IMP origen a IMP destino diseñado para mejorar la confiabilidad. En la figura 3.21 se
muestra el diseño original de ARPANET.
Figura 22. Diseño original de ARPANET
No obstante, en diciembre de 1969 de alguna manera surgió una red experimental con cuatro
nodos: en UCLA, UCSB, SRI y la Universidad de Utah. Se eligieron estas cuatro porque
todas tenían un gran número de contratos de ARPA y todas tenían computadoras host
diferentes incompatibles en su totalidad (precisamente para hacerlo más divertido). La red
creció con rapidez a medida que se entregaban e instalaban más IMPs; pronto abarcó Estados
Unidos.
En 1973, Robert Kahn y VintonCerf comenzaron a trabajar en la suite TCP para desarrollar
la siguiente generación de la ARPANET. TCP se diseñó para reemplazar el programa de
control de red (NCP) actual de la ARPANET. En 1978, TCP se dividió en dos protocolos:
TCP e IP. TCP/IP está diseñado de manera específica para manejar comunicación por
interredes, aspecto cuya importancia se acrecentó conforme cada vez más y más redes se
adhirieron a ARPANET.
Para alentar la adopción de estos nuevos protocolos, ARPA concedió varios contratos a BBN
y a la Universidad de California en Berkeley para integrarlos en UNIX de Berkeley. Los
investigadores en Berkeley desarrollaron una interfaz de programa adecuada para la red
(sockets) y escribieron muchos programas de aplicación, utilería y administración para hacer
más fácil la conectividad.
39
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
A finales de la década de 1970, la NFS (Fundación Nacional para las Ciencias, de Estados
Unidos) vio el enorme impacto que ARPANET estaba teniendo en la investigación
universitaria. Sin embargo, para estar en ARPANET, una universidad debía tener un contrato
de investigación con el Departamento de Defensa de EE.UU, lo cual muchas no tenían. La
respuesta de la NSF fue diseñar un sucesor de ARPANET que pudiera estar abierto a todos
los grupos de investigación de las universidades. Para tener algo concreto con que empezar,
la NSF decidió construir una red dorsal (o troncal) para conectar sus seis centros de
supercomputadoras en San Diego, Boulder, Champaign, Pittsburgh, Ithaca y Princeton. Estas
computadoras estaban conectadas a líneas alquiladas de 56 kbps y formaban una subred,
utilizando la misma tecnología de hardware que ARPANET. Sin embargo, la tecnología de
software era diferente: se utilizaban la suite de protocolos TCP/IP, creando así la primera
WAN TCP/IP.
La NSF también fundó algunas redes regionales (alrededor de 20) que se conectaban a la red
dorsal para que los usuarios en miles de universidades, laboratorios de investigación,
bibliotecas y museos, tuvieran acceso a cualquiera de las supercomputadoras y se
comunicaran entre sí. Toda la red, incluyendo la red dorsal y las redes regionales, se llamó
NSFNET. Ésta se conectó a ARPANET a través de un enlace entre un IMP y una fuzzball en
el cuarto de máquinas de Carnegie-Mellon.
Al continuar el crecimiento, la NSF se percató de que el gobierno no podría financiar por
siempre el uso de redes. En consecuencia, la NSF alentó a MERIT, MCI e IBM a que
formaran una corporación no lucrativa, ANS (Redes y Servicios Avanzados), como el
primer paso hacia la comercialización. En 1990, ANS adquirió NSFNET y escaló los enlaces
de 1.5 Mbps a 45 Mbps para formar ANSNET. Esta red operó durante cinco años y luego
fue vendida a America Online. Pero para entonces varias empresas estaban ofreciendo
servicios IP comerciales y fue evidente que el gobierno se debía retirar del negocio de las
redes.
Para facilitar la transición y hacer que todas las redes regionales se pudieran comunicar con
las demás redes regionales, la NSF concedió contratos a cuatro diferentes operadores de
redes para establecer un NAP (Punto de Acceso a la Red). Estos operadores eran PacBell
(San Francisco), Ameritech (Chicago), MFS (Washington, D.C.) y Sprint (Nueva York).
40
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Todo operador de red que quisiera proporcionar el servicio de red dorsal a las redes
regionales de la NSF se tenía que conectar a todos los NAPs.
En consecuencia, los operadores de red dorsal se vieron forzados a competir por el negocio
de las redes regionales con base en el servicio y el precio, que, desde luego, era la idea.
Como resultado, el concepto de una única red dorsal predeterminada fue reemplazado por
una infraestructura competitiva orientada a la comercialización.
Durante la década de 1990, muchos otros países y regiones también construyeron redes
nacionales de investigación, con frecuencia siguiendo el patrón de ARPANET y NSFNET.
Éstas incluían EuropaNET y EBONE en Europa, que empezaron con líneas de 2 Mbps y
luego las escalaron a 34 Mbps. Finalmente, en Europa la infraestructura de redes quedó en
manos de la industria.
USOS E IMPORTANCIA DE INTERNET
• Correo electrónico
• Noticias
• Inicio remoto de sesión
• Transferencia de archivos
Hasta principios de la década de 1990, Internet era muy visitada por investigadores
académicos, del gobierno e industriales. Una nueva aplicación, WWW (World Wide Web)
cambió todo eso y trajo millones de usuarios nuevos no académicos a la red. Esta aplicación
—inventada por Tim BernersLee, físico del CERN— no cambió ninguna de las
características subyacentes, pero las hizo más fáciles de usar.
41
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
A medida que se lanzan al mercado nuevas tecnologías y dispositivos para usuarios finales,
las empresas y los consumidores deben continuar adaptándose a este entorno en constante
evolución. La función de la red es transformarse para permitir que las personas, los
dispositivos y la información estén conectados. Existen muchas nuevas tendencias de red que
afectarán a organizaciones y consumidores. Algunas de las tendencias principales incluyen
las siguientes:
Algunos servicios disponibles en internet, a parte de la Web, son el acceso remoto a otros
dispositivos a través de (SSH y Telnet),los boletines electrónicos (news o grupos de noticias),
las conversaciones en línea (IRC y chats), la transferencia de archivos (FTP, P2P, P2M), la
descarga y transmisión de contenido y comunicación multimedia, telefonía (VoIP), televisión
(IPTV), juegos en línea, computación en la nube,etc.
Uno de los servicios que más éxito ha tenido en Internet ha sido la World Wide Web (WWW,
o la Web). Entre los servicios que ofrece la Web están: el correo electrónico y la mensajería
instantánea. El correo electrónico (e-mail) utiliza protocolos específicos para el intercambio
de mensajes: SMTP (Simple Mail Transfer Protocol), POP (Post Office Protocol) e IMAP
42
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
NAVEGADORES
43
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El navegador interpreta el código HTML generalmente, en el que está escrito el sitio web y
lo muestra en el dispositivo del usuario.Permite al usuario interactuar con su contenido y
navegar hacia otros lugares de la red mediante enlaces o hipervínculos.
A través del navegador se hace una petición a un servidor web solicitando alguna página web,
el servidor responde enviando el archivo de la página web, el navegador lo muestra en la
pantalla del dispositivo del usuario. El proceso se muestra en la figura 4.24. La comunicación
entre el servidor web y el navegador se realiza mediante el protocolo HTTP o HTTPS.
Figura 25. Proceso de navegación a través de un navegador web
Los buscadores son programas dentro de un sitio o página web, a los que se ingresa a través
del navegador web, y que permite buscar todo tipo de información en internet y otros sitios
web, a través de palabras claves de búsqueda.
Un buscador es un sistema informático que indexa archivos almacenados en servidores web a
través de algún algoritmo y método matemático. La función de un buscador consiste en,
según la información introducida para la consulta comprobar en la base de datos del mismo
buscador y en sus listas indexadas todas las páginas posibles, que contengan información
44
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
relacionada con dicho tema. Tras la consulta, mostrará al usuario todas aquellas
coincidencias que haya encontrado, y así el usuario puede acceder a todas ellas.
Figura 26. Principales buscadores en Internet
Los buscadores, por lo general se clasifican en tres tipos: índices o directorios temáticos,
motores de búsqueda y, metabuscadores.
ÍNDICES O DIRECTORIOS TEMÁTICOS
La función de este tipo de sistemas es presentar algunos de los datos de las páginas más
importantes, desde el punto de vista del tema y no de lo que se contiene. Los resultados de la
búsqueda de estos índices pueden ser muy limitados ya que los directorios temáticos, las
bases de datos de direcciones son muy pequeñas, además de que puede ser posible que el
contenido de las páginas no esté completamente al día.
Son sistemas creados con la finalidad de diseñar un catálogo por temas, definiendo la
clasificación por lo que se puede considerar que los contenidos ofrecidos en estas páginas
tienen ya cierto orden y calidad.
MOTORES DE BUSQUEDA
Este tipo de buscadores son los de uso más común, basados en sistemas llamados spiders o
robots, que buscan información con base en las palabras escritas, haciendo una recopilación
sobre el contenido de las páginas y mostrando como resultado aquellas que contengan las
palabras o frases en alguna parte del texto.
METABUSCADORES
Los metabuscadores son sistemas que localizan información en los motores de búsquedas
másutilizados, realizan un análisis y seleccionan sus propios resultados. No tienen una base
de datos propia, por lo que no almacenan páginas web y realizan una búsqueda automática en
las bases de datos de otros buscadores, tomando un determinado rango de registros con los
resultados más relevantes.
45
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El correo electrónico (en inglés: electronic mail, comúnmente abreviado e-mail o email) es
un sistema o servicio de Internet que permite a los usuarios enviar y recibir mensajes a otros
usuarios mediante redes de comunicación electrónica. El término «correo electrónico»
proviene de la analogía con el correo postal: ambos sirven para enviar y recibir mensajes, y
se utilizan «buzones» intermedios (servidores de correo).
El correo electrónico es un método para almacenar y enviar que se utiliza para enviar,
almacenar y recuperar mensajes electrónicos a través de una red. Los mensajes de correo
electrónico se guardan en bases de datos en servidores de correo.
Los sistemas de correo electrónico se basan en un modelo de almacenamiento y reenvío, de
modo que no es necesario que ambos extremos se encuentren conectados simultáneamente.
Para ello se emplea un servidor de correo que hace las funciones de intermediario, guardando
temporalmente los mensajes antes de enviarse a sus destinatarios.Por medio del correo
electrónico se puede enviar no solamente texto, sino todo tipo de archivos digitales, aunque
suelen existir limitaciones al tamaño de los archivos adjuntos.
ORIGEN DEL CORREO ELECTRONICO
46
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Para poder enviar o recibir mensajes de correo electrónico es necesario disponer de una
cuenta de correo. Dicha cuenta es un buzón virtual identificado por una dirección de correo
electrónico de la forma «nombre_cuenta@dominio.com». Cada dirección se compone de una
parte local (en este caso nombre_cuenta), el símbolo separador @ y una parte que identifica
al dominio o servidor de correo (en este caso dominio.com).
El correo electrónico admite tres protocolos diferentes para su funcionamiento: el protocolo
simple de transferencia de correo (SMTP), el protocolo de oficina de correos (POP) y el
protocolo de acceso a mensajes de Internet (IMAP). El proceso de capa de aplicación que
envía correo utiliza el protocolo SMTP. Esto sucede cuando se envía correo de un cliente a
un servidor y cuando se envía correo de un servidor a otro.
ESCRITURA Y ENVIO DE MENSAJES
Cuando una persona decide escribir un correo electrónico, su programa (o correo web) le
pedirá como mínimo tres cosas:
47
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
48
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
1. ¿Qué es Informática?
2. ¿Qué es un sistema informático?
3. ¿Qué es un programador?
4. ¿Qué es un analista de sistemas?
5. ¿Qué es un administrador de base de datos?
6. ¿Qué es un administrador de redes?
7. ¿Qué es un administrador de centros de cómputos?
8. ¿Qué es un director de centro de cómputos?
9. ¿Cuáles métodos y técnicas fueron utilizados inicialmente por el hombre para realizar
cálculos y almacenar datos?
10. Los primeros modelos de ordenadores realizaban los cálculos mediante______________
y _________________
11. Es un cuadro de madera con cuerdas paralelas y bolas móviles, considerado como el
precursor del computador_______________________
12. Trazo la idea en una pintura para la posterior creación de la
Pascalina_________________
13. La Pascalina fue creada por_______________________
14. Creador de la Máquina Analítica_______________________
15. Principales características de la Máquina
Analítica________________________________
________________________________________
16. Durante las dos guerras mundiales se utilizaron sistemas analógicos.
Primero___________ y más tarde____________________
17. El primer prototipo de computadora electrónica fue concebida por los
doctores__________ _________________________________
llamado______________________
18. Howard Aiken se fijó la meta de construir una maquina calculadora automática que
combinara la tecnología eléctrica y mecánica con las técnicas de tarjetas perforadas de
Hollerith, llamada__________________________
19. Las computadoras de la primera generación
empleaban____________________________
20. La IBM construye en la primera generación los modelos de computadora
electrónica_____ _____________________________
21. La memoria principal de las computadoras de la primera generación
era_______________
49
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
50
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
51
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
c. Ancho de banda
d. ISDN
e. Hub
f. Switch
g. Router
h. Modem
i. Baudio
j. WEP
k. WPA
l. ¿Qué es internet?
m. ¿Cómo funciona internet?
n. ¿Qué se necesita para hacer una conexión de internet?
o. ¿Qué significa WWW?
p. Ventajas y desventajas de utilizar internet
q. Servicios ofrecidos en internet
r. ¿Qué es el protocolo TCP/IP?
s. ¿Cuáles son los navegadores de internet más utilizados?
t. ¿Qué es una intranet?
u. ¿Cuál es la diferencia entre Internet e Intranet?
v. ¿Qué es un Gateway?
w. FTP
x. Chat
y. Ciberspacio
z. ¿Qué es una cookie?
aa. Pop-up
bb. P2P
cc. E-mail
dd. SMTP
ee. Home page
ff. Freeware
gg. HTML
hh. Protocolo HTTP Y HTTPS, diferencia entre ambos
ii. Link
jj. Atachment
kk. ¿En qué consiste el software y el hardware OEM?
ll. ¿Qué es un programa?
mm. Clasificación de los programas
52
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
53
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
UNIDAD I
PROCESAMIENTO DE DATOS
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
• Entrada: en esta operación se definen las acciones y los datos de entrada necesarios
en la ejecución del programa.
• Proceso: ejecuta las instrucciones del programa y procesa los datos requeridos por el
mismo.
• Salida: es el conjunto de acciones que permiten a la computadora comunicar los
resultados de la ejecución del programa.
54
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Un sistema computacional organiza los datos en una jerarquía que empieza con bits y bytes,
y progresa hasta llegar a los campos, registros, archivos y bases de datos.
Figura 28. Organización jerárquica de los datos
Entonces, una base de datos es una colección de datos persistentes que pueden compartirse
e interrelacionarse.
55
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
• Persistente: significa que los datos residen en un almacenamiento estable, tal como un
disco magnético.
• Compartir: significa que una base de datos puede tener múltiples usos y usuarios.
• Interrelación: significa que los datos almacenados como unidades separadas se
pueden conectar para facilitar su comprensión y procesamiento.
También, podemos definir una base de datos como el conjunto de información relacionada y
organizada sistemáticamente.
Una base de datos es también, un conjunto de tablas (archivos) relacionados entre sí, para su
posterior recuperación y uso.
Un Bitrepresenta la unidad más pequeña de datos que una computadora puede manejar. Un
bit (de la contracción binarydigit, digito binario)no es más que una señal eléctrica o pulso
electrónico.
A un grupo de 8 bits, se denominaByte. ElByte es la unidad mínima de almacenamiento del
computador y estárepresentadopor un solo carácter, que puede ser una letra, un número, o un
símbolo.
CAMPO
56
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Como se muestra en la figura anterior, cada columna de la tabla representa un campo, y cada
fila representa un registro.
ARCHIVO
Los archivos son un mecanismo de abstracción. Proporcionan una manera para almacenar
información en el disco y leerla después. Esto se debe hacer de tal forma que se proteja al
usuario de los detalles acerca de cómo y dónde se almacena la información y cómo
funcionan los discos en realidad.
Las reglas exactas para denominar archivos varían un poco de un sistema a otro, pero todos
los sistemas operativos actuales permiten cadenas de una a ocho letras como nombres de
archivos legales. Por ende, andrea, bruce y cathy son posibles nombres de archivos. Con
frecuencia también se permiten dígitos y caracteres especiales, por lo que nombres como 2,
¡urgente! son a menudo válidos también.
Muchos sistemas de archivos admiten nombres de hasta 255 caracteres. Algunos sistemas de
archivos diferencian las letras mayúsculas de las minúsculas, mientras que otros no. UNIX
cae en la primera categoría; MS-DOS en la segunda. Así, un sistema UNIX puede tener los
siguientes nombres como tres archivos distintos: maria, Maria y MARIA. En MS-DOS, todos
estos nombres se refieren al mismo archivo.
57
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Muchos sistemas operativos aceptan nombres de archivos en dos partes, separadas por un
punto, como en program.c. La parte que va después del punto se conoce como la extensión
del archivo y por lo general indica algo acerca de su naturaleza. Por ejemplo, en MS-DOS,
los nombres de archivos son de 1 a 8 caracteres, más una extensión opcional de 1 a 3
caracteres. En UNIX el tamaño de la extensión (si la hay) es a elección del usuario y un
archivo puede incluso tener dos o más extensiones, como en paginainicio.html.zip,
donde .html indica una página Web en HTML y .zip indica que el archivo se ha comprimido
mediante el programa zip.
Es conveniente recordar que la ruta donde se encuentra el archivo también es parte de su
nombre. Las rutas demasiado largas restringirán el nombre que se le da al archivo.
Figura 30 Representación lógica de un archivo o base de datos de estudiantes
Extensión Significado
archivo.bak Archivo de respaldo o de copia de seguridad
archivo.c Archivo de código fuente en C
archivo.gif Archivo de imagen en Formato de Intercambio de Gráficos
archivo.html Documento en el Lenguaje de Marcado de Hipertexto de WWW
archivo.jpg Imagen fija codificada con el estándar JPEG
archivo.mp3 Música codificada en formato de audio MPEG capa 3
archivo.pdf Archivo en Formato de Documento Portable
archivo.mp4 Archivo de audio y video codificado en MPEG-4
archivo.txt Archivo de texto general
archivo.zip Archivo comprimido
En algunos sistemas (como UNIX) las extensiones de archivo son sólo convenciones y no
son impuestas por los sistemas operativos. Un archivo llamado archivo.txt podría ser algún
tipo de archivo de texto, pero ese nombre es más un recordatorio para el propietario que un
medio para transportar información a la computadora. Por otro lado, un compilador de C
podría insistir que los archivos que va a compilar terminen con .c y podría rehusarse a
compilarlos si no tienen esa terminación.
58
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Por el contrario, Windows está consciente de las extensiones y les asigna significado. Los
usuarios (o procesos) pueden registrar extensiones con el sistema operativo y especificar para
cada una cuál programa “posee” esa extensión. Cuando un usuario hace doble clic sobre un
nombre de archivo, el programa asignado a su extensión de archivo se inicia con el archivo
como parámetro. Por ejemplo, al hacer doble clic en archivo.doc se inicia Microsoft Word
con archivo.doc como el archivo inicial a editar
CLASIFICACION DE LOS ARCHIVOS
Los tipos de archivos reconocidos por el sistema son normal, directorio o especial. No
obstante, el sistema operativo utiliza muchas variaciones de estos tipos básicos.
Todos los tipos de archivos reconocidos por el sistema se enmarcan en una de estas
categorías. No obstante, el sistema operativo utiliza muchas variaciones de estos tipos
básicos.
Archivos normales
Los archivos normales son los archivos más comunes y se utilizan para contener datos. Los
archivos normales están en formato de archivos de texto o de archivos binarios:
Archivos de texto
Los archivos de texto son archivos normales que contienen información almacenada en
formato ASCII y que el usuario puede leer. Puede visualizar e imprimir dichos archivos. Las
líneas de un archivo de texto no deben contener caracteres NULL.
El término archivo de texto no impide la inclusión de caracteres de control o de otros
caracteres no imprimibles (diferentes de NULL). Por lo tanto, los programas de utilidad
estándar que listan archivos de texto como entradas o como salidas o bien son capaces de
procesar los caracteres especiales o bien son capaces de describir explícitamente sus
limitaciones dentro de sus secciones individuales.
Archivos binarios
Los archivos binarios son archivos normales que contiene información de cualquier tipo
codificada en binario (cadenas o secuencias de bytes) para el propósito de almacenamiento y
procesamiento en ordenadores. Los archivos binarios pueden ser archivos de programas
ejecutables, archivos de base de datos, archivos de imágenes, audio y video, etc.
Archivos de directorios
Los archivos de directorio contienen la información que el sistema necesita para acceder a
todos los tipos de archivos, pero los archivos de directorio no contienen los datos reales del
archivo. En consecuencia, los directorios ocupan menos espacio que un archivo normal y
59
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Archivos especiales
Los archivos especiales definen dispositivos para el sistema o son archivos temporales
creados por procesos. Los tipos básicos de archivos especiales son FIFO (primero en entrar,
primero en salir), de bloques y de caracteres. Los archivos FIFO también se denominan
conductos. Los conductos se crean mediante un proceso para permitir temporalmente las
comunicaciones con otro proceso. Estos archivos dejan de existir cuando termina el primer
proceso. Los archivos de bloque y los archivos de caracteres definen dispositivos.
Cada archivo tiene un conjunto de permisos (denominado modalidades de acceso) que
determina quién puede leer, modificar o ejecutar el archivo.
MODOS DE ACCESO A ARCHIVOS
Los primeros sistemas operativos proporcionaban sólo un tipo de acceso: acceso secuencial.
En estos sistemas, un proceso podía leer todos los bytes o registros en un archivo en orden,
empezando desde el principio, pero no podía saltar algunos y leerlos fuera de orden. Sin
embargo, los archivos secuenciales podían rebobinarse para poder leerlos todas las veces que
fuera necesario. Los archivos secuenciales eran convenientes cuando el medio de
almacenamiento era cinta magnética en vez de disco.
Cuando se empezó a usar discos para almacenar archivos, se hizo posible leer los bytes o
registros de un archivo fuera de orden, pudiendo acceder a los registros por una llave o clave
en vez de la posición. Los archivos cuyos bytes o registros se pueden leer en cualquier orden
se llaman archivos de acceso aleatorio.
Los archivos de acceso aleatorio son esenciales para muchas aplicaciones, como los sistemas
de bases de datos. Si el cliente de una aerolínea llama y desea reservar un asiento en un vuelo
específico, el programa de reservación debe poder tener acceso al registro para ese vuelo sin
tener que leer primero los miles de registros de otros vuelos.
60
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Dentro del computador, la información se debe almacenar en alguna forma que él entienda o
le resulte cómoda de manejar. Como la memoria del ordenador se basa en componentes
electrónicos, la unidad básica de información será que una posición de memoria esté usada o
no (totalmente llena o totalmente vacía), lo que se representa como un 1 o un 0. Esta unidad
recibe el nombre de bit.
Un bit representa la unidad más pequeña de datos que una computadora puede manejar. Un
bit no es más que una señal eléctrica o pulso electrónico. Un bit es demasiado pequeño para
un uso normal por lo que se usa un conjunto de ellos, 8 bits, que forman un byte.
En informática, la unidad básica de información es el byte. En la práctica, podemos pensar
que un byte es el equivalente a un carácter (número, letra, símbolo, etc.). Si un cierto texto
está formado por 2000caracteres, podemos esperar que ocupe unos 2000 bytes de espacio en
nuestro disco.
Eso sí, suele ocurrir que realmente un texto de 2000 caracteres que se guarde en el ordenador
ocupe más de 2000 bytes, porque se suele incluir información adicional sobre los tipos de
letra que se han utilizado, cursivas, negritas, márgenes y formato de página, etc.
Un byte se queda corto a la hora de manejar textos o datos algo más largos, con lo que se
recurre a un múltiplo suyo, el kilobyte, que se suele abreviar KB.Cuando se manejan datos
más extensos, necesitamos múltiplos de mayor capacidad como, el megabyte o MB, que es
1000 KB (en realidad 1024 KB) o algo más de un millón de bytes. Para unidades de
almacenamiento de gran capacidad, su tamaño no se suele medir en megabytes, sino en el
múltiplo siguiente: en Gigabytes, con la correspondencia 1GB = 1024 MB. Así, es habitual
que un equipo actual tenga una memoria RAM entre 4 y 8 GB, así como un disco duro de
entre 250 GB y 500GB o más.
Figura 31. Principales prefijos métricos del sistema de numeración decimal
En la tabla anterior se muestran los principales prefijos métricos del sistema de numeración
decimal. En computación, las unidades de almacenamiento se manejan de manera similar
61
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
aunque con una pequeña diferencia. En teoría, el prefijo kilo quiere decir mil, luego un
kilobyte debería ser 1000 bytes, pero en los ordenadores conviene buscar por comodidad
(sistema de numeración binario)una potencia de 2 por lo que se usa 210 =1024. Así, la
equivalencia exacta es 1Kb = 1024 bytes.
La siguiente tabla muestra las principales unidades métricas usadas en informática y sus
equivalencias:
Figura 32. Principales unidades de almacenamiento utilizadas en computación
62
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
63
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
UNICODE
64
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
(dos bytes) sería 99. Sin embargo, si utilizamos notación binaria para almacenar enteros, el
rango puede ir de 0 a 65.535 (216 – 1) para números de 16 bits. Por consiguiente, la notación
binaria (o variantes de ellas) es la más utilizada para el almacenamiento de datos numéricos
codificados.
La solución que se adopta para la representación de datos numéricos es la siguiente: al
introducir un número en la computadora se codifica y se almacena como un texto o cadena
de caracteres, pero dentro del programa a cada dato se le envía un tipo de dato específico y es
tarea del programador asociar cada dato al tipo adecuado correspondiente a las tareas y
operaciones que se vayan a realizar con dicho dato.
El método práctico realizado por la computadora es que una vez definidos los datos
numéricos de un programa, una rutina (función interna) de la biblioteca del compilador
(traductor) del lenguaje de programación se encarga de transformar la cadena de caracteres
que representa el número en su notación binaria. Existen dos formas de representar los datos
numéricos: números enteros o números reales.
SISTEMA BINARIO
65
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
66
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Si se desea convertir una cantidad que tiene una parte entera y otra fraccionaria de base diez
a base dos, la parte entera se divide sucesivamente entre 2 y los restos resultantes se toman
en orden contrario a como se encontraron. La parte fraccionaria se multiplica por 2 y el
entero del resultado conforma la parte fraccionaria en el orden en que fueron encontrados.
Este procedimiento se ilustra en el siguiente ejemplo.
Ejemplo 2: Convertir el número 28.3710 a binario.
Solución. Parte entera:
Resto
28/2 = 14, resto 0
14/2 = 7, resto 0
7/2 = 3, resto 1
3/2 = 1, resto 1
1/2 = 0, resto 1
Los restos se toman en orden inverso a como fueron encontrados.
Solución parte. Parte fraccionaria:
Entero
0.37x2 = 0.74 0
0.74x2 = 1.48 1
0.48x2 = 0.96 0
0.96x2 = 1.92 1
0.92x2 = 1.84
Los enteros se toman en el mismo orden en que fueron encontrados.
Se podría seguir aproximando para determinar más dígitos en la parte fraccionaria y obtener
así un resultado más exacto, sin embargo para ilustrar el procedimiento es suficiente con
cuatro dígitos después del punto que separa a la parte entera de la parte fraccionaria. De esta
forma, el resultado es:28.3710 = 11100.01012
67
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
1. ¿Qué es un dato?
2. ¿Qué es información?
3. ¿Qué es un sistema de archivos?
4. ¿Cuáles tipos de sistemas de archivos existen y cuáles son sus características?
5. ¿Qué es un sistema de gestión de base de datos (DBMS)?
6. ¿Qué es un sistema de información?
7. ¿Qué es una base de datos?
8. ¿Qué es un almacén de datos (DATAWAREHOUSE)?
9. Establezca la diferencia entre base de datos y almacén de datos.
10. ¿Cuáles son las características de un almacén de datos?
11. ¿Qué es un backup (copia de seguridad) y para que se utiliza?
12. Realice los siguientes ejercicios de conversión de unidades:
a. 12 Gigabytes a Megabyte.
b. 65536 bytes a Megabyte.
c. 4 Gigabyte a byte
d. 2 Terabytes a Megabyte.
e. 4294967296 bytes a Kilobyte.
f. 64 Kilobyte a byte.
g. 18446744073709551616 bytes a Terabyte.
h. 250 Gigabyte a Kilobyte.
13. Si suponemos que una canción típica en formato MP3 ocupa cerca de 4.2 Kb, ¿cuántas se
podrían guardar en un reproductor MP3 que tenga 512 Mb de capacidad?
14. ¿Cuántos diskettes de 1,44 Mb harían falta para hacer una copia de seguridad de un
ordenador que tiene un disco duro de 6,4 Gb? ¿Y si usamos compact disc (CD) de 700
Mb, cuántos necesitaríamos?
15. ¿A cuántos CD de 700 Mb equivale la capacidad de almacenamiento de un DVD de 4,7
Gb? ¿Y la de uno de 8,5 Gb?
16. Expresa en sistema binario los números decimales 17, 101, 83, 45. 250.25
17. Expresa en sistema decimal los números binarios: 01100110, 10110010, 11111111,
00101101, 10010001.11
68
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
UNIDAD II
70
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
• Bien definido:si se sigue un algoritmo dos veces, con el mismo conjunto de entradas,
se debe obtener el mismo resultado cada vez. Debe existir un procedimiento que
determine el proceso de ejecución.
• Finito o realizable:tiene fin; un número determinado de pasos. Es decir, El proceso
algorítmico debe terminar después de una cantidad finita de pasos. Se dice que un
algoritmo es inaplicable cuando se ejecuta con un conjunto de datos iniciales y el
proceso resulta infinito o durante la ejecución se encuentra con un obstáculo
insuperable sin arrojar un resultado.
EJEMPLO 1
Un procedimiento que realizamos varias veces al día consiste en lavarnos los dientes.
Veamos la forma de expresar este procedimiento como un Algoritmo:
1. Tomar la crema dental
2. Destapar la crema dental
3. Tomar el cepillo de dientes
4. Aplicar crema dental al cepillo
5. Tapar la crema dental
6. Abrir la llave del lavamanos
7. Remojar el cepillo con la crema dental
8. Cerrar la llave del lavamanos
9. Frotar los dientes con el cepillo
10. Abrir la llave del lavamanos
11. Enjuagarse la boca
12. Enjuagar el cepillo
13. Cerrar la llave del lavamanos
14. Secarse la cara y las manos con una toalla
EJEMPLO 2
El ejemplo de cambiar una bombilla fundida es uno de los más utilizados por su sencillez
para mostrar los pasos de un Algoritmo:
1. Ubicar una escalera debajo de la bombilla dañada.
2. Tomar la bombilla nueva.
3. Subir por la escalera
4. Quitar la bombilla averiada
5. Enroscar la bombilla nueva
6. Bajar de la escalera
71
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Estos algoritmos deciden de qué modo se deberá transmitir algo que llega, y cómo
seguirá un conjunto de pasos encadenados. Se dividen fundamentalmente entre
adaptativos y estáticos, los primeros con cierta capacidad de aprendizaje y ajuste a la
circunstancia, mientras que los segundos funcionan mecánicamente, siempre del
mismo modo. Es importante decir que los algoritmos de encaminamiento cuentan con
una propia subdivisión, según el camino que se toma para que la transmisión llegue
de manera efectiva (ejemplos de estos tipos son: por el camino más corto, de manera
óptima, basado en el flujo, etc.).
C. También los algoritmos han sido clasificados según la estrategia que se utiliza para llegar
al resultado.
• Algoritmos probabilísticos:no se puede estar seguro de la exactitud de la respuesta
que darán. bien presentan soluciones aproximadas del problema, o bien presentan
soluciones que pueden ser correctas pero también erróneas. Algunos de los pasos de
este tipo de algoritmos están en función de valores pseudoaleatorios.
• Algoritmos determinísticos:el comportamiento del algoritmo es lineal, (cada paso
tiene un paso sucesor y un paso predecesor) y por lo tanto predictivo, si se conocen
72
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
• ¿Qué entradas se requieren? (tipo de datos con los cuales se trabaja y cantidad).
• ¿Cuál es la salida deseada? (tipo de datos de los resultados y cantidad).
• ¿Qué método produce la salida deseada?
• Requisitos o requerimientos adicionales y restricciones a la solución.
Por ejemplo, suponga que recibe la siguiente tarea: “Escriba un programa que nos
proporcione la información que necesitamos sobre los círculos. Termínelo para mañana”.
Un análisis simple de esta solicitud de programa revela que no es un problema bien definido
en absoluto, porque no sabemos con exactitud qué información de salida se requiere. Por ello,
sería un error enorme comenzar de inmediato a escribir un programa para solucionarlo. Para
aclarar y definir el planteamiento del problema, su primer paso deberá ser ponerse en
contacto con “La gerencia” para definir con exactitud qué va a producir el programa (sus
salidas). Suponga que hizo esto y se enteró que lo que en realidad se deseaba es un programa
para calcular y mostrar la circunferencia de un círculo cuando se da el radio. Debido a que
existe una fórmula para convertir la entrada en la salida, puede proceder al siguiente paso. Si
no se está seguro de cómo obtener la salida requerida o exactamente cuáles entradas se
necesitan, se requiere un análisis más profundo. Esto de manera típica significa obtener más
información antecedente acerca del problema o aplicación. Con frecuencia también implica
73
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
hacer uno o más cálculos manuales para asegurar que se entiende qué entradas son necesarias
y cómo deben combinarse para lograr la salida deseada.
Innumerables horas se han dedicado a escribir programas de computadora que nunca se han
usado o han causado una animosidad considerable entre el programador y el usuario debido a
que el programador no produjo lo que el usuario necesitaba o esperaba. Los programadores
exitosos entienden y evitan esto al asegurarse que entienden los requerimientos del problema.
Éste es el primer paso en la creación de un programa y el más importante, porque en él se
determinan las especificaciones para la solución final del programa. Si los requerimientos no
son entendidos por completo antes que comience la programación, los resultados casi
siempre son desastrosos.
Los programadores experimentados entienden la importancia de analizar y comprender los
requerimientos del programa antes de codificarlo, en especial si también han elaborado
programas que después han tenido que desmantelarse y rehacerse por completo. La clave del
éxito aquí, la cual a fin de cuentas determina el éxito del programa final, es determinar el
propósito principal del sistema visto por la persona que hace la solicitud.
Sin tener en cuenta cómo se hizo el análisis, o por quién, al concluirlo deberá haber una
comprensión clara de:
74
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Coste original
Entradas Vida útil
Valor de recuperación
Depreciación cumulada
Cálculo de la depreciación acumulada en cada
Proceso
año
Cálculo del valor del automóvil en cada año
75
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Los problemas complejos se pueden resolver más eficazmente con la computadora cuando se
rompen en sub-problemas que sean más fáciles de solucionar que el original. Es el método de
divide y vencerás (divide and conquer), mencionado anteriormente, y que consiste en dividir
un problema complejo en otros más simples. Así, el problema de encontrar la superficie y la
longitud de un círculo se puede dividir en cuatro problemas más simples o
subproblemascomo se muestra en la figura 5.1.
Figura 34 Diseño descendente de un algoritmo
Para programas pequeños el algoritmo seleccionado puede ser en extremo simple y consistir
de sólo uno o más cálculos. De manera más general, la solución inicial debe refinarse y
organizarse en subsistemas más pequeños, con especificaciones sobre la forma en que los
subsistemas interactuarán entre sí. Para lograr este objetivo, la descripción del algoritmo
comienza desde el requerimiento de nivel más alto (superior) y procede en forma
descendente a las partes que deben elaborarse para lograr este requerimiento.
La descomposición del problema original en subproblemas más simples y a continuación la
división de estos subproblemas en otros más simples que pueden ser implementados para su
solución en la computadora se denomina diseño descendente (top-downdesign).
Normalmente, los pasos diseñados en el primer esbozo del algoritmo son incompletos e
indicarán sólo unos pocos pasos (un máximo de doce aproximadamente). Tras esta primera
descripción, éstos se amplían en una descripción más detallada con más pasos específicos.
Este proceso se denomina refinamiento del algoritmo (stepwiserefinement). Para problemas
76
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El proceso que convierte los resultados del análisis del problema en un diseño modular con
refinamientos sucesivos que permitan una posterior traducción a un lenguaje se denomina
diseño del algoritmo.
Las ventajas más importantes del diseño descendente son:
77
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
aplican sobre un conjunto de datos que sirven como entrada para el programa, y produce
como resultado otra serie de datos que se derivan de los primeros al aplicar sobre los datos de
entrada las instrucciones.
6.3. LENGUAJES DE PROGRAMACIÓN
78
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Código escrito en C
79
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Aún resulta bastante más difícil de seguir. Pero eso todavía no es lo que el ordenador
entiende, aunque tiene una equivalencia casi directa. Lo que el ordenador realmente es capaz
de comprender son secuencias de ceros y unos.
ENSAMBLADORES, INTÉRPRETES Y COMPILADORES
80
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Las dos herramientas más utilizadas comúnmente para diseñar algoritmos son: diagramas de
flujo y pseudocódigos.
Un diagrama de flujo es la representación gráfica de un algoritmo.
El 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
programas. El pseudocódigo es una narrativa o descripción en lenguaje natural de los pasos
de un algoritmo.
Los diagramas de flujo son una herramienta de programación estandarizada que permite
representar de manera gráfica un algoritmo. Gracias a los diagramas de flujos se puede tener
una mejor comprensión de los pasos de un algoritmo.
Así pues, un diagrama de flujo es un esquema gráfico, que representa todas las operaciones a
ser realizadas por el ordenador, sobre la información de entrada, así como el orden en que
deben ser realizadas dichas operaciones.
6.5.1. NOTACIÓN O SIMBOLOGÍA
Los diagramas de flujo están compuestos por una serie de símbolos que han sido
normalizados por el Instituto Norteamericano de Normalización (ANSI), y los más
frecuentemente empleados se muestran en la Figura 6.3.
81
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
• Permite tener una visión global del problema y una mejor comprensión del mismo.
• Identificar las áreas en las que se divide el problema.
• Permite identificar las entradas y salidas de cada una de las áreas en que hemos
dividido el problema.
• Facilita la corrección e introducción de cambios en los modelos.
• Permite visualizar si se han contemplado todos los requerimientos del problema.
82
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
1. Todo diagrama de flujo debe empezar y terminar con los símbolos de inicio y fin.
2. Todos los símbolos deben estar conectados por medio de líneas de conexión.
3. Se debe dibujar de forma que el diagrama se pueda leer claramente, de arriba hacia
abajo y de izquierda a derecha.
4. A un símbolo de proceso pueden llegar varias líneas de conexión.
5. A un símbolo de decisión o condición pueden llegarle varias líneas de conexión, pero
de él solo pueden salir dos líneas, que corresponden al hecho de que se cumpla la
condición o que no se cumpla (Si o No).
6. A un símbolo de inicio de proceso no llega ninguna línea de conexión y de él solo
puede partir una línea de conexión.
7. A un símbolo de final de proceso, pueden llegar muchas líneas de conexión, pero de
él no puede salir ninguna.
Cada uno de los símbolos puede utilizarse una o más veces dentro de un diagrama de flujo,
esto va a depender de las necesidades del algoritmo.
6.5.2. OPERADORES
Los operadores son utilizados para realizar las operaciones matemáticas fundamentales
permitidas en el computador y manipular el valor de las variables dentro del programa. Los
operadores pueden clasificarse por el tipo de operación que realizan en: operadores
aritméticos, operadores relacionales, operadores lógicos. A continuación se describe cada
uno.
Operadores aritméticos
Los operadores aritméticos como su nombre lo indica son utilizados para realizar las
operaciones matemáticas elementales. En la siguiente tabla se describen los operadores
aritméticos y su uso.
Operador Operación
+ Suma
- Resta
* Multiplicación
/ División
% Residuo de la división
83
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Operadores relacionales
Los operadores relacionales sirven para establecer una relación entre dos expresiones o
variables. Esta relación puede ser de asignación o de comparación. Los operadores de
comparación se utilizan para comparar el valor de dos o más expresiones o variables, es decir,
se utilizar para establecer condiciones. Los operadores de asignación sirven para asignar el
valor de una expresión o variable a otra o, asignar el resultado de una operación. En la
siguiente tabla se describen los operadores relacionales y su significado.
Operador Significado
= Igual a
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<>, != No igual a, o diferente de
! Negación
Operadores lógicos
Los operadores lógicos son usualmente usados con sentencias condicionales o relacionales.
Los operadores lógicos son generalmente utilizados para concatenar o encadenar dos o más
condiciones.
Operador Significado
AND Es verdadero si ambas expresiones son verdaderas.
OR Es verdadero si almenos una de las expresiones es verdadera.
Niega una expresión. Es decir, transforma lo verdadero en falso y lo
NOT falso en verdadero.
Operación de asignación
La operación de asignación es el modo de almacenar o asignar valores a una variable. La
operación de asignación se representa con el símbolo u operador ←(en la mayoría de los
lenguajes de programación, como C, C++, Java, el signo de la operación asignación es =).
Sin embargo, es preferible el uso de la flecha en la redacción de algoritmos para evitar
84
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Variables constantes
Las variables constantes son un tipo de variable a las que se le asigna un valor al momento de
su declaración. Este valor no cambia durante la ejecución del programa.
Por ejemplo: pi=3.1415926535
Clasificación de las variables por su contenido
Las variables, de acuerdo al contenido de los datos que almacenan, se pueden clasifican en:
variables numéricas, variables alfanuméricas, variables logicas. Las variables numéricas
85
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
solo pueden contener valores numéricos como: 1, 2, 500, 0.5, 0.523, etc. Las variables
alfanuméricas pueden contener cualquier tipo de carácter como: “C”, “00-00-0000”, “hola”,
“0ABC001”, etc., y las variables lógicas, solo pueden tener dos valores (true o false,
verdadero o falso).
Para declarar y utilizar una variable en los diagramas de flujo, se pueden utilizar los símbolos
de entrada o salida de datos y el símbolo de proceso. Es conveniente también declarar las
variables al inicio del diagrama antes de utilizarlas en el resto del programa. El ejemplo
siguiente muestra la forma correcta de declarar y utilizar variables en un diagrama de flujo.
1. En el primer símbolo de
proceso se declaran dos variables
“suma” y “n1”; se le asigna un valor a
cada una.
2. En el primer símbolo de
impresión se muestra un mensaje al
usuario indicándole que “Escriba un
número”.
3. En el símbolo de E/S se declara
la variable “n2” y se espera a que el
usuario le asigne un valor.
4. En el segundo símbolo de
proceso a la variable “suma” se le
asigna la suma de las variables “n1” y
“n2”.
5. En el símbolo de impresión se
imprime el valor de la variable
“suma”.
86
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Casi cualquier problema del mundo real que debamos resolver o tarea que deseemos realizar
supondrá tomar decisiones: dar una serie de pasos en función de si se cumplen ciertas
condiciones o no. En muchas ocasiones, además esos pasos deberán ser repetitivos.
Las estructuras de control sirven para modelar todas estas situaciones, es decir, las
estructuras de control permite controlar el flujo del programa. Las estructuras de control
pueden clasificarse según su aplicación en estructuras de selección y estructuras repetitivas.
Estructuras de selección
Las estructuras de selección permiten escoger una opción de varias. Es decir, permiten
evaluar condiciones dentro del programa.Para definir una condición en un diagrama de flujo
se utiliza el símbolo de rombo y cualquiera de los operadores relacionales, también se puede
utilizar una combinación de los operadores lógicos, (depende de la lógica de la condición). El
siguiente ejemplo muestra el uso de las estructuras de control en un diagrama de flujo.
87
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
En este diagrama se crea una condición que evalúa si el valor de la variable “A” es mayor
que el valor de la variable “B”. La condición está representada por el símbolo con forma de
rombo. Esta condición crea dos caminos u opciones dentro del flujo normal del programa y
solo se puede elegir una de ellas (es decir, SI o No, Verdadero o Falso). Si la condición es
verdadera se imprime un mensaje que dice “A es mayor que B”, y el programa termina. De
lo contrario, se imprime un mensaje que dice “B es mayor o igual que A”, y el programa
también termina.
En resumen, las estructuras de selección permiten crear condiciones dentro de los programas,
algoritmos o diagramas de flujo. Estas condiciones permiten dividir el flujo normal del
programa en dos caminos u opciones de las que solo se puede elegir una, es decir, la que
haga verdadera o haga falsa la condición.
Estructuras repetitivas (ciclos o bucles)
Ya hemos visto como evaluar y definir condiciones. Pero como podemos hacer que una parte
de nuestros algoritmos se repita varias veces.
La repuesta es utilizar una estructura repetitiva. Las estructuras repetitivas hacen que una
parte de nuestros programas se repita hasta que se cumpla una determinada condición. Es
aquí donde entra el concepto contador.
Un contadores una variable que podemos utilizar dentro de una sentencia repetitiva
aumentando o disminuyendo su valor en cada repetición. Esta variable la utilizamos para
establecer la condición de salida de la sección que se repite en nuestro algoritmo. A
continuación se muestran ejemplos de cómo podemos utilizar estructuras repetitivas en la
definición de un diagrama de flujo.
88
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
89
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Supongamos que queremos llenar 5 cajas con 10 bolas cada una, de forma que primero
llenemos la caja 1, luego la 2, luego la 3 y así sucesivamente hasta llenar las 5 cajas.
En este diagrama de flujo hemos utilizado la variable “B” para contar las bolas que vamos
introduciendo en cada una de las cajas y a la variable “C”, para contar las cajas que vamos
llenando. Por tanto “B” tendrá que ir de 1 hasta 10 y “C” desde 1 hasta 5.
La sentencia o bucle interno representado por la variable “B” se debe ejecutar 10 veces para
colocar las 10 bolas en la caja 1. Se sale de este bucle interno, y luego, se toma otra caja, es
decir, se aumenta en 1 la variable “C”; el bucle interno la variable “B” vuelve a ejecutarse
otras 10 veces hasta llenar la caja. Se sigue el mismo proceso hasta que todas las cajas estén
llenas, es decir el bucle externo se haya ejecutado 5 veces.
90
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
6.5.5. EJEMPLOS
91
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
92
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
93
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
94
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
95
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El algoritmo comienza con la palabra start y finaliza con la palabra end, en inglés (inicio,
fin,en español). Entre estas palabras, sólo se escribe una instrucción o acción por línea. La
línea precedida por // se denomina comentario. Es una información al lector del programa y
96
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
no realiza ninguna instrucción ejecutable, sólo tiene efecto como documentación interna del
programa.
6.6.1. ESTRUCTURAGENERAL DE UN PSEUDOCÓDIGO
• Estructuras secuenciales
• Estructuras repetitivas
• Condicional (decisión, selección).
El uso del diseño descendente en los programas, la ejecución de operaciones secuenciales, la
utilización de ciclos repetitivos y, la toma de decisiones y alternativas de proceso, ofrecen
amplias posibilidades para resolver problemas mediante la construcción de procedimientos
(Castellanos &Ferreyra, 2000b).
Palabras reservadas
Para la construcción de seudocódigos es conveniente utilizar una serie de palabras o notación
estandarizada para evitar ambigüedades y mejorar la compresión y el aprendizaje. Estas se
conocen con el nombre de palabras reservadas.
El seudocódigo debe ser escrito en lenguaje natural, es decir, en un leguaje que el ser
humano entienda (inglés, español, chino, etc.). Por convención utilizaremos el idioma ingles
para la escritura de nuestros seudocódigos. En la siguiente tabla se muestran las palabras
reservadas básicas utilizadas en la construcción de un seudocódigo.
97
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
98
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Para leer una o más variables simultáneamente en una sola instrucción de lectura, se pueden
separar cada una de las variables por coma, como se muestra a continuación.
99
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Para imprimir o escribir el valor de una o más variables se pueden utilizar las instrucciones
print o writecon la lista de variables separadas por coma, similar a como se utilizó en la
instrucción de lectura de datos de varias variables.
Estructura secuencial
Una estructura secuencial es aquella en la que cada acción (instrucción) es precedida o sigue
a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la
siguiente y así sucesivamente hasta el final del proceso. La estructura secuencial tiene una
entrada y una salida.Su representación gráfica se muestra en las Figura 37
100
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
101
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
La estructura de decisión múltiple evaluará una expresión que podrá tomar N valores
distintos, 1, 2, 3, 4,..., N. Según que elija uno de estos valores en la condición, se realizará
una de las N acciones, o lo que es igual, el flujo del algoritmo seguirá un determinado
camino entre los N posibles. Los diferentes modelos de pseudocódigo de la estructura de
decisión múltiple se representan en el siguiente ejemplo.
102
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
103
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
La estructura desde-hasta comienza con un valor inicial de la variable índice en este caso
“numero”, y las acciones especificadas se ejecutan, a menos que el valor inicial sea mayor
que el valor final (10 en este caso). La variable índice se incrementa en uno y si el nuevo
valor no excede al final, se ejecutan de nuevo las acciones. Por consiguiente, las acciones
específicas en el bucle se ejecutan para cada valor de la variable índice desde el valor inicial
hasta el valor final con el incremento de uno en uno. El incremento de la variable índice se
hace de forma automática y siempre es 1 si no se indica expresamente lo contrario.
El formato de la estructura desde-hasta varía si se desea un incremento distinto a 1, bien
positivo, bien negativo (decremento).
En el ejemplo anterior se muestra cómo hacer que una instrucción repetitiva (for-to) se
incremente en 2 con cada iteración. Para este se utiliza el modificador inc en la estructura de
definición del ciclo seguido del valor que queremos incrementar en este cado 2 pero podría
ser 3, 4, 5,…., n.
Si queremos hacer, que en vez de incrementar nuestro bucle este decremente su valor,
bastaría con hacer una pequeña modificación en su estructura como se muestra en el ejemplo
siguiente.
104
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
En este ejemplo el valor de la variable índice debe iniciarse con un valor alto, es decir, mayor
al valor de salida del ciclo y luego utilizando el modificadordec podemos hacer que nuestra
sentencia repetitiva decremente el valor en 1, 2, 3, n.
Estructuras repetitivas (while, mientras)
La estructura repetitiva mientras (while) es aquella en que el cuerpo del bucle se repite
mientras se cumple una determinada condición. Cuando se ejecuta la instrucción mientras, la
primera cosa que sucede es que se evalúa la condición (una expresión booleana). Si se evalúa
falsa, no se toma ninguna acción, es decir, no se ejecuta el bucle y el programa prosigue en la
siguiente instrucción al bucle. Si la expresión booleana es verdadera, entonces se ejecuta el
cuerpo del bucle, después de lo cual se evalúa de nuevo la expresión booleana. Este proceso
se repite una y otra vez mientras la expresión booleana (condición) sea verdadera.
A continuación se muestra un ejemplo de cómo utilizar la sentencia repetitiva while. El
algoritmo imprime los 5 primerosnúmeros entero.
105
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
106
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Los algoritmos deben ser escritos en lenguajes similares a los programas. En este manual se
utilizara esencialmente el lenguaje algorítmico, basado en pseudocódigo.
Las declaraciones definen o declaran las variables y constantes que tengan nombres. Las
acciones ejecutables son las acciones que posteriormente deberá realizar la computación
cuando el algoritmo convertido en programa se ejecute.
107
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Para poder hacer una correcta conversión entre los diagramas de flujo y el seudocódigo o
viceversa, debemos conocer la correspondencia que existe entre la simbología de los
diagramas de flujo y las palabras reservadas usadas en la escritura del seudocódigo. En la
siguiente tabla se muestran las correspondencias.
start/end
read/write
Print
Declaración de variables var, cualquier
operación o sentencia de asignación ←
if-then/if-then-else
108
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
for-to/while/do-while
6.6.2. EJEMPLOS
1. Diseñar un algoritmo que sume los números pares comprendidos entre 2 y 100.
109
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
2. Se desea realizar el algoritmo que resuelva el siguiente problema: Cálculo de los salarios
mensuales de los empleados de una empresa, sabiendo que éstos se calculan en base a las
horas semanales trabajadas y de acuerdo a un precio especificado por horas. Si se pasan
de cuarenta horas semanales, las horas extraordinarias se pagarán a razón de 1,5 veces la
hora ordinaria.
110
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
111
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
4. Dados tres números, determinar si la suma de cualquier pareja de ellos es igual al tercer
número. Si se cumple esta condición, escribir “Iguales” y, en caso contrario, escribir
“Distintas”.
112
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
113
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
18. Una agencia automotriz ofrece planes de crédito para la adquisición de los diferentes
modelos de automóviles. Si el automóvil vale más de $250,000.00 la agencia solicita un
35% de enganche y el resto debe cubrirse en 24 mensualidades pagando un 20% de
intereses mensual. Si el automóvil tiene un valor máximo de $250,000.00 se requiere un
enganche del 25% y el resto se debe pagar en 18 mensualidades pagando un 35% de
intereses mensual. La agencia desea saber, en base al precio de un automóvil que un
determinado cliente elija, cual es el monto del iniciar, cual es el número y el monto de las
mensualidades que este debe cubrir y el interés.
19. En una empresa, se darán aumentos a los empleados según la categoría de su contrato
actual de la siguiente forma:
20. Realice un diagrama que permita leer n números e indique cuantos están entre 200 y
5000, cuántos son mayores de 100 y cuántos son menos de 30 e imprima el resultado.
21. Diagrama de flujo que realice lo siguiente, un maestro desea saber qué porcentaje de
hombres y que porcentaje de mujeres hay en un grupo de estudiantes.
22. Realice un diagrama que genere los números impares entre 1-500 y luego los imprima.
23. Realice un diagrama de flujo que calcule el sueldo neto de dos empleados sabiendo que al
empleado 1 se le descuenta 400 y al dos 500 por concepto de cooperativa, y el descuento
de AFP es de un 2.58% y SFS 2.86% del sueldo bruto e imprima nombre, sueldo neto y
el descuento.
24. Una empresa paga a sus empleados de acuerdo al número de horas trabajadas, el
empleado gana N pesos por horas y N*1.5 por las horas extras; las horas extras son las
que exceden las 40 horas. Realice un diagrama que dadas las horas trabajadas calcule el
sueldo de dicho empleado y lo imprima.
25. Las reglas para calcular la pensión de una persona son las siguientes:
a. Los hombres de 65 o más años reciben 50 pesos por mes.
b. Los casados reciben 25 pesos adicionales por semana.
c. Las mujeres de 60 años o más reciben 35 pesos, sin cuota por estar casadas.
d. Además cualquier hombre o mujer de 70 años o más reciben 20 pesos.
114
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
26. Realice un diagrama que tenga como datos de entrada la edad, el sexo y el estado civil de
una persona calcule la pensión que le corresponde. Debe detectar si la persona es
demasiado joven para tener una pensión.
27. Realice un diagrama de flujo que genere los números primos que oscilan entre 1 y 400 y
luego los imprima.
28. Realice un diagrama que genere los números pares entre 1-500 y luego los imprima.
29. Realice un diagrama de flujo que lea un número e imprima su factorial.
30. Una compañía decide dar a sus empleados un bono de 1/7 de su salario anual. Hacer un
diagrama de flujo que calcule los bonos que dará a cada uno de sus 100 empleados si se
tienen como datos de entrada el nombre y el salario de cada uno de los empleados.
31. La población estudiantil de UTESA se incrementa a razón de un 9% anual. Si la
población estudiantil actual es de 5,621 alumnos, hacer un diagrama de flujo para
calcular la población que tendrá dentro de 10 años.
32. Un carpintero necesita un programa que calcule el precio de cualquier escritorio que pida
un cliente basándose en los siguientes datos:
• El precio de todos los escritorios es como mínimo 1000 pesos
• Si la superficie es mayor de 400cm agregar 100 pesos
• Si la madera es caoba agregar 900 pesos y si es roble 500
• Por cada gaveta que tenga el escritorio agregar 100 pesos
33. El precio de un boleto de ida y vuelta en tren se calcula tomando en cuenta la cantidad de
kilómetros que se van a recorrer, el precio por kilómetro es de 10 pesos. Este precio tiene
un descuento de 25% si el viaje de regreso se realiza 4 días después del viaje de ida o el
recorrido supera los 500 KMS. Realice un diagrama que indique cuanto debe pagar una
persona dos el número de kilómetros y el número de días de regreso.
115
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
UNIDAD III
Un array, o arreglo, es una secuencia de posiciones de memoria a las que se puede acceder
directamente, que contiene datos del mismo tipo y pueden ser seleccionados individualmente
mediante el uso de subíndices.
Un arreglo es una colección finita, ordenada y homogénea de datos. Es finita porque todo
arreglo tiene un tamaño límite, es decir, se define el número máximo de elementos que puede
almacenar. Es ordenada porque permite hacer referencia al primer elemento, al segundo y así
hasta el enésimo elemento que forme el arreglo. Por último, se dice que es homogénea
porque todos los componentes del arreglo so del mismo tipo de datos (numéricos, caracteres,
etc.).
Un arreglo también se puede ver como una colección lineal de elementos, ya que cada uno de
ellos tiene un predecesor y un sucesor, con excepción del primero que solo tiene sucesor y
del último, que solo tiene predecesor.
En todo arreglo se distingue el nombre, los componentes y los índices. El nombre hace
referencia a la estructura como un todo. Los componentes son los valores que forman el
arreglo, es decir, cada uno de los datos que se almacenan en él. Mientras que los índices o
posiciones se utilizan para recuperar a cada uno de los componentes de manera individual.
Gráficamente un arreglo puede representarse como se muestra en la figura 7.1.
117
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
DECLARACIÓN DE UN ARREGLO
tamaño: es una constante numérica (5, 10, 6) que especifica el tamaño o la cantidad de
elementos del arreglo. El tamaño del arreglo dependerá dela cantidad de memoria disponible
en el ordenador.
Asignación de valores
118
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Luego de declarar un vector el siguiente paso será darle un valor a cada una de sus
posiciones. Para realizar esta operación los valores podrían asignarse manualmente posición
por posición, como se muestra en la figura 39., pero este método es ineficiente cuando el
arreglo tiene un tamaño considerablemente grande. La segunda opción y la más adecuada es
utilizar alguna estructura repetitiva que nos permita iterar sobre las posiciones o subíndices
del vector para ir asignando a cada posición un valor. La figura 40., muestra cómo realizar
este procedimiento tanto en seudocódigo como su representación en diagrama de flujo.
Figura 39 llenar arreglo de forma manual
119
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
En el ejemplo anterior, se utilizó un bucle for-to para llenar el vector, pero se podría utilizar
cualquiera de las otras sentencias repetitivas (while, do-while). A cada posición del vector se
le asignó un valor fijo, en este caso 20; se le podría asignar un valor diferente o el contenido
de una variable.
Escritura de vectores
La escritura de un arreglo consiste en imprimir su contenido. Es decir, esta operación
presupone que el arreglo tiene algunos valores asignados y estos son los que se presentan a
algún medio externo, como la pantalla de la computadora o un archivo.
El ejemplo 41, muestra cómo realizar este procedimiento. En este ejemplo se realiza un
proceso un poco diferente. Después de llenar un vector;para imprimir su contenido
deberemos recorrerlo de nuevo, para hacer esto, será necesario reinicializar la variable
utilizada para iteraren cada posición o índice del vector, y luego, utilizar alguna sentencia
repetitiva.
Ejemplo 41 Imprimir el contenido de un vector
120
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
121
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El siguiente ejemplo muestra cómo utilizar este método para realizar una búsqueda en un
vector de 10 elementos. En el ejemplo se asume que el arreglo está lleno, es decir, tiene
valores de datos asignados a cada una de sus posiciones.
122
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
123
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
124
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
125
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Un array puede ser definido de tres dimensiones, cuatro dimensiones, hasta de n-dimensiones.
Los conceptos de rango de subíndices y número de elementos se pueden ampliar
directamente desde arreglos de una y dos dimensiones a estos arreglos de orden más alto. En
general, un array de n-dimensiones requiere que los valores de los subíndicespuedan ser
especificados a fin de identificar un elemento individual del arreglo. Si cada componente de
un arreglo tiene n-subíndices, el arreglo se dice que es sólo de n-dimensiones. El arreglo A
de n-dimensiones se puede identificar como:
Para llenar o recorrer un arreglo de este tipo, se necesita la misma cantidad de estructuras
repetitivas que componentes contiene el arreglo. Es decir, si el arreglo es de 3 componentes,
se necesitaran tres estructuras repetitivas para recorrerlo.
7.2. METODOS DE ORDENAMIENTO
• Creciente: V1<= V2<= V3<=… <= Vn (el primer dato es menor o igual que el
segundo, este es menor o igual que el tercero y así sucesivamente hasta el último
valor.
• Decreciente: V1>= V2>= V3>=… >= Vn (el primer dato es mayor o igual que el
segundo, este es mayor o igual que el tercero y así sucesivamente hasta el último
valor.
Los métodos (algoritmos) de ordenación son numerosos, por ello se debe prestar especial
atención en su elección. ¿Cómo se sabe cuál es el mejor algoritmo? La eficiencia es el factor
que mide la calidad y rendimiento de un algoritmo. En el caso de la operación de ordenación,
dos criterios se suelen seguir a la hora de decidir qué algoritmo —de entre los que resuelven
126
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
• Comparar A[1] y A[2]; si están en orden, se mantienen como están, en caso contrario
se intercambian entre sí. 2.
• A continuación se comparan los elementos 2 y 3; de nuevo se intercambian si es
necesario. 3.
• El proceso continúa hasta que cada elemento del vector ha sido comparado con sus
elementos adyacentes y se han realizado los intercambios necesarios.
La acción intercambiar entre sí los valores de dos elementos A[I], A[I+1] es una acción
compuesta que contiene las siguientes acciones, considerando una variable auxiliar AUX.
127
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
En el siguiente ejemplo, se muestra como emplear este algoritmo para ordenar de forma
ascendente un arreglo (vector) de 10 elementos. En el ejemplo se asume que el arreglo ya
está lleno, así que no será necesario realizar este procedimiento. La implementación se hace
en seudocódigo y diagrama de flujo.
Para clasificar el vector completo se deben realizar las sustituciones correspondientes (N-1)
* (N-1) o bien N2-2N+1 veces. Así, en el caso de un vector de cien elementos (N = 100) se
deben realizar casi 10.000 iteraciones.
128
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Este método consiste en insertar un elemento en el vector en una parte ya ordenada de este
vector y comenzar de nuevo con los elementos restantes.
Para insertar el elemento 45, habrá que insertarlo entre 43 y 65, lo que supone desplazar a la
derecha todos aquellos números de valor superior a 45, es decir, saltar sobre 65 y 84.
El siguiente ejemplo muestra como emplear este algoritmo para ordenar un arreglo (vector)
de 10 elementos de datos.
129
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
En este método, en el peor de los casos, realiza una comparación en la primera iteración, en
la segunda lleva a cabo dos y así hasta hacer longitud-1 comparaciones en la última pasada.
Por lo tanto:
Total comparaciones = longitud*(longitud-1)/2
130
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Si se considera que en cada pasada, en promedio, se compara la mitad de los números antes
de encontrar el lugar de inserción, se debe dividir a la expresión anterior entre 2 para obtener
el número promedio de comparaciones, quedando:
Total comparaciones = longitud*(longitud-1)/4
Este método se basa en buscar el elemento menor del vector y colocarlo en primera posición.
Luego se busca el segundo elemento más pequeño y se coloca en la segunda posición, y así
sucesivamente. Los pasos sucesivos a dar son:
16 96 90 120 80 64
16 64 90 120 80 96
Se continúa así hasta que la lista queda completamente ordenada. Las sucesivas operaciones
serán:
16 64 80 120 90 96
16 64 80 90 120 96
16 64 80 90 96 120
131
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El número de intercambios que se llevan a cabo es igual al número de elementos menos uno,
lo cual queda expresado en la formula.
Total comparaciones = longitud-1
132
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
18 11 27 13 9 4 16
Se elige un pivote, 13. Se recorre la lista desde el extremo izquierdo y se busca un elemento
mayor que 13 (se encuentra el 18). A continuación, se busca desde el extremo derecho un
valor menor que 13 (se encuentra el 4).
18 11 27 13 9 4 16
4 11 27 13 9 18 16
133
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Se sigue recorriendo el vector por la izquierda y se localiza el 27, y a continuación otro valor
bajo se encuentra a la derecha (el 9). Intercambiar estos dos valores y se obtiene
4 11 9 13 27 18 16
Al intentar este proceso una vez más, se encuentra que las exploraciones de los dos extremos
vienen juntos sin encontrar ningún futuro valor que esté “fuera de lugar”. En este punto se
conoce que todos los valores a la derecha son mayores que todos los valores a la izquierda
del pivote. Se ha realizado una partición en la lista original, que se ha quedado dividida en
dos listas más pequeñas:
4 11 9 [13] 27 18 1
Ninguna de ambas listas está ordenada; sin embargo, basados en los resultados de esta
primera partición, se pueden ordenar ahora las dos particiones independientemente. Esto es,
si ordenamos la lista
4 11 9
en su posición, y la lista
27 18 16
4 9 11 13 16 18 27
134
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
135
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Almacenar información en una estructura de datos tiene sentido si después se puede tener
acceso a ella, y para tener acceso se requiere de un algoritmo de búsqueda. Es decir, es esta
operación la que permite recuperar la información previamente almacenada en una estructura.
Por ejemplo, considere que se han almacenado diez números enteros en el arreglo que se
muestra a continuación y que el dato a buscar es 78. La búsqueda comienza a partir de la
primera posición (índice 0) y se compara el 78 con el dato guardado en dicha posición. En
este caso no son iguales por lo que se continúa con la siguiente posición del arreglo que tiene
el valor 14. Nuevamente al comparar se determina que no son iguales, lo que requiere
continuar con el siguiente elemento. La búsqueda termina cuando se compara con el número
almacenado en la posición 4, ya que son iguales y por lo tanto la operación termina con éxito.
Ahora suponga que el dato buscado es el 28, en este caso se compara con todos los números
guardados en el arreglo y como no es igual a ninguno de ellos, la operación fracasa cuando se
llega al último valor.
136
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
137
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Comparaciones mínimas = 1
La búsqueda binaria se puede aplicar solo a arreglos ordenados. Este método se basa en
una idea muy simple con la cual se trata de aprovechar el hecho de saber que el arreglo esta
ordenado. En la práctica esto suele suceder, pero no siempre. Por esta razón la búsqueda
binaria exige una ordenación previa del vector. El algoritmo funciona de la siguiente manera:
Se calcula la posición central del arreglo y se compara el elemento que está en esa posición
con el dato buscado. Si son iguales, la operación se interrumpe ya que se encontró el valor
buscado. En caso contrario puede suceder que sea menor o mayor. Si es el primer caso,
entonces se redefine el espacio de búsqueda con el extremo izquierdo igual a la posición
central más uno (se descartan todos los valores comprendidos entre la posición central y el
índice 0). Si el elemento de la posición central resulta mayor que el dato buscado, entonces
es el extremo derecho el que se asigna con el valor de la posición central menos 1 (se
descartan todos los valores comprendidos entre la posición central y el índice longitud-1). Se
calcula nuevamente la posición central y se repiten estos pasos hasta encontrar el elemento o
hasta que el extremo izquierdo sea mayor que el extremo derecho. Esta última condición
indica que el elemento no se halla en el arreglo.
138
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Para poder medir la velocidad de cálculo del algoritmo de búsqueda binaria se deberán
obtener el número de comparaciones que realiza el algoritmo.
139
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Recuerde que log2 (8) es el exponente al que debe elevarse 2 para obtener 8. Es decir, 3, ya
que 23 = 8. Si n + 1 es una potencia de 2, entonces log2 (n + 1) será un entero. Si n + 1 no es
una potencia de 2, el valor del logaritmo se redondea hasta el siguiente entero. Por ejemplo,
si n es 12, entonces K será 4, ya que log2 (13) (que está entre 3 y 4) se redondeará hasta 4 (24
es 16). En general, en el mejor de los casos se realizará una comparación y, en el peor de los
casos, se real izarán log2 (n + 1) comparaciones. Como término medio, el número de
comparaciones es
1 + log2(n + 1) /2
Para poder efectuar una comparación entre los métodos de búsqueda lineal y búsqueda
binaria, realicemos los cálculos correspondientes para diferentes valores de n.
n = 100
En la búsqueda secuencial se necesitarán (100 + 1)/ 2 = 50 comparaciones.
n = 1.000.000
En la búsqueda secuencial: (1.000.000 + 1)/2 = 500.000 comparaciones
140
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
La búsqueda binaria tiene, sin embargo, inconvenientes a resaltar: El vector debe estar
ordenado y el almacenamiento de un vector ordenado suele plantear problemas en las
inserciones y eliminaciones de elementos.
Este método de búsqueda necesita que los elementos sobre los que se realiza la búsqueda
estén ordenados de acuerdo a una determinada clave.
El método utiliza un arreglo auxiliar denominado array índice. Cada elemento en el array
índice consta de un valor (dato) y la posición que ocupa dicho valor en el correspondiente
arreglo ordenado.
Mediante cada elemento del arreglo índice se asocian grupos de elementos del arreglo inicial.
Los elementos en el índice y en el array deben estar ordenados. El método consta de dos
pasos:
La búsqueda indexada se asemeja a la búsqueda que hacemos en un libro con una gran
cantidad de páginas. Primero realizamos una búsqueda en el índice de contenidos del libro,
luego de que localizamos en el índice el contenido y la página del libro donde se
encuentraeste contenido y, buscamos directamente la página del libro.
Este método mejora la búsqueda ya que no tenemos que ojear el libro página por página, de
manera secuencial, hasta encontrar el contenido que estamos buscando.
141
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Donde:
n: representa el tamaño del arreglo inicial, es decir, la cantidad de elementos que
posee.
k: representa la cantidad de bloques en los que queremos dividir el arreglo inicial.
El resultado de esta operación nos dará el tamaño del arreglo de índices que
utilizaremos:
11/3+1= 4, este será el tamaño del arreglo de índices que se muestra a continuación.
El arreglo de índices será una matriz de 2 filas y 4 columnas. Donde la primera fila
representa la clave por la que realizamos las búsquedas, y la segunda fila representa la
posición donde se encuentra dicho valor en el arreglo inicial.
Por ejemplo, si elemento buscado fuese el 10, en el array de índices indicara la posición 2. Y
la búsqueda en el arreglo inicial comenzara a partir de la posición 6 hasta el final de ese
bloque, es este caso 8.
142
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
143
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
144
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
16. Realice un diagrama de flujo que llene una matriz 20x20 sume sus valores y luego
imprima el resultado.
17. Realice un diagrama de flujo que llene dos matrices 20x20 sume sus valores y luego
imprima el resultado.
18. Realice un diagrama de flujo que llene dos matrices una 20x20 y otra 30x40 sume sus
valores y luego imprima el resultado.
19. Realice un diagrama de flujo que llene una matriz 30x40 luego realice la búsqueda de un
numero e indique si existe o no.
145
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
RAPTOR es un programa de uso gratuito y fácil de instalar, se puede descargar desde su sitio
web oficial. http://raptor.martincarlisle.com/. Luego de descargarse, lo que tenemos que
hacer es ejecutar el programa instalador y el automáticamente completara la instalación del
programa.
Cuando ejecutamos el instalador del programa nos aparecerá un asistente de instalación
como el que se muestra en la figura 8.2. Este es el asistente nos guiara durante todo el
proceso de instalación, y nos permitirá personalizar ciertos parámetros de la instalación del
programa.
148
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Hacemos click en siguiente (Next), el asistente nos muestra la ventana que aparece en la
figura 8.3. En esta ventana tenemos la opción de elegir la ruta o carpeta donde deseamos
instalar el programa. Por defecto lo dejamos como esta. También, tenemos la opción de
instalarlo de forma Everyone, es decir, para cualquier usuario que inicie sesión en nuestra
maquina o, podemos instalarlo como Just me, de esta forma solo el usuario que lo instalo
podrá utilizarlo. Por defecto lo dejamos como esta y damos click en siguiente (Next).
149
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
150
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El programa RAPTOR está escrito en una combinación de Ada, C# y C++, y se ejecuta sobre
la plataforma .NET Framework de Microsoft.
RAPTOR posee una interfaz sencilla, fácil de aprender y utilizar. Figura 8.5. Al iniciarlo, el
programa comienza abriendo un proyecto en blanco; solamente con los símbolos de inicio y
fin, característicos de todos los diagramas de flujo. El usuario puede entonces crear y probar
sus diagramas de manera rápida añadiendo símbolos necesarios al especio de trabajo y
diseñado sus diagramas de flujo.
151
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
152
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
La barra de menú se encuentra ubicada en la parte superior del programa. Esta provee una
serie de herramientas y utilidades que pueden ser empleadas para la manipulación del
programa y los contenidos creados con él. A continuación se describen las opciones más
importantes.
El menú Archivo (File) proporciona
las siguientes opciones:
Nuevo (New) permite crear un nuevo
proyecto o diagrama de flujo.
Abrir (Open) abre un proyecto o
diagrama de flujo previamente creado
y guardado en disco.
Guardar (Save) guarda los cambios
realizado en el diagrama de flujo
actual.
Guardar como (Save As) guarda el
diagrama de flujo actual con un
nombre diferente.
Compilar (Compile) cuando esta
opción es seleccionada RAPTOR
permite guardar una versión
compilada de un diagrama de flujo.
Un diagrama de flujo compilado no
puede ser visto ni modificado, solo
ejecutado. Una versión compilada de
153
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Copiar al Portapapeles (PrinttoClipboard) guarda una imagen o mapa de bits del diagrama
de flujo actual en el portapapeles, permitiendo de forma rápida y fácil pegar la imagen en
otras aplicaciones como Word, Paint, PowerPoint, etc.
Más abajo de muestra una lista en el menú, que es un pequeño historial de los diagramas de
flujos creados o abiertos recientemente.
154
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Truncar (Truncate) con esta opción solo se muestra una parte del texto
dentro de cada símbolo. Los símbolos conservan un tamaño estándar o
uniforme.
No Texto (No Text), hace que símbolos dentro del diagrama de flujo no muestren su
contenido.
155
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
156
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
157
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Reiniciar (Reset) detiene la ejecución del algoritmo y reinicia los valores de todas las
variables del diagrama.
Pausar (pause) temporalmente detiene la ejecución del algoritmo hasta que esta sea
reanudada.
Quitar todos los breakpoints (Clear allBreakpoints) remueve todos los puntos de
interrupción colocados en el diagrama.
158
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El botón imprimir (print) permite enviar el diagrama de flujo actual a una impresora.
Pausar (pause) detiene la ejecución del algoritmo hasta que esta sea reanudada por el
usuario.
159
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
160
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Las ventanas de edición de símbolos se utilizan para editar y modificar los símbolos
agregados a un diagrama de flujo. La información requerida en la ventana puede variar
dependiendo el tipo de símbolo que se esté editando, pero en general conserva la misma
forma. A continuación se muestran las ventanas de edición para cuatro símbolos básicos
utilizados en el diseño de los diagramas de flujo.
161
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Ventana de edición para el símbolo de asignación Ventana de edición para el símbolo de entrada (input)
Ventana de edición para el símbolo de salida (Output) Ventana de edición para Selection y Loop
162
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
163
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
164
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Cada símbolo de estos puede ser utilizado cero, una, dos o más veces en la construcción de
un mismo diagrama de flujo; esto va a depender de las necesidades del algoritmo.
165
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
1. Arrastramos con el mouse el símbolo que queremos insertar del panel de símbolos y
lo colocamos en el espacio de trabajo en medio de los símbolos donde queremos
insertarlo; sobre la flecha o conector que los une.
2. Seleccionamos el símbolo que queremos insertar del panel de símbolo haciendo click
sobre él. Luego colocamos el puntero del mouse encima del conector o flecha entre
los símbolos donde queremos insertar la nueva figura, hasta que el puntero
del mouse adopte la forma de mano, luego hacemos click para insertar el
nuevo símbolo.
3. De la misma manera que la anterior, colocamos el puntero del mouse encima del
conector o flecha entre los símbolos donde queremos insertar la nueva figura, hasta
que el puntero del mouse adopte forma de mano, luego hacemos click
derecho con el mouse y en el menú contextual que nos aparece
seleccionamos la figura que queremos insertar.
166
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
167
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Eliminar
Para eliminar una figura del espacio de trabajo se puede hacer de varias formas:
C. Con la figura que queremos remover seleccionada, podemos elegir del menú Edit
(Editar) la opción Delete o Cut (Cortar) para eliminar la figura.
168
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Las variables se utilizan para almacenar datos dentro del diagrama de flujo. Estos datos
pueden ser el resultado de cálculos u operaciones realizadas; o, un valor asignado por el
Figura 52 Ventana de edición para la sentencia de asignación usuario al momento de declarar la variable.
Antes de utilizar una variable y sus datos
debemos declararla. Para declarar una
variable podemos hacerlo de varias formas:
Utilizando el símbolo o la sentencia de
asignación (assignament)
169
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Al modificar el valor de este símbolo nos aparece la ventana que se muestra en la figura 8.11.
En esta ventana podemos declarar la variable
Figura 52 Ventana de edición para la sentencia de entrada (Input) y esperar a que el usuario le asigne un valor
durante la ejecución del algoritmo.
En el primer campo, escribimos el mensaje
que queremos que se muestre al usuario
para pedir por ejemplo, que escriba un valor.
Este mensaje deberá ir encerado entre
comillas de la siguiente forma “Mensaje
para el usuario”.
En el segundo campo escribimos el nombre
de la variable que queremos declarar, y que
le será asignado un valor.
170
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Advertencia
Las variables deben ser declaradas antes de ser utilizadas o el programa RAPTOR nos dará
un error si intentamos utilizar una variable que no haya sido declarada previamente.
171
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Los comentarios se agregan a un símbolo en específico, y solo se puede agregar uno por
símbolo. Para agregar comentarios a los símbolos, se puede realizar de una de las siguientes
formas:
A. Haciendo click derecho sobre la figura a la que queremos agregar el comentario, en el
menú contextual que se muestra, seleccionamos la opción Comment (Comentarios).
172
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
173
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
count = 10
count mod 2 != 0
x > maximum
Operadoresbooleanos
Además, las expresiones booleanas pueden combinarse utilizando los operadores AND, OR
y NOT para formular decisiones lógicas arbitrariamente complejas. Algunos ejemplos
incluyen:
174
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
n < 1 or n > 10
Para editar el contenido de este símbolo y definir nuestra condición utilizamos la ventana que
se muestra en la figura 8.15.
Figura 60 Ventana de edición para la sentencia selección (selection)
En el cuadro de texto que aparece en la
ventana podemos escribir la expresión
booleana o condición a ser evaluada en el
diagrama de flujo.
175
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Si queremos hacer que una sección de nuestro diagrama de flujo se repita una o varias veces
podemos utilizar el símbolo Loop.
Para modificar o agregar contenido a este símbolo podemos utilizar la ventana que se
muestra en la figura 8.16. En esta ventana definimos la condición o expresión booleana que
controlara la ejecución del bucle.
176
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Cuando se está ejecutando un diagrama de flujo, los símbolos del diagrama se mostrarán en
color verde cada vez que el proceso de ejecución pasa por una sentencia o símbolo del
diagrama, similar a la figura 8.17.
1. La primera, podemos utilizar la ejecución paso por paso haciendo uso de la tecla F10
o presionando el botón de la barra de herramientas. De esta forma podemos ir
analizando paso por paso la ejecución del algoritmo y el contenido de las
variables.
177
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Los puntos de interrupción se mostraran como pequeños círculos rojos adyacentes a las
figuras o símbolos.
Para añadir un punto de interrupción hacemos click derecho sobre el símbolo donde
queremos colocarlo y en el menú contextual seleccionamos la opción ToggleBreakpoint.
178
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
8.4. EJEMPLOS
1. Diseñar y diagramar un algoritmo que permita imprimir los 20 primeros números pares
mayores que cero. El diagrama deberá mostrar los resultados en la ventana
MasterConsole.
179
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
2. Diseñar un diagrama de flujo que sume todos los números impares menores que 50. El
resultado de la suma deberá almacenarse en una variable y mostrarse a través de la
MasterConsole.
180
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
3. Diseñe un diagrama de flujo que multiplique por 2 todos los números múltiplos de 5
menores que 100. Muestre los resultados a través de la MasterConsole.
181
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
Start
a←0
cant ← 0
Loop
a←a+1
"Digite elementos"
GET vector[a]
Yes a==3
No
a←0
Loop
a←a+1
PUT vector[a]¶
Yes a==3
No
End
182
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
REFERENCIAS BIBLIOGRÁFICAS
Bronson J., G. (2007). C++ para ingeniería y ciencias (2da edición). Mexico:
CengageLearning Editores.
Cabanes, N. (2015). Introducción a la programación con C#. (Rev. 0.99zz). Creative
Commons BY-NC-ND
Deitel M., H. y Deitel J., P. (2008). Como programar en C++ (6ta edición). PEARSON
EDUCACIÓN, México.
García-Beltrán, A y Martínez R. (Octubre 2000). Breve Historia de la Informática. División
de Informática Industrial ETSI Industriales – Universidad Politécnica de Madrid. Madrid,
España.
Gurdati Bueno, S. (2007). Estructura de datos orientada a objetos: Algoritmos con C++.
(1ra edición). México: PERSON EDUCACION.
Joyanes Aguilar, L. (2008). Fundamentos de programación. Algoritmos, estructura de datos
y objetos (4ta edición). Madrid, España: McGRAW-HILL/INTERAMERICANA DE
ESPAÑA.
Jiménez, José A. (2009). Matemáticas para la Computación. (1ra edición). México:
Alfaomega Grupo Editor, S.A. de C.V.
López García, J. C. (2009). Algoritmos y Programación. Guía para docentes. (2da edición).
Colombia: Fundación Gabriel Piedrajita Uribe, Eduteka.
Laudon, K. C. y Laudon, J. P (2012). Sistemas de Información Gerencial (12va edición).
México: Pearson Educación.
Mannino, M. V. (2007). Administración de base de datos. Diseño y desarrollo de
aplicaciones. (3ra edición). México: McGRAW-HILL/INTERAMERICANA EDITORES.
Pressman, Roger S. (2010). Ingeniería del Software. Un Enfoque Práctico. (7ma edición).
México: McGraw-Hill Interamericana Editores.
Principios básicos de enrutamiento y switching. Cisco Networking Academy, CCNA1 V5.
RAPTOR (Rapid Algorithmic Prototyping Too for Ordered Reasoning) V. 4.0.7.0001.
(2016). (programa de computadora).
Sommerville, I. (2011). Ingeniería de Software. (9na edición). México: Pearson
Educacion/Addison-Wesley.
183
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
184
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales
El codigo ASCII
http://www.elcodigoascii.com.ar/
Para consultas adicionales y ampliar conocimientos puede visitar los siguientes enlaces
Algoritmos, Pseudocódigo y Diagrama de Flujo.
https://www.youtube.com/watch?v=r_g3LW_TpXA
Algoritmia básica.
https://www.youtube.com/watch?v=QXW5airPeEk&list=PLZ0UFciczQg6eGwr2wjWU4-
uXBAv8AK6D
Cursos ingeniería sistemas.
https://www.youtube.com/watch?v=Lkin0SpafSw&list=PLv2CkC6TI11qAnGZuyxcICgJ53
1_T02lD&index=3
Diagrama de flujo y Pseudocódigo que determina tu edad.
https://www.youtube.com/watch?v=kmDVAMBcLDQ
Do While VS While [EstructurasRepetitivas].
https://www.youtube.com/watch?v=aEyEcH7SEmE
El bucle FOR [EstructuraRepetitiva]. https://www.youtube.com/watch?v=yBjaS-REYUc
Introducción a Raptor | Alazapa Tutoriales.
https://www.youtube.com/watch?v=ZnQdNRdOgFw
185