Está en la página 1de 190

UNIVERSIDAD TECNOLÓGICA DE SANTIAGO

UTESA
Facultad de Arquitectura e Ingeniería
Departamento de Informática

MANUAL DE LABORATORIO
INTRODUCCIÓN A LOS ALGORITMOS COMPUTACIONALES
(INF-117)

Santiago de los Caballeros República Dominicana


Marzo 2017
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

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

V. PROCESAMIENTO DE DATOS ................................................................................................ 53


5.1. Ciclos de procesamiento de datos ................................................................................. 54
5.2. Conceptos de base de datos .......................................................................................... 55
5.3. Unidades métricas y de almacenamiento ...................................................................... 60
5.4. Representación de la información en las computadoras................................................. 62
5.5. EJERCICION Y PREGUNTAS DE INVESTIGACION Y REPASO ..................................................... 68

VI. UNIDAD II:TÉCNICAS DE PROGRAMACIÓN, PARTE I ............................................... 69


6.1. Algoritmos computacionales ......................................................................................... 70
6.1.1.Tipos de algoritmos ........................................................................................................ 72
6.1.2.Análisis del problema...................................................................................................... 73
6.1.3.Diseño de la solución ...................................................................................................... 75
6.2. Concepto de programa ................................................................................................. 77
6.3. Lenguajes de programación .......................................................................................... 78
6.4. Herramientas de programación ..................................................................................... 81
6.5. Representación gráfica de los algoritmos (Diagramas de flujo) ....................................... 81
6.5.1.Notación o simbología .................................................................................................... 81
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

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

VII. UNIDAD III: TÉCNICAS DE PROGRAMACION, PARTE II .......................................... 116


7.1. Arreglos: vectores y matrices ........................................................................................ 117
7.1.1.Arreglos unidimensionales ............................................................................................. 118
7.1.2.Ordenamiento de vectores ............................................................................................. 121
7.1.3.Búsqueda en vectores..................................................................................................... 122
7.1.4.Arreglos bidimensionales................................................................................................ 123
7.1.5.Arreglos multidimensionales .......................................................................................... 126
7.2. Métodos de ordenamiento ........................................................................................... 126
7.2.1.Ordenamiento por intercambio o burbuja ..................................................................... 127
7.2.2.Ordenamiento por inserción .......................................................................................... 129
7.2.3.Ordenación por selección ............................................................................................... 131
7.2.4.Ordenación rápida (QuickSort) ....................................................................................... 133
7.3. Métodos de búsquedas ................................................................................................. 135
7.3.1.Búsqueda lineal o secuencial .......................................................................................... 136
7.3.2.Búsqueda binaria ............................................................................................................ 138
7.3.3.Búsqueda indexada......................................................................................................... 141
7.4. EJERCICIOS DE PROGRAMACIÓN(SEUDOCODIGO Y DIAGRAMAS DE FLUJO) ........................ 144

VIII. INTRODUCCIÓN A LA PROGRAMACIÓN CON RAPTOR ................................... 145


8.1. Introducción a RAPTOR ................................................................................................. 148
8.1.1.¿Qué es RAPTOR? ........................................................................................................... 148
8.1.2.Instalación del programa ................................................................................................ 148
8.1.3.Presentación general del entorno .................................................................................. 151
8.2. El entorno de desarrollo RAPTOR .................................................................................. 153
8.2.1.Barra de menús ............................................................................................................... 153
8.2.2.Barra de herramientas .................................................................................................... 158
8.2.3.Panel de símbolos ........................................................................................................... 159
8.2.4.Espacio de trabajo .......................................................................................................... 160
8.2.5.Ventanas de edición de símbolos ................................................................................... 161
8.2.6.Ventana de visualización ................................................................................................ 163
8.2.7.MasterConsole ................................................................................................................ 164
8.3. Trabajando con el entorno ............................................................................................ 164
8.3.1.Notación y símbolos básicos ........................................................................................... 164
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

8.3.2.Agregar símbolos al espacio de trabajo .......................................................................... 166


8.3.3.Editar símbolos ............................................................................................................... 167
8.3.4.Declaración y uso de variables ....................................................................................... 169
8.3.5.Agregar comentarios a nuestros diagramas ................................................................... 172
8.3.6.Uso de condiciones y sentencias repetitivas .................................................................. 173
8.3.7.Prueba y ejecución de nuestros diagramas .................................................................... 176
8.3.8.Depurando nuestros diagramas ..................................................................................... 177
8.4. Ejemplos ...................................................................................................................... 179

REFERENCIAS BIBLIOGRÁFICAS ............................................................................... 185


Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

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á:

• 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.

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

Al finalizar el curso el estudiante tendrá la capacidad para la resolución de problemas


matemáticos que puedan presentarse en la ingeniería, así como también la capacidad para
desarrollar un pensamiento lógico y construir algoritmos para resolver problemas. Además,
podrá aprender de manera autónoma nuevos conocimientos y técnicas para el análisis,
desarrollo y explotación de sistemas.
Para la elaboración de este manual es justo reconocer el aporte de los profesores Ing.
Fausto Rodríguez, M.A. y el Ing. Francisco A. Carrasco, M.A., ambos instructores de ésta
Asignatura, quienes desinteresadamente aportaron parte del material utilizado para la
elaboración del mismo. Gracias profesores por el soporte brindado.
También es importante reconocer la labor desarrollada por los estudiantes Jofiel Pineda
Ricourt y Neuri Peña Torres, ambos pertenecientes a la Carrera de Ingeniería en Sistemas de
UTESA, quienes realizaron una ardua labor en la recopilación del material bibliográfico
utilizado para la completar la terminación de este manual.
Por último, se debe reconocer el encomiable y desinteresado trabajo llevado a cabo por
el Ing. Ramón A. Martínez de Mota, M.S., quien tuvo a su cargo la coordinación,
compilación y edición de este instrumento educativo, además de aportar su propio material
didáctico que es utilizado en la impartición de este curso en la Universidad. Gracias profesor.
Esperamos que con el uso de este manual tanto el profesor así como los estudiantes
participantes en este curso, puedan contar con una herramienta didáctica y actualizada, ya
que la misma debería ser revisada y corregida anualmente por un comité de profesores de la
asignatura. Es por esta razón que se cuenta con una copia en formato digital para facilitar su
edición. Además, se utiliza un portal WEB para ofrecer informaciones sobre ejercicios
prácticos de la asignatura y otros materiales actualizados de este manual.

Muchas Gracias.

2
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

II. PROGRAMA DE LA ASIGNATURA

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.

Nivel:Básico( ) General( ) Especializado( x )

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

• Métodos de ordenamiento.: Inserción, Selección,


Intercambio o Burbuja, QuickSort.
• Métodos de Búsqueda: Lineal o secuencial,
Binaria, Indexada

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

La evaluación comprende el nivel de participación, pertinencia de las soluciones en los


casos presentados, los ejercicios prácticos y la calidad de la aplicación de la lógica. Al
finalizar cada unidad, se realizan las siguientes pruebas parciales.

Primer Segundo Tercer parcial


parcial parcial
Tareas de 5% Tareas de 5% Ejercicios 10%
Investigación Investigación
Ejercicios 5% Ejercicios 5% Tareas de 5%
Investigación
Prueba escrita 20% Prueba escrita 20% Prueba escrita 15%
Total 30% Total 30% Total 30%

Bibliografía (Internetgrafía)

Libro de Texto:

Joyanes Aguilar, Luis. (2006). Programación en C++, Algoritmos, Estructuras de


Datos y Objetos. España, Editora McGraw Hill.

Libros de Consultas:

Rodríguez, L, & Fernández, M. (2003). Fundamentos de Programación. “Libro


deproblemas”. España, Editora McGraw Hill.
Mata Toledo (2001). Introducción a la Programación. España, Editora McGraw Hill.
DeGiusti (2002). Algoritmos, datos y programas (1ª. Ed.). México, Editora Prentice
Hall.

6
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

III. PLANIFICACIÓN DE LA ASIGNATURA

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.

Análisis de problemas mediante


algoritmos: gráfica y seudocódigo.
Diseño de algoritmos aplicados a Análisis de problemas
09 problemas. en clases 5 pts.
10 Segunda prueba de evaluación Segunda evaluación 20 pts.
Investigación sobre el
11 Series tema
Arreglos : Vectores y Matrices
- Arreglos unidimensionales
- Ordenamiento de vectores
- Búsquedas en vectores
- Arreglos bidimensionales Análisis de casos.
12 - Arreglos multidimensionales Tareas 5 pts.
Métodos de
ordenamiento:intercambio o burbuja,
13 Inserción, Selección, QuickSort. Ejercicios y tareas 10 pts.
Métodos de Búsqueda:Lineal o
14 secuencial, Binaria, Indexada. Problemas. Ejercicios
15 Tercera prueba de evaluación Tercera evaluación 20 pts.

8
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

UNIDAD I

INTRODUCCIÓN A LOS SISTEMAS COMPUTACIONALES


Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

4.1. LA INFORMATICA

Conceptualmente, la informática se refiere al procesamiento automático de información


mediante dispositivos electrónicos y sistemas computacionales. Se considera que una
información es tratada de forma automática cuando el proceso comprende la entrada de datos,
su procesamiento, y salida.
La informática es la técnica vinculada al desarrollo de la computadora; es un conjunto de
conocimientos, tantos teóricos como prácticos, sobre cómo se construye, como funciona y
como se emplea ésta.
La informática reúne a muchas de las técnicas que el hombre ha desarrollado con el objetivo
de potenciar sus capacidades de pensamiento, memoria y comunicación. Su área de
aplicación no tiene límites: la informática se utiliza en la gestión de negocios, en el
almacenamiento de información, en el control de procesos, en las comunicaciones, en los
transportes, en la medicina y en muchos otros sectores.
El término informática abarca también los principales fundamentos de las ciencias de la
computación, como la programación para el desarrollo de software, la arquitectura de las
computadoras y del hardware, las redes como internet y la inteligencia artificial. Incluso se
aplica en varios temas de la electrónica.
La informática combina los aspectos teóricos y prácticos de la ingeniería, electrónica, teoría
de la información, matemáticas, lógica y comportamiento humano. Los aspectos de la
informática cubren desde la programación y la arquitectura informática hasta la inteligencia
artificial y la robótica.

9
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

4.1.1. CONCEPTOS DE INFORMÁTICA

Informática es un término que reúne dos conceptos, el de “información” y el de


“automático”. La informática alude a las técnicas de procesamiento de datos que se realizan
de forma automática. Implica un proceso por el cual los datos se almacenan, se organizan y
se transmiten de un lugar a otro, en un proceso de comunicación fundamental a través de la
computación.
 Informática, es la ciencia que estudia el tratamiento automático de la información
mediante maquinas llamadas ordenadores.
 La Informática, es una ciencia que estudia métodos, técnicas y procesos con el fin de
almacenar, procesar y transmitir información en formato digital.
 Informática o computación, más específicamente “ciencia de la computación”,
conjunto de conocimientos científicos y técnicos que hacen posible el tratamiento
automático de la información por medio de ordenadores o computadoras.
 La Informática, es la ciencia que estudia la información, y los medios de
automatización y transmisión para poder tratarla y procesarla. Se podría decir que, la
materia prima de la informática es la información, mientras que su objetivo formal es
el tratamiento de la misma.
 Informática, es un conjunto de conocimientos científicos y métodos que permiten
analizar, mejorar e implementar actualizaciones a la comunicación, envío y recepción
de información a través de los ordenadores.
Se puede considerar a la informática como una rama de la ingeniería que se ocupa de
vincular hardware (aparatos físicos formados por componentes electrónicos), redes de datos
y software (programas que “le dicen” al hardware “qué hacer”), orientando este proceso
hacia el objetivo planteado. Hablar de informática es, básicamente, hablar de computadoras y
de programas.

4.1.2. IMPORTANCIA DE LA INFORMÁTICA

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

Además, un gran número de disciplinas convergen en la informática: inteligencia artificial,


electrónica, redes de datos, arquitectura de ordenadores, métodos de desarrollo de software,
matemática, etc., asistiendo a físicos, médicos, biólogos, meteorólogos, químicos, ingenieros,
investigadores científicos, comunicadores, artistas, empresarios y a casi cualquier persona
que viva en una sociedad industrial moderna.
La informática es de gran importancia para la sociedad porque:

• Existe un sin número de programas y aplicaciones ya creadas que facilitan el trabajo


de cualquier área, esto da como resultado un cambio drástico en la forma de utilizar
las computadoras y realizar nuestras actividades.
• La informática y la ciencia de la computación han permitido extender todas las
actividades del hombre, logrando potenciar de manera extraordinaria la investigación
y el desarrollo.
• Asiste a las personas y las organizaciones en sus procesos de toma de decisiones, y lo
mejora considerablemente, debido a la capacidad de cálculo y la velocidad en el
tratamiento de la información de los equipos de cómputo.
En el ámbito de la industria, gracias a la informática se han reducido muchos costos en la
producción, y ha habido un gran incremento de la producción de mercancías gracias a la
automatización de los procesos de diseño, fabricación y testeo. Por ejemplo, lo que antes
producían mil hombres a mano, hoy pueden producirlo un par de máquinas que siguen un
algoritmo determinado y lo hacen con un menor margen de errores, mejor acabado y en
menos tiempo, o también en el testeo de diferentes productos o servicios, lo que además,
resulta ser más seguro para la vida humana, como podría suceder en la realización de un test
de seguridad de un automóvil para probar los airbags y demás. Gracias a las redes mundiales
de comunicación como Internet, la informática es vista cada vez más como un elemento de
creación e intercambio cultural altamente participativo.
Si bien se trata de una disciplina nacida con un enfoque hacia/para la industria, a fines del
Siglo XX se popularizó y se expandió también hacia el uso hogareño, reemplazando o
potenciando la utilidad de otros electrodomésticos (equipos de música, televisores, etc.),
servicios (telefonía, etc.) o medios masivos de comunicación (diarios, cine, revistas, etc.).
La informática ha permitido agilizar otras actividades: como el transporte y el turismo, y
creado otras como el comercio electrónico;donde se pueden comprar y/o reservar por medio
de un sistema informático. Para el Estado mismo sería muy difícil llevar a cabo todo tipo de
tareas sin la computación. Justamente, por esta razón, es que hoy en día se pide tanto, a la
hora de solicitar un trabajo, que se posean conocimientos de computación, porque
difícilmente se podría realizar un trabajo administrativo sin saber manejar una computadora.

11
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

La informática ha penetrado también en la aeronáutica, en la actividad agrícola, en la


navegación y en el transporte urbano, también en la vigilancia y la seguridad de los
individuos. Se ha demostrado que con la informática se puede incorporar una considerable
cantidad de valor agregado a los bienes y servicios de una organización, transformar el modo
en el que estas organizaciones compiten y funcionan, y también ayudar a reinventar el modo
en el que la organización opera, cuantificando de forma clara donde están las ventajas y
desventajas de su actividad.

4.1.3. ORIGEN DEL TERMINO INFORMÁTICA

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

lógico (almacenamiento y organización de datos o información) además de la comunicación


entre estas dos partes y, lógicamente, entre ordenadores.
4.2. LA COMPUTADORA

Se puede definir a la computadora (u ordenador) como toda máquina electrónica que se


encuentra dotada de memoria de gran capacidad y de sistemas de tratamiento de información,
que es capaz de resolver problemas aritméticos y lógicos por medio de la utilización
automática de programas registrados en él.
Un computador es un sistema complejo, formado por una gran cantidad de componentes
electrónicos; utilizado para procesar información y obtener resultados, capaz de ejecutar
cálculos y tomar decisiones a velocidades millones o cientos de millones de veces más
rápidas que la que pueden hacerlo los seres humanos.

• Estructura: el modo en que los componentes están interrelacionados.


• Funcionamiento: la operación de cada componente individual como parte de la
estructura.
FUNCIONAMIENTO DEL COMPUTADOR

Tanto la estructura como el funcionamiento de un Figura 1. Una visión funcional de un computador

computador son en esenciasencillos. La figura 4.1


señala las funciones básicas que un computador
puede llevar a cabo. En términos generales hay solo
cuatro:

• 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

Figura 3. Representación interna del computador

• Unidad central de procesamiento (CPU, Central ProcessingUnit): controla el


funcionamiento del computador y lleva a cabo sus funciones de procesamiento de
datos.
• Memoria principal: almacena datos de programas y procesos que están siendo
ejecutados por la CPU.
• E/S: transfiere datos entre el computador y el entorno interno o externo al mismo.
• Sistema de interconexión (BUS): es un mecanismo que proporciona la
comunicación entre la CPU, la memoria principal y la E/S.
Cada uno de estos componentes forma la base fundamental sobre la que se construye la
computación actual. Sin embargo, para nuestro objetivo, el componente más interesante y de

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.

4.2.1. IMPORTANCIA DE LA COMPUTADORA EN OTRAS AREAS

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

El papel de los programas de computadoras es fundamental; sin una lista de instrucciones a


seguir, la computadora es virtualmente inútil. Los lenguajes de programación nos permiten
escribir esos programas y por consiguiente comunicarnos con las computadoras. La principal
razón para que las personas aprendan lenguajes y técnicas de programación es utilizar la
computadora como una herramienta para resolver problemas.

4.2.2. HISTORIA DE LA COMPUTADORA

No se conoce con exactitud cuándo inició el hombre a realizar operaciones de forma


automática o semiautomática, ni tampoco, cuando empezó a utilizar y emplear el cálculo en
sus actividades. El cálculo no participaba de la vida del hombre primitivo, probablemente
todas sus capacidades se reducían a contar con los dedos de la mano. Durante los grandes
imperios orientales se conocían algunos sistemas de numeración pero no orientados hacia el
cálculo.
El Abaco es quizás el primer instrumento de cálculo rudimentario empleado por el hombre
hace miles de años.El Abaco de polvo constituye la más antigua herramienta de cálculo
conocida y se remonta a la llamada cuna de la civilización hace por lo menos 5000 años en el
Valle del Tigris-Éufrates, al suroeste de Asia. El ábaco de polvo no era más que una pequeña
superficie cubierta de polvo o de arena, sobre la cual se marcaban las cifras con un estilo.
Figura 5. Abaco antiguo, antecesor de la computadora moderna

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.

Figura 6. Abaco neperiano

Figura 7 Abaco neperiano

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

Figura 8. Pascalina Figura 9. Rueda de Leibnitz

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

En 1854 el matemático inglés George Boole, sienta las bases de lo


que conocemos hoy como Teoría de la Información, con la
publicación de su obra maestra, “Una Investigación de las Leyes del
Pensamiento” sobre las cuales se fundamentan las Teorías
Matemáticas de la Lógica y las Probabilidades. En su obra, Boole
expresa la lógica como una forma extremadamente simple de álgebra,
en la cual se lleva a cabo el razonamiento mediante la manipulación
de fórmulas más sencillas que aquéllas utilizadas en el álgebra
tradicional. Su teoría de la lógica, que reconoce tres operaciones
básicas: AND, OR y NOT, no tuvo ningún uso práctico hasta bastante después, cuando
llegaría a formar parte del desarrollo de la conmutación de circuitos telefónicos, así como del
diseño de ordenadores electrónicos.

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

Ya en 1937, Claude Elwood Shannon, estudiante de post-grado en el Instituto Tecnológico


de Massachusetts (MIT), demostró que se podría aplicar el álgebra
booleana a problemas de circuitos en conmutación. Como tesis para la
licenciatura en ingeniería eléctrica, Shannon publicó un trabajo titulado
“Un Análisis Simbólico de Circuitos de Relé y de Conmutación”,
aplicando la lógica simbólica de Boole al análisis de circuitos de
conmutación y demostrando que el álgebra podía realizarse mediante
relés.
En 1936, el inglés Alan M. Turing especificó un ordenador teórico
completamente abstracto que pudiera llevar a cabo cualquier cálculo
realizable por un ser humano. “La MáquinaUniversal de Turing”
presentaba muchos aspectos que, posteriormente, se incorporarían a todas
las máquinas de cálculo generales. Su trabajo tiene un valor especial para
entender las capacidades y limitaciones de los ordenadores en el diseño
de los lenguajes de programación y en el estudio de la inteligencia
artificial. Entre otros proyectos, colaboró en la construcción de la serie “Colossus”,
máquinas de propósito específico, dedicadas a la criptografía.
Los aparatos más eficientes en el ámbito del cálculo científico y militar
en la primera mitad del siglo XX empleaban la hoy en desuso tecnología
analógica. Más tarde, el uso de la tecnología electromecánica de los relés
telefónicos impulsó nuevas máquinas de cálculo como el enorme Mark I,
desarrollado entre 1937 y 1944 por el profesor Howard Aiken con
financiación de IBM en la Universidad de Harvard.
La tecnología del calculador universal Mark I era totalmente electromecánica, basada en
3000 relés electromagnéticos, ruedas dentadas y embragues electromecánicos. Los relés
podían abrirse o cerrarse en una centésima de segundo, lo que le permitía efectuar cálculos
cinco o seis veces más rápido que un ser humano;pero era mucho más lento que cualquier
calculadora de bolsillo.El Mark I podía realizar todas las operaciones aritméticas básicas y
tenía secciones especiales para calcular funciones matemáticas tales como logaritmos y
senos. Aunque se le denominó calculador, podía tomar un número limitado de decisiones por
lo que se podía considerar, en realidad, un ordenador.

22
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Figura 15. Computador MARK I

El Mark I trabajó en proyectos de balística y en el diseño de buques para la marina de los


Estados Unidos, así como también para la Fuerza Aérea y para la Comisión de Energía
Atómica.
Para 1939 un joven ingeniero alemán llamado Konrad Zuse desarrollo lo que también se ha
considerado como el primer computador digital programable de propósito general llamada
Z3: una máquina que construyo con reveladores eléctricos para automatizar el proceso de
realizar cálculos de ingeniería.
Figura 16. Computador Z3 de Konrad Suze

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

estaban representados en forma decimal y la aritmética se realizaba también en forma


decimal.
La ENIAC era mil veces más rápida que sus predecesoras electromecánicas, y una hora de
trabajo del ENIAC era equivalente a una semana del Mark I. Pesaba 30 toneladas y ocupaba
un espacio de 450 m2y contenía 18,000 tubos de vacío con tecnología basada en diodos y
tríodos, tenía que programarse manualmente conectándola a 3 tableros que contenían más de
6000 interruptores. Introducir un nuevo programa era un proceso muy tedioso que requería
días o incluso semanas. La imponente escala y las numerosas aplicaciones generales de la
ENIAC señalaron el comienzo de la primera generación de computadoras.
Figura 18. Computador ENIAC

En el mismo año de 1946, el Dr. John Von Neumannde la


Universidad de Princeton propuso el concepto de “computadora
con programa almacenado” que consistía en un programa cuyas
instrucciones se almacenaban en la memoria de la computadora.
Von Neumann descubrió que era posible que los programas se
almacenaran en la memoria de la computadora y que se podrían
cambiar más fácilmente que las complejas conexiones de cables y
fijaciones de interruptores del ENIAC. Von Neumann diseñó una
computadora basada en esta idea, llamada EDVAC (ElectronicDiscreteVariable
AutomaticComputer) con la colaboración de Eckert y Mauchly en 1950. Su diseño ha
constituido el nacimiento de la computación moderna y ha dado origen a la denominada
arquitectura de Von Neumann que es la base de las computadoras digitales actuales.

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

GENERACIONES DEL COMPUTADOR

La clasificación de los computadores en generaciones basándose en la tecnología de


hardware empleada fue ampliamente aceptada. Como se muestra en la tabla, cada nueva
generación se caracteriza por una mayor velocidad, mayor capacidad de memoria y menor
tamaño que la generación anterior.

FECHAS VELOCIDAD TIPICA


GENERACION APROXIMADAS TECNOLOGIA (operaciones por segundo)
1ra 1946-1957 Válvulas o tubos de vacío 40,000
da
2 1957-1964 Transistores 200,000
Circuitos integrados, microelectrónica y
3ra 1965-1971 1,000,000
multiprogramación.
4ta 1972-1977 Integración a gran escala 10,000,000
ta
5 1778-7991 Alta integración 100,000,000
Ultra alta integración, multi-núcleo, multi-
6ta A partir de 1991 1,000,000,000
threading y hyperthreading.
Generaciones del computador basadas en su tecnología de hardware

PRIMERA GENERACION (1946-1957)

La primera generación de computadoras se caracteriza por lo siguiente:

• Es creado el primer computador electrónico de propósito general del mundo llamado


ENIAC en la Universidad de Pensilvania, por el Dr. John W. Mauchly y John
PresperEckert.
• Se empleaba la tecnología de las válvulas o tubos de vacíos para la construcción de
los computadores, reemplazando los anteriores componentes electromecánicos de
relés.
• Las computadoras eran creadas para propósitos educativos, militares y de
investigación.
• En 1946 es ideada la arquitectura de Von Neumann,delcomputador con programa
almacenado,que aun en la actualidad se sigue utilizando. La arquitectura establecía
que un computador consta de: a) una memoria principal que almacena tanto datos
como instrucciones, b) una unidad aritmético-lógica (ALU) capaz de hacer
operaciones con datos binarios, c) una unidad de control que interpreta las
instrucciones en memoria y provoca su ejecución y d) un equipo de entrada salida
(E/S) dirigido por la unidad de control.
• El computador UNIVAC I marca el inicio de los computadores comerciales a
principio de los cincuenta. Fue el primer computador comercial de éxito.

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

Cuando la computadora terminaba el trabajo que estaba ejecutando en un momento dado, un


operador iba a la impresora y arrancaba las hojas de resultados para llevarlas al cuarto de
salida de datos, para que el programador pudiera recogerlas posteriormente.
Dado el alto costo del equipo, no es sorprendente que las personas buscaran rápidamente
formas de reducir el tiempo desperdiciado. La solución que se adoptó en forma general fue el
sistema de procesamiento por lotes. La idea detrás de este concepto era recolectar una
bandeja llena de trabajos en el cuarto de entrada de datos y luego pasarlos a una cinta
magnética mediante el uso de una pequeña computadora relativamente económica.
También hay otros cambios. En la segunda generación se introdujeron unidades lógicas y
aritméticas y unidades de control más complejas, el uso de lenguajes de programación de alto
nivel y se proporcionó un software del sistema con el computador.
TERCERA GENERACION (1964-1971)

En 1958 ocurrió algo que revoluciono la electrónica y comenzó la era de la microelectrónica:


la invención del circuito integrado. El circuito integrado define la tercera generación de
computadores.
La tercera generación se caracteriza también, por el desarrolloy expansión de la
microelectrónica o miniaturización de los componentes del computador, el aumento de la
capacidad de los computadores, la multiprogramación y lenguajes de programación de
propósito general, y, la creación del sistema operativo del computador.
La IBM System/360 fue la primera línea importante de computadoras en utilizar circuitos
integrados (a pequeña escala), con lo cual se pudo ofrecer una mayor ventaja de
precio/rendimiento en comparación con las máquinas de segunda generación, las cuales
fueron construidas a partir de transistores individuales. El 360 fue el éxito de la década y
consolido a IBM como el dominante absoluto en las ventas de computadores.
En el mismo año que IBM lanzo su primer System/360 tuvo lugar otro lanzamiento
trascendental: el PDP-8 de DEC. En aquella época, cuando la mayoría de los computadores
requería una habitación con aire acondicionado, el PDP-8 era lo bastante pequeño para ser
colocado en lo alto de una mesa de laboratorio o embebido en otro equipo. El PDP-8,
estableció el concepto de minicomputador.
CUARTA GENERACION (1971-1983)

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)

Un interesante desarrollo que empezó a surgir a mediados de la década de 1980 es el


crecimiento de las redes de computadoras personales que ejecutan sistemas operativos en red
y sistemas operativos distribuidos (Tanenbaum y Van Steen, 2007).
Surge la computadora portátil o laptop tal cual la conocemos en la actualidad. IBM presenta
su primera laptop o computadora portátil. En vista de la acelerada marcha de la
microelectrónica, la sociedad industrial se ha dado a la tarea de poner también a esa altura el
desarrollo del software y los sistemas con los que se manejaban las computadoras. Estas son
la base de las computadoras modernas de hoy en día. La quinta generación de computadoras,
también conocida por sus siglas en inglés, FGCS (FifthGenerationComputerSystems) fue un
ambicioso proyecto hecho por Japón a finales de la década de los 80. Su objetivo era el
desarrollo de una nueva clase de computadoras que utilizarían técnicas y tecnologías de
inteligencia artificial tanto en el plano del hardware como del software.
Como unidad de medida del rendimiento y prestaciones de estas computadoras se empleaba
la cantidad de LIPS (LogicalInferences Per Second) capaz de realizar durante la ejecución de
las distintas tareas programadas. Para su desarrollo se emplearon diferentes tipos de
arquitecturas VLSI (VeryLargeScaleIntegration).

30
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

3.2.3. CLASIFICACIÓN Y TIPOS DE COMPUTADORAS

Las computadoras suelen clasificarse de acuerdo a una serie de criterios como: a su


capacidad de procesamiento y cálculo, ámbito de aplicación a la que están destinadas, etc.
LAS SUPERCONPUTADORAS

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 máquinas de gran potencia de proceso y extremadamente rápidas y además disponen de


una gran capacidad de almacenamiento masivo. Son las grandes computadoras de los bancos,
universidades, industrias, etc. Son capaces de controlar cientos de usuarios y programas
simultáneamente, así como cientos de dispositivos de entrada y salida. Son muy empleadas
en centros de datos.
LAS MINICOMPUTADORAS

En 1960 surgió la minicomputadora una versión, más pequeña de la macro computadora. Al


ser orientada a tareas específicas, no necesitaba de todos los periféricos que necesita un
mainframe, y esto ayudo al reducir el precio y costos de mantenimiento.
Hoy día muchas veces confundidas con los servidores, son computadoras de rango medio,
que se utilizan en centros de investigación, departamentos científicos, fábricas, etc., y que
poseen una gran capacidad de proceso numérico y tratamiento de gráficos,
fundamentalmente, aunque también son muy utilizadas en el mundo de la gestión.
En general la minicomputadora es un sistema multiproceso (varios procesos en paralelo)
capaz de soportar de 10 hasta 200 usuarios simultáneamente. Actualmente se utilizan para
almacenar grandes bases de datos, automatización industrial y aplicaciones multiusuarios.
ESTACIONES DE TRABAJO (WORKSTATION)

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

un PC en la misma o menor cantidad de tiempo. Tienen capacidad para ejecutar programas


técnicos y cálculos científicos, y suelen utilizar UNIX o Windows NT como sistema
operativo.
Son un tipo de computadoras que se utilizan para aplicaciones que requieran de poder de
procesamiento moderado y capacidades de gráficos de alta calidad. Son usadas para
aplicaciones de ingeniería CAD, CAM, publicidad, CASE, etc.
LAS COMPUTADORAS PERSONALES PC O MICROCOMPUTADORES

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.

4.3. EL SOFTWARE (LOS PROGRAMAS)

El software de una computadora es un conjunto de instrucciones de programa detalladas que


controlan y coordinan los componentes hardware de una computadora y controlan las
operaciones de un sistema informático. Las operaciones que debe realizar el hardware son
especificadas por una lista de instrucciones, llamadas programas, o software. El proceso de
escritura o codificación de un programa se denomina programación y las personas que se
especializan en esta actividad se denominan programadores.
Otras definiciones de software:

32
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

1. Programas de cómputos y documentación asociada [SOMM2011].


2. Instrucciones que cuando se ejecutan proporcionan las características, funciones y
desempeño buscado [PRESS2010].
3. Estructuras de datos que permiten que los programas manipulen en forma adecuada la
información [PRESS2010]
4. Información descriptiva tanto en papel como en formas virtuales que describen la
operación y uso de los programas [PRESS2010].
El software es una potente herramienta que permite al usuario hacer másfácil el manejo y
operación de las computadoras, gracias a las características que proporciona.
4.3.1. CLASIFICACIÓN DEL SOFTWARE

Existen varios tipos importantes de software y son clasificados de acuerdo a su dominio de


aplicación: software del sistema y software de aplicaciones. Cada tipo realiza una función
diferente.
SOFTWARE DE SISTEMA

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

El software incrustado reside dentro de un producto o sistema y se usa para implementar y


controlar características y funciones para el usuario final y para el sistema en sí.
Se trata de sistemas de control de software que regulan y gestionan dispositivos de hardware.
Numéricamente, quizás existen más sistemas embebidos que cualquier otro tipo de sistema.
Algunos ejemplos de sistemas embebidos incluyen el software en un teléfono móvil (celular),
el software que controla los frenos antibloqueo de un automóvil y el software en un horno de
microondas para controlar el proceso de cocinado.

4.3.2. RESOLUCIÓN DE PROBLEMAS Y DESARROLLO DE SOFTWARE

La creación de un programa requiere de técnicas similares a la realización de otros proyectos


de ciencia e ingeniería, ya que, en la práctica, un programa no es más que una solución
desarrollada para resolver un problema concreto. La escritura de un programa es casi la
última etapa de un proceso en el que se determina primero ¿cuál es el problema? y el método
que se utilizará para resolver el problema.
El proceso de resolución de un problema con una computadora conduce a la escritura de un
programa y a su ejecución en la misma. Las técnicas utilizadas por los desarrolladores
profesionales de software para llegar a soluciones adecuadas para la resolución de problemas
se denomina proceso de desarrollo de software. Aunque el número y nombre de las fases
puede variar según los modelos, métodos y técnicas utilizadas y, aunque el proceso de
diseñar programas es, esencialmente, un proceso creativo, se puede considerar una serie de
fases o pasos comunes, que generalmente deben seguir todos los programadores:

• Análisis y especificación del problema.


• Diseño de una solución.
• Codificación o implementación en un lenguaje de programación.
• Pruebas, ejecución y depuración.
• Verificación y corrección.
• Documentación.
• Mantenimiento y evaluación.

34
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Las características más sobresalientes de la resolución de problemas son:

• Análisis, el problema se analiza, se estudiapara tener una clara percepción y


entendimiento del mismo teniendo presente la especificación de los requisitos dados
en el problema a resolver.
• Diseño, una vez analizado el problema, se diseña una solución que conducirá a un
algoritmo que resuelva el problema.
• Codificación (implementación), la solución se escribe en la sintaxis del lenguaje de
alto nivel (por ejemplo, C++) y se obtiene un programa fuente que se compila a
continuación.
• Pruebas, ejecución y depuración,el programa se ejecuta, se prueba rigurosamente y
se eliminan todos los errores (denominados “bugs”, en inglés) que puedan aparecer.
• Documentación, escritura de las diferentes fases del ciclo de vida del software,
esencialmente el análisis, diseño y codificación, unidos a manuales de usuario y de
referencia, así como normas para el mantenimiento.
• Mantenimiento, el programa se actualiza y modifica, cada vez que sea necesario, de
modo que se cumplan todas las necesidades de cambio de sus usuarios.
Las dos primeras fases conducen a un diseño detallado escrito en forma de algoritmo.
Durante la tercera fase (codificación) se implementa el algoritmo en código escrito en un
lenguaje de programación, reflejando las ideas desarrolladas en las fases de análisis y diseño.
Las fases de compilación y ejecución traducen y ejecutan el programa. En las fases de
verificación y corrección el programador busca errores de las etapas anteriores y los elimina.

4.4. INTERNET Y WORD WIDE WEB

Internet, es un método de interconexión descentralizada de redes de computadoras


implementado en un conjunto de protocolos denominado TCP/IP, garantizando que las redes
físicas heterogéneas que la componen funcionen como una red lógica única, de alcance
mundial.
Internet, conocida también como la Red de Redes, se basa en la tecnología cliente-servidor.
Las personas que utilizan la Red controlan sus tareas mediante aplicaciones Web tal como
software de navegador. Todos los datos incluyendo mensajes de correo (emails) y las páginas
Web se almacenan en servidores. Un cliente (usuario) utiliza Internet para solicitar
información de un servidor Web determinado situado en una computadora lejana; el servidor
envía la información solicitada al cliente vía la red Internet.

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

La World Wide Web o WWW, es un sistema de estándares aceptados universalmente para


almacenamiento, recuperación, formateado y visualización de información, utilizando una
arquitectura cliente-servidor. Se puede utilizar la Web para enviar, visualizar, recuperar y
buscar información o crear una página Web. La Web combina texto, hipermedia, sonidos y
gráficos, utilizando interfaces gráficas de usuario para una visualización fácil.
La World Wide Web está constituida por millones de documentos enlazados entre sí,
denominados páginas Web. La WWW es un conjunto de protocolos que permite, de forma
sencilla, la consulta remota de archivos de hipertexto a través una página o sitio web. Cada
página Web tiene una dirección única mediante la cual puede ser accesada, conocida como
URL (UniformResourceLocator). Por ejemplo, la URL de la página inicial del sitio web de la
universidad es: www.utesa.edu.
La Web se basa en un lenguaje estándar de hipertexto denominado HTML
(HypertextMarkupLanguage) que da formatos a documentos e incorpora enlaces dinámicos a
otros documentos almacenados en la misma computadora o en computadoras remotas. El
navegador Web está programado de acuerdo al estándar citado. Los documentos HTML,
cuando, ya se han situado en Internet, se conocen como Páginas Web y el conjunto de
páginas web con información relacionada perteneciente a una misma entidad (empresa,
departamento, usuario individual) se conoce como Sitio Web (WebSite).
Al contrario de lo que se piensa comúnmente, internet no es sinónimo de World Wide Web
(WWW, o la Web). Esta es parte de internet, siendo uno de los muchos servicios ofertados
en la red de internet. La Web es un sistema de información mucho más reciente, desarrollado
inicialmente por Tim Berners Lee en 1989 en los laboratorios del CERN

36
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

(EuropeanLaboratoryforParticlesPhysics) en Suiza. La WWW utiliza internet como medio de


transmisión.

4.4.1. HISTORIA E IMPORTACIA

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

Hacia 1960, el Departamento de Defensa de EEUU firmó un contrato con RAND


Corporation para encontrar una solución. Uno de sus empleados, Paul Baran, presentó un

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

Durante la década de 1980, se conectaron redes adicionales, en particular LANs, a


ARPANET. Conforme crecía el escalamiento, encontrar hosts llegó a ser muy costoso, por lo
que se creó el DNS (Sistema de Nombres de Dominio) para organizar máquinas dentro de
dominios y resolver nombres de host en direcciones IP.
NSFNET

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

El número de redes, máquinas y usuarios conectados a ARPANET creció rápidamente luego


de que TCP/IP se convirtió en el protocolo oficial el 1ro de enero de 1983. Cuando NSFNET
y ARPANET estaban interconectadas, el crecimiento se hizo exponencial. Muchas redes
regionales se unieron y se hicieron conexiones a redes en Canadá, Europa y el Pacífico.
El aglutinante que mantiene unida la Internet es el modelo de referencia TCP/IP y la pila de
protocolos de TCP/IP. TCP/IP hace posible el servicio universal.
¿Qué significa en realidad estar en Internet? Nuestra definición es que una máquina está en
Internet si ejecuta la pila de protocolos de TCP/IP, tiene una dirección IP y puede enviar
paquetes IP a todas las demás máquinas en Internet.
Tradicionalmente (es decir, de 1970 a 1990) Internet y sus predecesores tenían cuatro
aplicaciones principales:

• 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:

• Cualquier dispositivo, a cualquier contenido, de cualquier forma.


• Colaboración y aprendizaje en línea
• Comunicación por video
• Computación en la nube
• Centros de datos
• Domótica y tecnologías del hogar
Uno de los usos más extendidos de la red es permitir a diferentes computadoras compartir
recursos tales como sistemas de archivos, impresoras, escáneres o discos DVD. Estas
computadoras normalmente se conectan en una relación denominada cliente-servidor. El
servidor posee los recursos que se quieren compartir. Los clientes conectados vía un
concentrador (hub) o una conexión Ethernet comparten el uso de estos recursos. El usuario
de una máquina cliente puede imprimir documentos o acceder a archivos como si los
dispositivos realmente estuvieran físicamente conectados a la máquina local.
Estas tendencias están interconectadas y seguirán creciendo al respaldarse entre ellas en los
próximos años. Sin embargo, debe recordar que a diario se imaginan y concretan nuevas
tendencias.

4.4.2. SERVICIOS DISPONIBLES

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

(Internet MessageActionProtocol). La mensajería instantánea o chat que permite el diálogo


en línea simultánea entre dos o más personas, y cuya organización y estructura han sido
trasladadas a los teléfonos celulares donde también se puede realizar este tipo de
comunicaciones con mensajes conocidos como “cortos” SMS (short message) o MMS
(multimedia message).
Con la Web 2.0 surge una nueva oleada de servicios en internet. Este término, ya muy
popular, alude a una nueva versión o generación de la Web basada en tecnologías tales como
el lenguaje AJAX, los agregadores de noticias RSS, páginas personales o blogs, podcasting,
redes sociales, streaming (transmisión en vivo de audio y video), interfaces de programación
de aplicaciones Web (APIs), etc. En esencia, la Web 2.0, ha dado lugar a una Web más
participativa y colaborativa, donde el usuario ha dejado de ser un actor pasivo para
convertirse en un actor activo y participativo en el uso y desarrollo de aplicaciones Web.
4.4.3. NAVEGADORES Y BUSCADORES

NAVEGADORES

Un navegador es un programa o sistema informático que instalamos en la computadora y que


nos permite acceder a cualquier sitio web y navegar en internet. Un navegador sirve como
intermediario entre el usuario, internet y la tecnología World Wide Web (WWW).
Figura 24 Algunos de los principales navegadores de internet

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

La función principal del navegador es descargar documentos HTML y mostrarlos en pantalla.


En la actualidad, no solamente descargan este tipo de documentos, sino que muestran con el
documento sus imágenes, sonidos e incluso vídeos en diferentes formatos y protocolos.
BUSCADORES

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

4.4.4. CORREO ELECTRÓNICO (E-MAIL)

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

El correo electrónico es anterior a la creación de Internet. El primer antecedente data de 1962,


cuando el MIT (Massachusetts Institute of Technology) adquirió una computadora de tiempo
compartido que permitía a varios usuarios iniciar sesión desde terminales remotas, y así
guardar archivos en el disco. Este sistema se utilizó informalmente para intercambiar
mensajes, pero ya en 1965 se desarrolló el servicio MAIL, que facilitaba el envío de
mensajes entre los usuarios de esta máquina.
El primer mensaje de correo electrónico genuinamente enviado a través de una red data del
año 1971. El mensaje se envió a través de la red ARPANET, aunque las máquinas estaban
físicamente una junto a la otra.
La idea del correo electrónico sobre redes se debe a RayTomlinson, quien utilizó el
protocolo experimental CYPNET para enviar por red los mensajes, que hasta ese momento
solo comunicaban a los usuarios de una misma computadora.
Fue el mismo Tomlinson quien incorporó el uso de la arroba (@) como divisor entre el
usuario y la computadora en la que se aloja la cuenta del usuario de destino. Anteriormente
no había necesidad de especificar la máquina de destino puesto que todos los mensajes que
se enviaban eran locales; sin embargo, con el nuevo sistema era preciso distinguir el correo
local del correo de red. El motivo de elegir este símbolo fue que en inglés la arroba se lee
«at» (en español en). Así, la dirección ejemplo@máquina.com se lee ejemplo en máquina
punto com.

46
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

FUNCIONAMIENTO DEL CORREO ELECTRÓNICO

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:

• Destinatario: una o varias direcciones de correo a las que ha de llegar el mensaje.


• Asunto: una descripción corta que verá la persona que lo reciba antes de abrir el
correo.
• Mensaje: puede ser solo texto, o incluir formato, y no hay límite de tamaño.
Además, se suele dar la opción de incluir archivos adjuntos al mensaje. Esto permite enviar
información de cualquier tipo mediante el correo electrónico.
Para especificar el destinatario del mensaje, se escribe su dirección de correo en el campo
llamado Para del sistema cliente para el envió de correo electrónico. Si el destino son varias
personas, normalmente se puede usar una lista con todas las direcciones, separadas por
comas o punto y coma.
Además del campo Para existen los campos CC y CCO, que son opcionales y sirven para
hacer llegar copias del mensaje a otras personas:

• Campo CC (Copia de Carbón): quienes estén en esta lista recibirán también el


mensaje, pero verán que no va dirigido a ellos, sino a quien esté puesto en el campo
Para. Como el campo CC lo ven todos los que reciben el mensaje, tanto el
destinatario principal como los del campo CC pueden ver la lista completa.
• Campo CCO (Copia de Carbón Oculta): una variante del CC, que hace que los
destinatarios reciban el mensaje sin aparecer en ninguna lista. Por tanto, el campo
CCO nunca lo ve ningún destinatario.

47
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

SERVICIOS DE CORREO ELECTRÓNICO

Los principales servicios de correo electrónico gratuito son:

• Gmail: webmail, POP3 e IMAP


• Outlook: webmail y POP3
• Yahoo! Mail: webmail y POP3 con publicidad
Los servicios de correo de pago los suelen dar las compañías de acceso a Internet (ISP) o los
registradores de dominios.
Figura 26. Principales servicios de correo electrónico gratuito

48
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

4.5. PREGUNTAS DE INVESTIGACIÓN Y REPASO PARA EL PRIMER PARCIAL

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

22. Se requería costosas instalaciones de refrigeración porque estas maquinas_____________


___________________________________
23. El tiempo de operación de estos equipos era de____________________________
24. Dispositivo que marca el inicio de la segunda generación de
computadoras_____________
25. Las computadoras de la segunda generación tenían menores necesidades
de____________ y el tamaño se___________________ incrementando
la_________________________
26. El lenguaje de programación_______________ ya se hace comercial durante la segunda
generación de computadores.
27. La memoria principal de la segunda generación está construida en___________________
28. El tiempo de operación en el procesamiento de la segunda generación se mide
por_______ ___________________________
29. El _________________________marca el inicio de la tercera generación de
computadoras.
30. Una de las primeras computadoras comerciales que utilizo el circuito integrado fue el
modelo_________________________
31. El tiempo de operación en el procesamiento de la tercera generación se mide por_______
___________________________
32. En la tercera generación aparece el disco__________________________
33. En la cuarta generación aparece el____________________________
34. El tamaño reducido del microprocesador y de chips hizo posible la creación de las
computadoras__________________________
35. En la quinta generación surge la llamada_____________________________
36. A quienes se le atribuye el desarrollo de la nueva
tecnología_________________________
37. ¿Qué es el hardware?
38. Describir la organización física del computador
39. ¿Qué es el motherboard?
40. ¿Qué es el BIOS?
41. ¿Cuáles ranuras o slots tiene el motherboard?
42. ¿Qué es un dispositivo de entrada? Dar tres ejemplos
43. ¿Qué es un dispositivo de salida? Dar tres ejemplos
44. ¿Qué es un adaptador?
45. ¿Qué significa Hertz (Hz) en el ambiente computacional? ¿Cuáles son sus unidades de
medida?
46. ¿Qué es la memoria? Tipos de memoria: RAM, ROM, PROM, RPROM, SRAM, DRAM,
DDR SDRAM.

50
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

47. ¿Qué es la memoria cache?


48. Investigue un poco sobre el termino USB.
49. Descripción y definición de las unidades de medida de almacenamiento, desde el byte
hasta yottabyte.
50. ¿Qué es el case?
51. Investigar sobre dispositivos de lectura y escritura de datos (I/O). Dar ejemplos.
52. Mencionar el nombre de los diferentes puertos del motherboard.
53. Investigar un poco sobre las impresoras y los diferentes tipos de impresoras que existen.
54. ¿Qué es un computador clone?
55. Establezca la diferencia entre computadora (digital, analógica e hibrida).
56. Una supercomputadora es el tipo de computadora más___________________ y más
______________________ que existe en un momento dado.
57. Algunas tareas a las que son expuestas las supercomputadoras:
a. ___________________________
b. ___________________________
c. ___________________________
58. Las macrocomputadoras son también conocidas como________________________ son
capaces de controlar cientos de usuarios simultáneamente, así como cientos de
dispositivos de ______________________ y _________________________
59. En 1960 surgió la minicomputadora, una versión más pequeña de
la__________________
60. Las minicomputadoras son conocidas como_______________________ son
relativamente baratas y actualmente se encuentran en________________________
61. Algunas aplicaciones que se le dan a las Workstations o Estaciones de Trabajo:
a. _______________________________
b. _______________________________
62. Definición de informática.
63. Origen de las redes o internet.
64. ¿Cuáles tipos de redes existen?
65. Describir las diferentes topologías de red y diferencia entre cada una.
66. Dos ventajas, y dos desventajas de estar conectado en red.
67. Tipos de cables utilizados en la construcción de una red.
68. Describir los protocolos de comunicación.
69. Que se necesita para estar conectado en red.
70. Investigue un poco sobre el término hacker y su clasificación.
71. Defina los siguientes términos:
a. RJ-45
b. DHCP

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

nn. ¿Qué es un lenguaje de programación? Nombre algunos lenguajes de


programación
oo. ¿Qué es un sistema operativo? Nombre algunos sistemas operativos
pp. Describa las funciones básicas de un sistema operativo
qq. ¿Qué es un software de aplicación? Nombre algunos softwares de aplicación y sus
usos.
rr. ¿Qué es el software libre? Nombre algunos softwares libres.

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

5.1.CICLO DE PROCESAMIENTO DE DATOS

La función básica que realiza un computador es la ejecución de un programa, constituido por


un conjunto de instrucciones almacenadas en memoria. El procesador es precisamente el que
se encarga de ejecutar las instrucciones especificadas en el programa.La computadora es un
dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos y
la información se pueden introducir en la computadora como entrada (input) y a continuación
se procesan para producir una salida (output).
La ejecución de un programa implica el procesamiento de recursos (información), por
ejemplo: archivos almacenados en algún dispositivo de E/S local o remoto, información
suministrada por el usuario a través de algún medio de entrada como el teclado o una pantalla
táctil, etc. Toda esta información necesita ser provista al computador para asegurar que el
proceso de ejecución del programa sea completado. Una vez completada la ejecución del
programa, el computador debe dar una respuesta al usuario a través de algún medio de salida
como la pantalla, una impresora o simplemente escribiendo los resultados en un archivo en
disco o algún dispositivo de salida remoto.
A todo este proceso de ejecución de un programa se le conoce como ciclo de procesamiento
electrónico de datos.Para llevar a cabo este proceso de ejecución en un programa se
requieren tres operaciones básicas:

• 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

Figura 27. Ciclo de procesamiento en la ejecución de un programa

La ejecución de un programa de computadora puede implicar también, un proceso de


retroalimentación en donde cada una de las acciones o tareas puede ser ejecutada una o
varias veces.

5.2. CONCEPTOS DE BASE DE DATOS

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.

ALMACENAMIENTO DE DATOS EN UNA COMPUTADORA

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

A un elemento de datos o agrupamiento de caracteres en una palabra, un conjunto de


palabras o un número completo se denomina campo. Un campo está caracterizado por su
tamaño o longitud y su tipo de datos (cadena de caracteres, entero, lógico o booleano, fecha,
numérico etc.)
REGISTRO

Un registro es una colección de información, normalmente relativa a una entidad particular.


Un registro es una colección o grupo de campos lógicamente relacionados, que pueden ser
tratados como una unidad por algún programa.
Figura 29 Representación lógica de un archivo o base de datos de estudiantes

Matricula Nombre Dirección Teléfono

1-02-0034 José García Calle 1ra. #4, Las Colinas 809-575-4041


1-03-1054 Carmen Pérez Calle 16 de agosto #20, Santiago 809-582-5050
1-03-0539 Juan Peralta La Rosario #2, Moca 809-652-2014

56
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

1-04-3534 María Marte Duarte #100, La Vega 829-572-0078

Como se muestra en la figura anterior, cada columna de la tabla representa un campo, y cada
fila representa un registro.
ARCHIVO

Un archivo o fichero informático es un conjunto o secuencia de bits almacenados en un


dispositivo electrónicode almacenamiento secundario,como un disco magnético, memoria
USB, disco óptico, etc. Los archivos son unidades lógicas de información creada por los
procesos, el sistema operativo y los programas que se ejecutan en el computador. Un archivo
puede ser también, una colección de registros relacionados entre sí con aspectos en común y
organizados para un propósito específico
En lo que concierne al sistema operativo un archivo es, en la mayoría de los casos,
simplemente un flujo unidimensional de bits, que es tratado por el sistema operativo como
una única unidad lógica. Un archivo de datos normalmente tiene un tamaño, que
generalmente se expresa en bytes.
Los archivos son administrados por el sistema operativo. La manera en que se estructuran,
denominan, abren, utilizan, protegen, implementan y administran son tópicos fundamentales
en el diseño de sistemas operativos. La parte del sistema operativo que trata con los archivos
se conoce como sistema de archivo.
NOMENCLATURA Y NOMBRAMIENTO DE ARCHIVOS

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

• 8 caracteres para el nombre y 3 para la extensión en MS-DOS y Windows 3.1


• 256 caracteres para el nombre y la extensión en Windows 95 y superiores.
• 256 caracteres en UNIX.

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

proporcionan a la estructura de sistema de archivos flexibilidad y profundidad. Cada entrada


de directorio representa un archivo o un subdirectorio. Cada entrada contiene el nombre del
archivo y el número de referencia de nodo de índice (número de i-nodo) del archivo. El
número de nodo-i apunta al nodo de índice exclusivo que se ha asignado al archivo. El
número de nodo-i describe la ubicación de los datos que se asocian al archivo. Un grupo
independiente de mandatos crea y controla los directorios.

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.

5.3. UNIDADES METRICAS Y DE ALMACENAMIENTO

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

Expo. Valor Prefijo Expo. Valor Prefijo


10-3 0.001 mili 103 1,000 kilo
-6 6
10 0.000001 micro 10 1,000,000 mega
-9 9
10 0.000000001 nano 10 1,000,000,000 giga
-12 12
10 0.000000000001 pico 10 1,000,000,000,000 tera
-15 15
10 0.000000000000001 femto 10 1,000,000,000,000,000 peta
-18 18
10 0.000000000000000001 Atto 10 1,000,000,000,000,000,000 exa

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

Exponente Valor Unidad de medida Equivalencia


20 1 byte Byte (B) 8 Bits
10
2 1024 bytes Kilobyte (KB) 1024 Bytes
20
2 1,048, 576 bytes Megabyte (MB) 1024 KB
30
2 1,073,741,824 bytes Gigabyte (GB) 1024 MB
40
2 1,099,511,627,776 bytes Terabyte (TB) 1024 GB
250 1,125,899,906,842,624 bytes Petabyte (PB) 1024 TB
60
2 1,152,921,504,606,846,976 bytes Exabyte (EB) 1024 PB

5.4. REPRESENTACIÓN DE LA INFORMACIÓN EN LAS COMPUTADORAS

Una computadora es un sistema para procesar información de modo automático. Un tema


vital en el proceso de funcionamiento de una computadora es estudiar la forma de
representación de la información en dicha computadora. Es necesario considerar cómo se
puede codificar la información en patrones de bits que sean fácilmente almacenables y
procesables por los elementos internos de la computadora.
Las formas de información más significativas son: textos, sonidos, imágenes y valores
numéricos y, cada una de ellas presentan peculiaridades distintas. Otros temas importantes en
el campo de la programación se refieren a los métodos de detección de errores que se puedan
producir en la transmisión o almacenamiento de la información y a las técnicas y
mecanismos de comprensión de información al objeto de que ésta ocupe el menor espacio en
los dispositivos de almacenamiento y sea más rápida su transmisión.
REPRESENTACIÓN DE TEXTOS

La información en formato de texto se representa mediante un código en el que cada uno de


los distintos símbolos del texto (tales como letras del alfabeto o signos de puntuación) se
asignan a un único patrón de bits. El texto se representa como una cadena larga de bits en la
cual los sucesivos patrones representan los sucesivos símbolos del texto original.

62
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

En resumen, se puede representar cualquier información escrita (texto) mediante caracteres.


Los caracteres que se utilizan en computación suelen agruparse en cinco categorías:

• Caracteres alfabéticos: letras mayúsculas y minúsculas: A, B, C, D,…, X, Y, Z;…,


a, b, c, d,…, x, y, z.
• Caracteres numéricos: dígitos del sistema de numeración decimal: 0, 1, 2, 3, 4, 5, 6,
7, 8, 9.
• Caracteres especiales: símbolos ortográficos y matemáticos: {}, [], Ñ, ñ, ¿, ! <, >, #,
π.
• Caracteres geográficos y métricos:símbolos o módulos con los cuales se pueden
representar cuadros, figuras geométricas, iconos, etc. |, ☻, ♥, .
• Caracteres de control:representan órdenes de control como saltos de línea,
tabulaciones, retorno de carro, emitir un pitido en el terminal, etc.
Al introducir un texto en una computadora, a través de un periférico, los caracteres se
codifican según un código de entrada/salida de modo que a cada carácter se le asocia una
determinada combinación de n bits. Los códigos más utilizados en la actualidad son:
EBCDIC, ASCII y Unicode.
EBCDIC

EBCDIC (Extended BinaryCoded Decimal Inter ChangeCode, Código de Intercambio


Decimal Extendido Codificado en Binario). Sistema de códigos desarrollado por IBM como
método normalizado de asignación de valores binarios a los caracteres alfabéticos, numéricos,
de puntuación y de control de transmisión. Este código utiliza n = 8 bits de forma que se
puede codificar hasta 28 = 256 símbolos diferentes. Éste fue el primer código utilizado para
computadoras.
ASCII

Código ASCII (American Standard CodeforInformationInterchange, Código Estándar


Americano para el Intercambio de Información). Este código es un estándar y es el más
utilizado para el intercambio de información entre la computadora y sus periféricos.
La primera versión de este código salió en 1963. Utilizaba 7 bits lo que permitía representar
un total de 128 caracteres (letras mayúsculas y minúsculas del alfabeto inglés, símbolos de
puntuación, dígitos 0 a 9 y ciertos controles de información tales como retorno de carro, salto
de línea, tabulaciones, etc.).
La segunda versión de este código utiliza 8 bits y se llamó ASCII extendido. Con esta nueva
versión, podemos representar 28=256 caracteres distintos, entre ellos símbolos y caracteres
especiales de otros idiomas como el español.

63
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

UNICODE

Aunque ASCII ha sido y es dominante en la representación de los caracteres, hoy día se


requiere de la necesidad de representación de la información en muchas otras lenguas, como
el portugués, español, chino, el japonés, el árabe, etc. Este código utiliza un patrón único de
16 bits para representar cada símbolo, permitiendo representar 216 bits o sea hasta 65.536
patrones de bits (símbolos de caracteres) diferentes.
Figura 33 Código ASCII (estándar ANSI)

REPRESENTACIÓN DE VALORES NUMÉRICOS

El almacenamiento de información como caracteres codificados es ineficiente cuando la


información se registra como numérica pura. Veamos esta situación con la codificación del
número “65”; si se almacena como caracteres ASCII utilizando un byte por símbolo, se
necesita un total de 16 bits, de modo que el número mayor que se podía almacenar en 16 bits

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

Nosotros normalmente utilizamos el sistema decimal de numeración: todos los números se


expresan a partir de potencias de 10, pero normalmente lo hacemos sin pensar.
Por ejemplo, el número 3,254 se podría desglosar como:
3,254 = 3 x 1000 + 2 x 100 + 5 x 10 + 4 x 1
o más detallado todavía:
254 = 3 x 103 + 2 x 102 + 5 x 101 + 4 x 100
Para los ordenadores no es cómodo contar hasta 10. Como partimos de “casillas de memoria”
que están completamente vacías (0) o completamente llenas (1), sólo les es realmente
cómodo contar con 2 cifras: 0 y 1.
En el sistema binario sólo hay dos cifras: 0 y 1. Como sucede en el sistema de numeración
decimal, en este sistema también se utilizan exponentes para expresar cantidades mayores.
Mientras que en el sistema decimal la base es 10, en el sistema binario la base es 2.
Por eso, dentro del ordenador cualquier número se deberá almacenar como ceros y unos, y
entonces los números se deberán desglosar en potencias de 2 (el llamado “sistema binario”)
13 = 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1
o, más detallado:
13 = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20

65
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

de modo que el número decimal 13 se escribirá en binario como 1101.


La representación exponencial se utiliza para convertir una cantidad de un sistema numérico
cualquiera al sistema decimal. A continuación se muestra la forma de hacer esto.
Por ejemplo 1:Convertir el número binario 10011.01 a decimal
Solución: Expresando el número propuesto en notación exponencial y realizando las
operaciones correspondientes, se obtiene la siguiente conversión de binario a decimal:
10011.012
= 1 x 24 +0 x 23 + 0 x 22 + 1 x 21 + 1 x 20 + 0 x 2-1 + l x 2-2 = 16 + 0 + 0 + 2 + 1 + 0 + 0.25
= 19.2510
La parte fraccionaria (decimal) del número binario se expresa en exponentes negativos. En
general, convertir un número binario al sistema decimal es fácil: lo expresamos como suma
de potencias de 2 y sumamos:
0110 11012
= 0 x 27 + 1 x 26 + 1 x 25 + 0 x 24 + 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20
= 0 x 128 + 1 x 64 + 1 x 32 + 0 x 16 + 1 x 8 + 1 x 4 + 0 x 2 + 1 x 1 = 10910
Nota: es frecuente separar los números binarios en grupos de 4 cifras (4 bits) “medio byte”
para mayor legibilidad, como sehe hecho en el ejemplo anterior.
Una forma sencilla de convertir de decimal a binario es dividir consecutivamente entre 2 y
coger los restos que hemos obtenido, pero en orden inverso: por ejemplo convertir 109 del
sistema decimal al sistema binario.
109 / 2 = 54, resto 1
54 / 2 = 27, resto 0
27 / 2 = 13, resto 1
13 /2 = 6, resto 1
6 / 2 = 3, resto 0
3 / 2 = 1, resto 1
1 / 2 = 0, resto 1 (y ya hemos terminado)
Si leemos esos restos de abajo a arriba, obtenemos el número binario: 1101101 (7 cifras, si
queremos completarlo a 8 cifras rellenamos con ceros por la izquierda: 01101101).

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

5.5. EJERCICIOS Y PREGUNTAS DE INVESTIGACION Y REPASO

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

TÉCNICAS DE PROGRAMACIÓN: PARTE I


Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

6.1. ALGORITMOS COMPUTACIONALES

La palabra algoritmo se deriva de la traducción al latín de la palabra Alkhô-warîzmi, nombre


de un matemático y astrónomo árabe que escribió un tratado sobre manipulación de números
y ecuaciones en el siglo IX. Un algoritmo es un método para resolver un problema mediante
una serie de pasos precisos, definidos y finitos.
Un algoritmo es un método para resolver un problema. Aunque la popularización del término
ha llegado con el advenimiento de la era informática. En la ciencia de la computación y en la
programación, los algoritmos son más importantes que los lenguajes de programación o las
computadoras. Un lenguaje de programación es tan sólo un medio para expresar un algoritmo
y una computadora es sólo un procesador para ejecutarlo. Tanto el lenguaje de programación
como la computadora son los medios para obtener un fin: conseguir que el algoritmo se
ejecute y se efectúe el proceso correspondiente.
Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de
modo que sin algoritmo no puede existir un programa.
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan
como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en
un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo,
el algoritmo será siempre el mismo. Así, por ejemplo, en una analogía con la vida diaria, una
receta de un plato de cocina se puede expresar en español, inglés o francés, pero cualquiera
que sea el lenguaje, los pasos para la elaboración del plato se realizarán sin importar el
idioma del cocinero.
En resumen, un algoritmo es una secuencia ordenada de instrucciones, pasos o procesos que
llevan a la solución de un determinado problema. Los hay tan sencillos y cotidianos como
seguir la receta del médico, abrir una puerta, lavarse las manos, etc.; hasta los que conducen
a la solución de problemas muy complejos.
Por convención los algoritmos se expresan en lenguaje natural; entendible para cualquier
persona. Cada paso o instrucción que realiza el algoritmo debe describirse de manera sencilla,
ordenada y secuencial, de forma que se pueda tener una comprensión clara y exacta del
mismo.
CARACTERISTICAS DE UN ALGORITMO

En términos generales un algoritmo debe ser:

• Preciso: El orden de ejecución de cada paso o instrucción debe estar perfectamente


indicado.

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

6.1.1. TIPOS DE ALGORITMOS

Se ha clasificado a los algoritmos de diversas formas, de acuerdo con algunos de sus


atributos:
A. Según el sistema de signos con el que se describen los pasos a seguir
• Algoritmos cualitativos: Son aquellos en los que se describen los pasos utilizando
palabras o expresiones en lenguaje natural.
• Algoritmos cuantitativos: son aquellos en los que se utilizan cálculos numéricos
para definir los pasos del proceso.
B. Según su función los algoritmos se pueden clasificar en:
• Algoritmos de ordenamiento: es un algoritmo que pone elementos de una lista o un
vector en una secuencia dada por una relación de orden, es decir, el resultado de
salida ha de ser una permutación —o reordenamiento— de la entrada que satisfaga la
relación de orden dada.
• Algoritmos de búsqueda: es aquel que está diseñado para localizar un elemento con
ciertas propiedades dentro de una colección o estructura de datos, como una matriz,
un vector o una lista.
• Algoritmos de encaminamiento: comúnmente utilizados por los protocolos de
enrutamiento dinámico para escoger las rutas por donde deben enviar los paquetes a
través de la red.

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

sus entradas y su forma de proceder. El algoritmo de Euclides, que permite averiguar


el máximo común divisor entre dos números, responde a este tipo.
• Algoritmos no determinísticos: el algoritmo tiene forma de árbol y cada paso del
algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores,
además todas las ramas se ejecutan simultáneamente.

6.1.2. ANALISIS DEL PROBLEMA

La primera fase de la resolución de un problema con computadora es el análisis del problema.


Esta fase requiere una clara definición, donde se contemple exactamente lo que debe hacer el
programa y el resultado o solución deseada.
Este paso es necesario para asegurar que el problema está definido y se entiende con claridad.
La determinación de que el problema está definido en forma clara se hace sólo después que
quien realiza el análisis entiende qué salidas se requieren y qué entradas se necesitarán. Para
lograr esto el analista debe tener una comprensión de la forma en que se pueden usar las
entradas para producir la salida deseada.
Para poder identificar y definir bien un problema es conveniente responder a las siguientes
preguntas:

• ¿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:

• Que debe hacer el sistema o programa


• Que salidas debe producir
• Que entradas se requieren para crear las salidas deseadas

El siguiente ejemplo muestra un planteamiento y análisis correcto para el problema


especificado.
Se desea obtener una tabla con las depreciaciones acumuladas y los valores reales de cada
año, de un automóvil comprado por 20,000 euros en el año 2005, durante los seis años
siguientes suponiendo un valor de recuperación o rescate de 2,000. Realizar el análisis del
problema, conociendo la fórmula de la depreciación anual constante D para cada año de
vida útil

74
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Análisis del problema:

Coste original
Entradas Vida útil
Valor de recuperación

Depreciación anual por año


Salidas Depreciación acumulada en cada año
Valor del automóvil en cada año

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

La siguiente formula puede ser utilizada para realizar los cálculos:

6.1.3. DISEÑO DEL ALGORITMO

En la etapa de análisis del proceso de programación se determina qué hace el programa. En


la etapa de diseño se determina cómo hace el programa la tarea solicitada.
Una computadora no tiene capacidad para solucionar problemas más que cuando se le
proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos que indican las
instrucciones a ejecutar por la máquina constituyen, como ya conocemos, el algoritmo
En el proceso de diseño de algoritmo, se selecciona el conjunto exacto de pasos, que se usará
para resolver el problema. La solución se obtiene de manera típica por una serie de
refinamientos, comenzando con el algoritmo inicial encontrado en el paso de análisis, hasta
que se obtenga un algoritmo aceptable y completo. Este algoritmo debe verificarse, si no se
ha hecho en el paso de análisis, para asegurar que produce en forma correcta las salidas
deseadas. Por lo general la verificación se hace realizando uno o más cálculos manuales que
no se han hecho.
La información proporcionada al algoritmo constituye su entrada y la información producida
por el algoritmo constituye su salida.

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

complejos se necesitan con frecuencia diferentes niveles de refinamiento antes de que se


pueda obtener un algoritmo claro, preciso y completo.
Considere el problema de cálculo de la circunferencia y superficie de un círculo se puede
descomponer en subproblemas más simples: 1) leer datos de entrada; 2) calcular superficie y
longitud de circunferencia, y 3) escribir resultados (datos de salida).
Figura 35. Refinamiento del diseño de un algoritmo

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:

• El problema se comprende más fácilmente al dividirse en partes más simples


denominadas módulos.
• Las modificaciones en los módulos son más fáciles.
• La comprobación del problema se puede verificar fácilmente.

6.2. CONCEPTO DE PROGRAMA

Un programa de ordenador es una secuencia de instrucciones que el ordenador debe seguir


para realizar una tarea. Habitualmente, aunque no obligatoriamente, estas instrucciones se

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

Un lenguaje de programación es unsistema (software) que permite al ser humano indicarle al


computador las instrucciones o tareas que debe realizar.
Como los lenguajes humanos, los lenguajes de programación son herramientas de
comunicación, pero al contrario que los lenguajes corrientes como el inglés o el chino, los
destinatarios de los lenguajes de programación no son solo humanos sino los ordenadores. El
propósito general de un lenguaje de programación es permitir al ser humano (el
programador) traducir la idea de un programa en una secuencia de instrucciones que el
computador sea capaz de ejecutar.
Así pues, los lenguajes utilizados para escribir programas de computadoras son los lenguajes
de programación y los programadores son los escritores y diseñadores de programas. El
proceso de traducir un algoritmo en pseudocódigo a un lenguaje de programación se
denomina codificación, y el algoritmo escrito en un lenguaje de programación se denomina
código fuente.
Existen muchos lenguajes para escribir programas, y muchas formas de clasificarlos. A
continuación se muestran algunas de las más importantes. Esta clasificación divide a los
lenguajes según la proximidad de las instrucciones que emplea el programador a las
instrucciones que físicamente emplea el procesador de una computadora.
Lenguajes de alto nivel
Los lenguajes de alto nivel las instrucciones están dadas en lenguaje natural, muy parecidas
al lenguaje de las personas. Las instrucciones o sentencias que se dan a la computadora son
escritas con palabras similares a los lenguajes humanos (en general en inglés), lo que facilita
la escritura y comprensión de los programas. Algunos lenguajes de alto nivel son: C, C++,
Java, C#, PHP, HTML, Visual Basic,Python, etc. A continuación se presentan algunos
ejemplos de código escrito en lenguajes de alto nivel.

78
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Código escrito en Python

Código escrito en Pascal

Código escrito en C

Lenguajes de bajo nivel:


En los lenguajes de programación de bajo nivel las instrucciones son más cercanas a la
máquina que en los lenguajes de alto nivel. Eso hace que sean más difíciles de aprender y
también que los fallos sean más difíciles de descubrir y corregir. Las instrucciones se
escriben en códigos alfanuméricos conocidos como mnemotécnicos. Un ejemplo de este tipo
de lenguajes es el lenguaje ensamblador.

Fragmento de código escrito en lenguaje ensamblador

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

Los programas de las computadoras modernas constan de secuencias de instrucciones que se


codifican como secuencias de dígitos numéricos que podrán entender dichas computadoras.
El sistema de codificación se conoce como lenguaje máquina que es el lenguaje nativo de
una computadora. Desgraciadamente la escritura de programas en lenguaje máquina es una
tarea tediosa y difícil ya que sus instrucciones son secuencias de 0 y 1 (patrones de bit, tales
como 11110000, 01110011...) que son muy difíciles de recordar y manipular por las personas.
En consecuencia, se necesitan lenguajes de programación “amigables con el programador”
que permitan escribir los programas. Sin embargo, las computadoras sólo entienden las
instrucciones en lenguaje máquina, por lo que será preciso traducir los programas resultantes
a lenguajes de máquina antes de que puedan ser ejecutadas por ellas.
Los ensambladores son programas traductores que transforman programas de usuario escrito
en lenguajes de bajo nivel como ensamblador (Assembly en inglés), en programas objetos,
escritos en lenguaje máquina y ejecutable directamente por el hardware de la computadora.
Un intérprete es un traductor que toma un programa fuente, lo traduce y, a continuación, lo
ejecuta. Es una herramienta parecida a un compilador, con la diferencia de que en los
intérpretes no se crea ningún “programa ejecutable” capaz de funcionar “por sí solo”, de
modo que si queremos distribuir nuestro programa a alguien, deberemos entregarle el
programa fuente y también el intérprete que es capaz de entenderlo, o no le servirá de nada.
Cuando ponemos el programa en funcionamiento, el intérprete se encarga de convertir el
programa que hemos escrito en lenguaje de alto nivel a su equivalente en código máquina,
orden por orden, justo en el momento en que hay que procesar cada una de las órdenes. El
sistema de traducción consiste en: traducir la primera sentencia del programa a lenguaje
máquina, se detiene la traducción, se ejecuta la sentencia; a continuación, se traduce la
siguiente sentencia, se detiene la traducción, se ejecuta la sentencia y así sucesivamente hasta
terminar el programa.
Los intérpretes siguen siendo muy frecuentes hoy en día. Por ejemplo, en un servidor web es
habitual crear programas usando lenguajes como PHP, ASP o Python, y que estos programas
no se conviertan a un ejecutable, sino que sean analizados y puestos en funcionamiento en el
momento en el que se solicita la correspondiente página web.
Un compilador es un programa que traduce los programas fuente escritos en lenguaje de alto
nivel a lenguaje máquina. La traducción del programa completo se realiza en una sola

80
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

operación denominada compilación del programa; es decir, se traducen todas las


instrucciones del programa en un solo bloque. El programa compilado y depurado
(eliminados los errores del código fuente) se denomina programa ejecutable porque ya se
puede ejecutar directamente y cuantas veces se desee; sólo deberá volver a compilarse de
nuevo en el caso de que se modifique alguna instrucción del programa. De este modo el
programa ejecutable no necesita del compilador para su ejecución.
6.4. HERRAMIENTAS DE PROGRAMACIÓN

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.

6.5. REPRESENTACION GRÁFICA DE LOS ALGORITMOS (DIAGRAMAS DE FLUJO)

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

Figura 6.3 Símbolos estándar utilizados en la construcción de diagramas de flujos

Figura 36 Símbolos estándar utilizados en la construcción de diagramas de flujos

La confección de un diagrama de flujo provee una serie de ventajas al programador:

• 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

RECOMENDACIONES PARA LA CONSTRUCCIÓN DE DIAGRAMAS DE FLUJO

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

ambigüedades, dejando el uso del símbolo = exclusivamente para el operador de igualdad. El


formato general de una operación de asignación es
«identificador_variable» ←«expresión»

6.5.3. DEFINICIÓN DE VARIABLES

En el ambiente de la informática y la computación, más específicamente en el área de la


programación de computadores, una variable es un espacio o zona de memoria que se utiliza
para almacenar o guardar un valor.Así pues, al referirnos en un programa a una variable
determinada nos estamos refiriendo a una determinada posición o ubicación de memoria.
Para declarar una variable, es necesario identificarla con un nombre y asignársele un valor
(esto puede ser opcional).

Recomendaciones para utilizar nombres o identificadores de variables


 Las variables pueden comenzar con una letra de la A hasta la Z mayúscula o
minúscula y no debe contener espacios en blanco. Por ejemplo: A, X, numero, Area,
x1, x2. Son nombres de variables válidos.
 Las variables pueden comenzar con el carácter ( _ ) underscore seguido de cualquier
carácter sea numero o letra. Por ejemplo: _longitud, _a2; son nombre validos de
variables.
 El carácter se puede utilizar también de la siguiente forma: area_triangulo,
tiempo_promedio. También son nombres de variables válidos.
 Los nombres de variables no pueden ser números. Por ejemplo: 1, 2, 500, 0.0025. Son
nombres incorrectos de variables.
 Los operadores aritméticos (+, -, *, /, %) no se pueden utilizar en los nombres de
variables, ni tampoco los operadores relacionales (=, <, >=, >, <=, !=).

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

En este ejemplo la variable “suma” nos sirve de acumulador. Un acumulador, es una


variable que utilizamos dentro de la estructura de nuestros algoritmos o diagramas para
guardar o acumular en ella el valor de uno o varios cálculos u operaciones.
6.5.4. ESTRUCTURAS DE CONTROL

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

En este ejemplo se demuestra cómo utilizar una sentencia repetitiva en un algoritmo. El


algoritmo calcula la suma de los 50 primeros números enteros. Para realizar este proceso el
algoritmo consta de dos variables, la variable “suma”, que es una variable tipo acumulador
utilizada para ir guardando el valor de la suma en cada iteración del ciclo y, la variable “C”
que es una variable tipo contador utilizada para establecer la condición de salida del ciclo o
bucle.En cada iteración se suma el valor de la variable “C” al valor acumulado en la variable
“suma”.
Observe que se utiliza una sentencia de selección que es donde se establece la condición de
salida del ciclo. Esta condición será verdadera cuando la variable “C” sea mayor que 50,
entonces el algoritmo sale de la sentencia repetitiva, imprime o le da salida al valor de la
variable “suma” y termina la ejecución del mismo.
Sentencias repetitivas anidadas
Hemos visto cómo utilizar una sentencia repetitiva (ciclo o bucle). También, puede darse el
caso en que tengamos que utilizar una o varias sentencias repetitivas unas dentro de otras. En
estos casos el comportamiento de los bucles es un poco diferente. Se tiene que completar el
bucle más interno, antes de que se acabe el bucle más externo. Normalmente se ejecuta
completo el bucle más interno por cada vuelta o repetición del bucle más externo. Se tendrán
que utilizar dos o más condiciones de salida en este tipo de bucle.
Veamos un ejemplo de cómo podemos utilizar esto:

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

1. Hallar la suma de dos números X e Y.

91
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

2. Hallar el producto de dos numero X e Y.

92
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

3. Hallar la suma de los diez primeros números pares.

93
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

4. Dado un numero N contestar si es positivo o negativo.

94
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

5. Leer 5 números y, contestar si el número leído (introducido por el usuario) es positivo o


negativo.

95
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

6.6. DESCRIPCIÓN DEL ALGORITMO (SEUDOCÓDIGO)

El pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. El uso de tal


lenguaje hace el paso de codificación final (esto es, la traducción a un lenguaje de
programación) relativamente fácil. Los lenguajes APL Pascal y Ada se utilizan a veces como
lenguajes de especificación de algoritmos.
El pseudocódigo nació como un lenguaje similar al inglés y era un medio para representar
básicamente las estructuras de control de programación estructurada. Se considera como un
primer borrador, dado que el pseudocódigo tiene que traducirse posteriormente a un
lenguaje de programación. El pseudocódigo no puede ser ejecutado por una computadora. La
ventaja del pseudocódigo es que en su uso, en la planificación de un programa, el
programador se puede concentrar en la lógica y en las estructuras de control y no
preocuparse de las reglas de un lenguaje específico. Es también fácil modificar el
pseudocódigo si se descubren errores o anomalías en la lógica del programa, mientras que en
muchas ocasiones suele ser difícil el cambio en la lógica, una vez que está codificado en un
lenguaje de programación. Otra ventaja del pseudocódigo es que puede ser traducido
fácilmente a lenguajes de programación.
El pseudocódigo original utiliza para representar las acciones sucesivas palabras reservadas
en inglés —similares a sus homónimas en los lenguajes de programación—, tales como start,
end, stop, if-then-else, while, for-to, etc. La escritura de pseudocódigo exige normalmente la
indentación (sangría en el margen izquierdo) de diferentes líneas.
Una representación en pseudocódigo —en inglés— de un problema de cálculo del salario
neto de un trabajador es la siguiente:

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

Un seudocódigo está compuesto por instrucciones de diferentes tipos, organizadas


secuencialmente, en forma de estructuras de control.

• 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.

Palabra reservada Significado


start Representa el inicio del algoritmo o seudocódigo
end Representa el final del algoritmo o seudocódigo
Se utiliza para lectura de datos, desde un archivo o dispositivo de
read entrada como el teclado.
write Se utiliza para escritura de datos, en un archivo, la pantalla, etc.
print Se utilizar para imprimir datos por impresora
var Utilizado para declarar variables
if-then Utilizado para crear estructuras de selección o condiciones simples
endif Utilizado para finalizar una instrucción de condición
Alternativa de una condición o selección doble. Es decir, cuando
evaluamos una condición o estructura de selección y esta no se
if-then-else cumple.

97
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Selección en anidada o en cascada. Se utilizado para encadenar


condiciones como parte de una misma condición, es decir, crear
else-if-then una o varias alternativas de condición en secuencia.
Utilizado para crear sentencias repetitivas desde-hasta. Es decir,
for-to cuando se conoce la cantidad de repeticiones del bucle.
endfor Utilizado para finalizar una sentencia de repetición desde-hasta
Utilizado para crear sentencias repetitivas cuando no se conoce la
cantidad de repeticiones del bucle. Es decir, el bucle se repite
while mientras la condición se cumple.
begin Inicio de la estructura repetidawhile
endwhile Utilizado para finalizar una instrucción de repetición while
Utilizado para crear una sentencia repetitiva que se ejecuta por lo
do-while menos una vez antes de empezar el ciclo o bucle.
end do Se utiliza para finalizar una sentencia do-while
Esta sentencia permite realizar distintas acciones con base en los
case-when posibles valores de una variable o expresión
Tabla 1. de palabras reservadas utilizadas en la escritura de un seudocódigo

Declaración y asignación de variables


Para declarar variables en un seudocódigo se utiliza la palabra reservada var, seguido del
identificador o nombre de la variable. Para asignarle valor a una variable se utiliza el símbolo
← seguido del valor a asignar. A continuación se muestran ejemplos de declaración y
asignación de variables en la escritura de un seudocódigo.

Instrucciones de lectura de datos (entrada)

98
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Las operaciones de lectura o entrada de datos permiten leer determinados valores y


asignarlos a determinadas variables. Esta entrada se conoce como operación de lectura (read).
Los datos de entrada se introducen al procesador mediante dispositivos de entrada (teclado,
unidades de disco, etc.). Para las instrucciones de lectura se utiliza la palabra reservada read.
A continuación se muestra un ejemplo de cómo utilizar esta instrucción.

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.

Instrucciones de salida de datos (escritura)


La salida de datos puede aparecer en un dispositivo de salida (pantalla, impresora, archivo
etc.). La operación de salida se denomina escritura (write). Se pueden las palabras reservadas
write y print para realizar esta tarea. A continuación se muestran ejemplos de cómo utilizar
instrucciones de escritura.

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

Figura 37 Estructura secuencial de un algoritmo

100
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Instrucciones de selección o condición (simples)


En las estructuras selectivas se evalúa una condición y en función del resultado de la misma
se rea liza una opción u otra. Las condiciones se especifican usando expresiones lógicas. La
representación de una estructura selectiva se hace con palabras en pseudocódigo (if-then).
Estas instrucciones se utilizan para crear y manejar condiciones dentro de la estructura del
seudocódigo. A continuación se muestra un ejemplo de cómo utilizar una sentencia de
condición o selección.

Estructura de selección o condición (doble)


La estructura anterior es muy limitada y normalmente se necesitará una estructura que
permita elegir entre dos opciones o alternativas posibles, en función del cumplimiento o no
de una determinada condición. Si la condición C es verdadera, se ejecuta la acción 1 y, si es
falsa, se ejecuta la acción 2. Las palabras reservadas utilizadas para representar este tipo de
condiciones tienen la forma (if-then-else). A continuación se muestra un ejemplo de su uso.

101
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

En el ejemplo anterior vimos cómo utilizar instrucciones de selección doble. Pero en la


práctica, en el diseño de nuestros algoritmos las estructuras de concisión poden complicarse
más que esto. En estos casos sería necesario implementar condiciones más complejas.
Las instrucciones de selección también se pueden utilizar de forma anidadas o en cascada,lo
que nos permite evaluar varias condiciones dentro de nuestros algoritmos. Estas
instrucciones tienes la forma (else-if-then).Siguiendo con el ejemplo anterior, podríamos
complicar u poco la condición del algoritmo para añadir una nueva alternativa de selección.
A continuación se muestra cómo quedaría.

Estructura de selección múltiple (case-when)


Con frecuencia —en la práctica— es necesario que existan más de dos elecciones posibles
(por ejemplo, en la resolución de la ecuación de segundo grado existen tres posibles
alternativas o caminos a seguir, según que el discriminante sea negativo, nulo o positivo).
Este problema, como se verá más adelante, se podría resolver por estructuras alternativas
simples o dobles, anidadas o en cascada; sin embargo, este método si el número de
alternativas es grande puede plantear serios problemas de escritura del algoritmo y
naturalmente de legibilidad.

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

En el ejemplo anterior se pide al usuario que escriba el número correspondiente a un día de la


semana, el valor se almacena en la variable “dia_semana”. En la construcción case se evalúa
el valor de la variable y dependiendo del valor dado a la variable se escogerá una de las
opciones when. La instrucción case-when se ejecuta solo una vez.

Estructuras repetitivas (for-to, desde-hasta)


Las estructuras repetitivas o bucles se utilizan para hacer que una sección de nuestro
algoritmo o seudocódigo se repita una o varias veces.
En muchas ocasiones se conoce de antemano el número de veces que se desean ejecutar las
acciones de un bucle. En estos casos, en el que el número de iteraciones es fijo, se debe usar
la estructura (for-to). Estas estructuras se conocen como desde-hasta. La estructura desde-
hasta ejecuta las acciones del cuerpo del bucle un número especificado de veces y de modo
automático controla el número de iteraciones o pasos a través del cuerpo del bucle.
El siguiente ejemplo se demuestra cómo sumar e imprimir el resultado de la suma de los 10
primeros números enteros.

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

En el ejemplo anterior la condición de salida se establece como “numero<=5”, la sección de


código dentro del ciclo se repite mientras esta condición sea verdadera.
Estructuras repetitivas (do-while, hacer-miesntras)
El bucle o senetencia repetitiva while al igual que el bucle for-to evalúan la expresión al
comienzo del bucle de repetición; siempre se utilizan para crear buclespre-test. Los bucles
pre-test se denominan también bucles controlados por la entrada. En numerosas ocasiones se
necesita que el conjunto de sentencias que componen el cuerpo del bucle se ejecuten al
menos una vez sea cual sea el valor de la expresión o condición de evaluación. Estos bucles
se denominan bucles post-test o bucles controlados por la salida. Un caso típico es el bucle
hacer-mientras (do-while)
El bucle do-while es análogo al bucle while y el cuerpo del bucle se ejecuta una y otra vez
mientras la condición (expresión booleana) sea verdadera. Existe, sin embargo, una gran
diferencia y es que el cuerpo del bucle está encerrado entre las palabras reservadas hacer y
mientras, de modo que las sentencias de dicho cuerpo se ejecutan, al menos una vez, antes de
que se evalúe la expresión booleana. En otras palabras, el cuerpo del bucle siempre se ejecuta,
al menos una vez, incluso aunque la expresión booleana sea falsa. El bucle termina su
ejecución cuando la expresión o condición de salida sea falsa.
En el siguiente ejemplo se muestra cómo utilizar sentencia repetitiva do-while, para imprimir
los número del 1 hasta 10.

106
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

ESCRITURA DEL SEUDOCÓDIGO/ALGORITMO


La escritura de un algoritmo mediante una herramienta de programación debe ser lo más
clara posible y estructurada, de modo que su lectura facilite considerablemente el
entendimiento del algoritmo y su posterior codificación en un lenguaje de programación.

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.

Un algoritmo constará de dos componentes: una cabecera de programa y un bloque o cuerpo


del algoritmo. La cabecera de programa es una acción simple que comienza con la palabra
program. Esta palabra estará seguida por el nombre asignado al algoritmo completo. El
cuerpo del algoritmo es el resto del programa y consta de dos componentes o secciones: las
acciones de declaración y las acciones ejecutables.

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.

Cabecera del seudocódigo/algoritmo


Todos los algoritmos y programas deben comenzar con una cabecera en la que se exprese el
identificador o nombre seguido de la palabra reservada start.

Cuerpo del algoritmo/seudocódigo


El cuerpo del algoritmo está compuesto por todas las construcciones y sentencias necesarias
para construir el algoritmo. Sentencias repetitivas, sentencias de selección o condicionales y
cualquier otro calculo u operación en general.

Estructura general de un algoritmo/seudocódigo

107
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

CORRESPONDENCIA ENTRE LOS SIMBOLOS DEL DIAGRAMAS DE FLUJO Y LAS


SENTENCIAS DEL SEUDOCÓDIGO.

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.

Símbolos diagramas de flujo Sentencias del seudocódigo

start/end

read/write

Print
Declaración de variables var, cualquier
operación o sentencia de asignación ←

if-then/if-then-else

if-then, else-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

3. Supongamos que se proporciona una secuencia de números tales como 5 3 0 2 4 4 0 0 2 3


6 0 2. Se desea contar e imprimir la cantidad de ceros existentes.

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

6.7. EJERCICIOS DE PROGRAMACION (SEUDOCODIGO Y DIAGRAMAS DE FLUJO)

1. Realice un diagrama de flujo que imprima los números del 1 al 500.


2. Realice un diagrama que lea una cantidad determinada en Kb e imprima su equivalente
en Gb.
3. Escriba un diagrama de flujo que lea dos variables e intercambie los valores entre una y
otra e imprimirlas.
4. Haga un diagrama de flujo que permita sumar N números leídos por teclado e imprima
resultado.
5. Haga un algoritmo que calcule el área de dos triángulos e imprima el promedio de las
áreas, teniendo en cuenta que la fórmula del área A = (b*H)/2.
6. Realice un diagrama de flujo que lea 5 números, sume los primeros 4 y divida la suma
entre el ultimo e imprima el resultado.
7. Realizar un diagrama que lea n números e indique cuantos son positivos, negativos y
cero.
8. Realice un diagrama de flujo que genere la tabla de multiplicación del 4 digitada y luego
la imprima.
9. Hacer un diagrama de flujo para convertir un número decimal leído por el teclado a
binario.
10. Realice un diagrama de flujo que lea las notas finales de 5 asignaturas e indique cuantas
han aprobado, cantidad que han aprobado, cantidad que han reprobado y cuantas han
aprobado con una nota mínima de aprobación de 70 puntos.
11. Realice un diagrama que lea el sexo de 20 personas e imprima si hay más mujeres que
hombres o viceversa e indique si existe igual cantidad.
12. Realice un diagrama de flujo que lea las notas finales de N estudiantes, si la nota está
entre 90-100 tiene A, 80-89 tiene B, 70-79 tiene C, 60-69 tiene D y menor de 60 tiene F.
imprima el equivalente de cada calificación, si digita notas fuera de rango, o sea fuera 0-
100 error.
13. Realice un diagrama de flujo que genere la siguiente serie de números
3,6,9,12,15,18,21,24,27,30 y la imprima.
14. Realice un diagrama de flujo que genere la siguiente serie de números
2,4,6,8,12,16,20,24,30,36,42,48 y la imprima.
15. Hacer un diagrama de flujo que convierta hora a minuto, segundo y milisegundo.
16. Desarrolle un algoritmo que permita determinar a partir de un número de días, ingresado
por pantalla, ¿Cuantos, años, meses, semanas; constituyen el número de días
proporcionado?
17. Hacer un diagrama de flujo que simule un reloj digital en base a doce horas, debe tomar
en cuenta cundo la batería se agote; tomando como referencia que una batería normal
dura 9,000 horas. El reloj inicia digitándole la hora actual.

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:

Clave de categoría Categoría Aumento %


S Sindicalizado 20
C Confianza 10
D Directivo 5
E Ejecutivo 0

Elabore un diagrama de flujo que solicite la categoría y el sueldo actual de un empleado y


calcule e imprima el nuevo salario.

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

TÉCNICAS DE PROGRAMACIÓN: PARTE II


Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

7.1. ARREGLOS: VECTORES Y MATRICES

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.

Figura 7.1 Representación gráfica de un arreglo

El nombre de un arreglo es único, e identifica a todo el conjunto de datos almacenados en la


estructura. Por su parte V1, V2, V3,…, Vn indican los valores almacenados en cada una de
las casillas del arreglo. Los índices 0, 1, 2,…, N-1 referencian a cada una de las celdas o
posiciones del arreglo y por lo tanto permiten el acceso a cada uno de los valores
almacenados en ellas.

117
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

DECLARACIÓN DE UN ARREGLO

La declaración de array o arreglo especifica el nombre del arreglo y el número o la cantidad


de elementos que contendrá el del mismo. En la figura 7.2., se muestran ejemplos como debe
declararse un arreglo.

Figura 7.2 Formas de declarar un arreglo

En la figura 7.2., se muestran dos formas de cómo podrían declararse un arreglo. En la


primera instrucción muestra como declarar un arreglo unidimensional o vector, y en la
segunda instrucción se muestra como declarar un arreglo multidimensional o un matriz.

nombre_arreglo: nombre o identificador del 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.

7.1.1. ARREGLOS UNIDIMENSIONALES: LOS VECTORES

Los arreglos unidimensionales se conocen comúnmente como vectores. Un vector se


representa mediante una variable con un subíndice. La figura 38., muestra como declarar un
arreglo dimensional de 10 elementos llamado “números”.
Figura 38 Declaración de un arreglo unidimensional o vector

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

Figura 40 Procedimiento para llenar un vector de forma iterativa

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

7.1.2. ORDENAMIENTO DE VECTORES

El ordenamiento de un vector se logra intercambiando las componentes de manera que:


vec[0] <= vec[1] <= vec[2]<=…vec[n], etc. Es decir, que el contenido de la componente
vec[0] sea menor o igual al contenido de la componente vec[1] y así sucesivamente. Si se
cumple lo dicho anteriormente decimos que el vector está ordenado de menor a mayor.
Igualmente podemos ordenar un vector de mayor a menor, donde
vec[c]>=vec[1]>=vec[2]>=…vec[n].

En el ejemplo que se muestra a continuación, se ha empleado un algoritmo para ordenar un


vector de manera secuencial. En el algoritmo, se asume que el vector ha sido llenado
previamente. No será necesario realizar este procedimiento.

121
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

7.1.3. BÚSQUEDA EN VECTORES

La búsqueda de un elemento dentro de un array es una de las operaciones más importantes en


el procesamiento de la información, y permite la recuperación de datos previamente
almacenados.

La búsqueda permite determinar si un cierto elemento fue almacenado o no en el arreglo.


Existen diferentes formas para llevar a cabo esta operación, pero para el caso particular de
los arreglos desordenados el único método aplicable es el que se conoce como búsqueda
secuencial.

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

7.1.4. ARREGLOS BIDIMENSIONALES (TABLAS/MATRICES)

El arreglo (array) bidimensional se puede considerar como un vector de vectores. Unarreglo


bidimensional es un grupo de columnas, como se ilustra en la Figura 7.8.

El diagrama representa una tabla o matriz de treinta elementos (5 × 6) con 5 filas y 6


columnas. Como en un vector de treinta elementos, cada uno de ellos tiene el mismo nombre.
Sin embargo, un subíndice no es suficiente para especificar un elemento de un arreglo
bidimensional; por ejemplo, si el nombre del arreglo es M, no se puede indicar M[3], ya que
no sabemos si es el tercer elemento de la primera fila o de la primera columna. Para evitar la
ambigüedad, los elementos de un arreglo bidimensional se referencian con dos subíndices: el
primer subíndice se refiere a la fila y el segundo subíndice se refiere a la columna. Por
consiguiente, M[2, 3] se refiere al elemento de la segunda fila, tercera columna.
Figura 42 Arreglo bidimensional

Un arreglo bidimensional M, también denominado matriz (términos matemáticos) o tabla


(términos financieros), se considera que tiene dos dimensiones (una dimensión por cada
subíndice) y necesita un valor para cada subíndice para poder identificar un elemento
individual. En notación estándar, normalmente el primer subíndice se refiere a la fila del
arreglo, mientras que el segundo subíndice se refiere a la columna del arreglo. Es decir, B[I,
J] es el elemento de B que ocupa la I fila y la J columna, como se indica en la Figura 43.
Figura 43 Elemento B[i,j] de la matriz

123
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Llenar un arreglo bidimensional o matriz

Para acceder a cada elemento de un arreglo bidimensional de forma individual, se necesitan


dos subíndices, de la forma matriz[f, c], donde f representa las filas del arreglo y c representa
a las columnas. Para poder llenar una matriz, necesitamos dos bucles anidados, de manera
que nos permitan poder representar las componentes f, c de la matriz.

En el siguiente ejemplo se muestra cómo declarar y llenar una matriz de 9 elementos.

124
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Recorrido de una matriz


Para recorrer una matriz se utiliza el mismo método que para llenarla. Serán necesarios dos
estructuras repetitivas para representar las componentes de la estructura. El ejemplo que se
muestra a continuación demuestra cómo recorrer e imprimir el contenido de una matriz. Se
asume que la matriz está llena.

125
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

7.1.5. ARREGLOS MULTIDIMENSIONALES

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

La ordenación es la operación que permite establecer un orden (creciente o decreciente) entre


un conjunto de valores. Dependiendo donde estén almacenados los datos, la ordenación
recibe diferentes nombres. Si se realiza sobre datos guardados en un arreglo se llama
ordenación interna. Por otra parte, si se aplica a un conjunto de valores almacenados en un
archivo, se le denomina ordenación externa.

La ordenación interna se refiere a ordenar un conjunto de datos que se encuentran


almacenados en una estructura, en la memoria principal. El resultado de aplicar esta
operación a un arreglo es que todos sus elementos quedan ordenados de manera creciente o
decreciente.

• 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

la ordenación— es el más eficiente: 1) tiempo menor de ejecución en computadora;2) menor


número de instrucciones. Sin embargo, no siempre es fácil efectuar estas medidas: puede no
disponerse de instrucciones para medida de tiempo, y las instrucciones pueden variar,
dependiendo del lenguaje y del propio estilo del programador. Por esta razón, el mejor
criterio para medir la eficiencia de un algoritmo es aislar una operación específica clave en la
ordenación y contar el número de veces que se realiza. Así, en el caso de los algoritmos de
ordenación, se utilizará como medida de su eficiencia el número de comparaciones entre
elementos efectuados. El algoritmo de ordenación A será más eficiente que el B, si requiere
menor número de comparaciones. En la ordenación de los elementos de un arreglo, el
número de comparaciones será función del número de elementos (n) del arreglo. Por
consiguiente, se puede expresar el número de comparaciones en términos de n.
7.2.1. ORDENAMIENTO POR INTERCAMBIO O BURBUJA

El algoritmo se basa en la lectura sucesiva de la lista a ordenar, comparando el elemento


inferior de la lista con los restantes y efectuando intercambio de posiciones cuando el orden
resultante de la comparación no sea el correcto.

El algoritmo de clasificación de intercambio o de la burbuja se basa en el principio de


comparar pares de elementos adyacentes e intercambiarlos entre sí hasta que estén todos
ordenados.

Supongamos que se desea clasificar en orden ascendente el vector o lista:

Los pasos a dar son los siguientes:

• 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.

La eficiencia de este algoritmo se mide por el número de comparaciones y de intercambios


realizados.

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

7.2.2. ORDENAMIENTO POR INSERCION

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.

Así, por ejemplo, suponga que tiene la lista desordenada:

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 método se basa en comparaciones y desplazamientos sucesivos. El algoritmo de


clasificación de un vector X para N elementos se realiza con un recorrido de todo el vector y
la inserción del elemento correspondiente en el lugar adecuado. El recorrido se realiza desde
el segundo elemento al enésimo.

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

Con respecto al tiempo de ejecución, se puede representar por medio de la expresión:


O*(longitud2)

7.2.3. ORDENACIÓN POR SELECCIÓN

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:

1. Seleccionar el elemento menor del vector de n elementos.


2. Intercambiar dicho elemento con el primero.
3. Repetir estas operaciones con los n–1 elementos restantes, seleccionando el segundo
elemento; continuar con los n – 2 elementos restantes hasta que sólo quede el mayor.
Un ejemplo aclarará el método.

Ordenar la siguiente lista: 96 16 90 120 80 64

El método comienza buscando el número más pequeño 16 y lo coloca en la primera posición

16 96 90 120 80 64

Luego busca el segundo número más pequeño y lo coloca en la segunda posición

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

En el siguiente ejemplo se muestra la implementación de este algoritmo tanto en


seudocódigo como en diagrama de flujo utilizada para ordenar un arreglo de 10 elementos.

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

Este método realiza el mismo número de comparaciones que el de intercambio o burbuja, es


decir longitud*(longitud-1)/2, por lo tanto se puede decir que el tiempo de ejecución del
algoritmo es:
O(longitud2)

7.2.4. ORDENACIÓN RAPIDA (QUICKSORT)

El método de ordenación rápida (quicksort) para ordenar o clasificar un vector o lista de


elementos (arreglo) se basa en el hecho de que es más rápido y fácil ordenar dos listas
pequeñas que una lista grande. Se denomina método de ordenación rápida porque, en general,
puede ordenar una lista de datos mucho más rápidamente que cualquiera de los métodos de
ordenación ya estudiados.

El método se basa en la estrategia típica de “divide y vencerás” (divide and conquer). La


lista a clasificar almacenada en un vector o arreglo se divide (parte) en dos sub-listas: una
con todos los valores menores o iguales a un cierto valor específico y otra con todos los
valores mayores que ese valor. El valor elegido puede ser cualquier valor arbitrario del
vector. En ordenación rápida se llama a este valor pivote.

El primer paso es dividir la lista original en dos sub-listas o sub-vectores y un valor de


separación. Así, el vector V se divide en tres partes:

• Sub-vector VI, que contiene los valores inferiores o iguales.


• El elemento de separación.
• Sub-vector VD, que contiene los valores superiores o iguales.
Los sub-vectores VI y VD no están ordenados, excepto en el caso de reducirse a un elemento.
Consideremos la lista de valores.

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

Se intercambian estos dos valores y se produce la lista

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

de igual forma, la lista completa estará ordenada:

4 9 11 13 16 18 27

El procedimiento de ordenación supone, en primer lugar, una partición de la lista. El ejemplo


siguiente muestra la implementación del algoritmo en seudocódigo y diagrama de flujo.

134
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

7.3. METODOS DE BUSQUEDA

La recuperación de información, es una de las aplicaciones más importantes de la


computadora.

La búsqueda es la operación que permite localizar un elemento en una estructura de datos. Es


decir, ayuda a determinar si el dato buscado está o no en dicha estructura. Si la misma se
realiza sobre datos almacenados en un arreglo, lista, árbol o grafo se dice que es búsqueda
interna. Por otra parte, si se aplica a un conjunto de valores guardados en un archivo, se dice
es búsqueda externa.

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.

La búsqueda interna es aquella que se aplica a una estructura de datos previamente


generada en la memoria de la computadora. En toda operación de este tipo se distinguen dos
elementos, la estructura de datos (que representa donde se realizara la búsqueda) y el
elemento a buscar.
7.3.1. BUSQUEDA LINEAL O SECUENCIAL

Supongamos una lista de elementos almacenados en un vector (array unidimensional). El


método más sencillo de buscar un elemento en un vector es explorar secuencialmente el
vector o, dicho en otras palabras, recorrer el vector desde el primer elemento al último. Si se
encuentra el elemento buscado, visualizar un mensaje similar a “Fin de búsqueda”; en caso
contrario, visualizar un mensaje similar a “Elemento no encontrado en la lista”.

En otras palabras, la búsqueda secuencial consiste en recorrer el arreglo, elemento por


elemento, empezando con el primero, hasta llegar al datos buscado o hasta que se hayan
evaluado o terminado de leer todos los componentes del arreglo.

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.

Arreglo de números enteros

A continuación se muestra la implementación de este algoritmo en seudocódigo y diagrama


de flujo. En el ejemplo se asume que el arreglo ya está lleno, así que se omite esta operación.

136
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

La eficiencia de la búsqueda secuencial se mide por el numero de comparaciones requeridas


hasta encontrar el elemento buscado o hasta que se determine que el mismo no está en el
arreglo. Por lo tanto, si el dato fue almacenado en el arreglo, este puede estar en la primera
posición, en alguna intermedia o en la última, lo cual implica realizar una, varias o todas las
comparaciones, respectivamente. Cuando el dato no está en el arreglo, se compara a este con
todos los elementos del arreglo, hasta llegar al final del mismo; es decir se realizan
comparaciones iguales al tamaño del arreglo. Por lo tanto, en este tipo de búsqueda se
distinguen tres casos: 1) el más favorable, con el número mínimo de comparaciones; 2) el
intermedio con un número medio de comparaciones; y 3) el más desfavorable, con el número
máximo de comparaciones. Estas tres posibles situaciones se expresan de la siguiente
manera:

137
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Comparaciones mínimas = 1

Comparaciones medias = (1 + longitud) / 2

Comparaciones máximas = longitud

7.3.2. BUSQUEDA BINARIA

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.

A continuación se muestra la implementación de este algoritmo en seudocódigo y diagrama


de flujo. En el ejemplo se asume que el arreglo ya está lleno, así que se omite esta operación.

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.

Consideremos un vector de siete elementos (n = 7). El número 8 (N + 1 = 8) se debe dividir


en tres mitades antes de que se alcance 1; es decir, se necesitan tres comparaciones.

139
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

El medio matemático de expresar estos números es:


3 = log2 (8)

en general, para n elementos:


K = log2 (n + 1)

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

Esta fórmula se puede reducir para el caso de que n sea grande a


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.

En la búsqueda binaria log2 (100) = 6...

log2 (100) = xdonde 2x = 100 y x = 6...:

27 = 128 > 100 7 comparaciones

n = 1.000.000
En la búsqueda secuencial: (1.000.000 + 1)/2 = 500.000 comparaciones

En la búsqueda binaria log2 (1.000.000) = x

2x = 1.000.000 donde x = 20 y 220> 1.000.000 =20 comparaciones

140
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Como se observa en los ejemplos anteriores, el tiempo de búsqueda es muy pequeño,


aproximadamente siete comparaciones para 100 elementos y veinte para 1, 000,000 de
elementos. (Compruebe el lector que para 1,000 elementos se requiere un máximo de diez
comparaciones.)

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.

7.3.3. BÚSQUEDA INDEXADA

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:

1. Buscar en el arreglo de índices el intervalo correspondiente al elemento buscado.


2. Restringir la búsqueda a los elementos del intervalo que se localizó previamente.
La ventaja del método estriba en que la búsqueda se realiza inicialmente en el arreglo de
índices, cuantitativamente más pequeña que el array de elementos. Cuando se ha encontrado
el intervalo correcto, se hace una segunda búsqueda en una parte reducida del arreglo. Estas
dos búsquedas pueden ser secuencial o binaria y, el tiempo de ejecución dependerá del tipo
de búsqueda utilizado en cada uno de los arreglos.

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.

El ejemplo siguiente muestra el funcionamiento de este método con un arreglo de 11


elementos:

141
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

1. Se decide dividir el arreglo inicial en bloques de 3 elementos. El tamaño de los


bloques puede ser de menor o mayor tamaño. Esto depende de los requerimientos de
quien implemente el método, pero si es recomendable que no sean bloques muy
grandes.
2. Se crea un arreglo de índices. Este arreglo estará formado por n/k+1 elementos.

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.

Se puede implementar la búsqueda binaria (descrita anteriormente en este capítulo), en el


arreglo de índices, para mejorar la eficiencia de la búsqueda.

Cuando finaliza la búsqueda, o ha encontrado el elemento buscado, o está en una posición


que contiene el elemento mayor de los más pequeños al elemento buscado, o no ha
encontrado el elemento.

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

El mayor problema de este método es mantener los arreglos ordenadostanto el de índices


como el arreglo inicial.

143
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

7.4. EJERCICIOS DE PROGRAMACION (DIAGRAMAS DE FLUJO Y SEUDOCODIGO)

1. Realice un diagrama de flujo que llene un vector de 100 valores.


2. Realice un diagrama de flujo que llene un vector de 5 valores y luego los sume e imprima
suma total.
3. Realice un diagrama de flujo que en un vector lleno de números de 100 posiciones haga
una búsqueda y diga si el número buscado existe y en qué posición del arreglo. En caso
contrario imprima un letrero, número no existente digite otro.
4. Realice un diagrama de flujo que llene un vector de 100 valores y luego sume los valores
impares contenidos en este e imprima el resultado.
5. Realice un diagrama que lea el nombre y edad de 500 personas y los almacene en
vectores e indique cuantas personas pueden votar, cuantas son menos de edad y cuantas
deben votar acompañadas tomando en cuenta que su edad sea mayor de 70 años y luego
imprima el padrón.
6. Realice un diagrama que llene tres vectores de 200 elementos y realice un promedio en
cada vector con los números pares, este promedio es en base a la cantidad de números
pares encontrados no a la cantidad de elementos del vector, y luego sume los tres
promedios e imprima el resultado.
7. Hacer un diagrama de flujo que lea 150 valores y los almacene en un vector “A”, 150
valores y los almacene en un vector “B” y que genere un vector “C”, dado por la suma
del primer valor de “A” más el ultimo de “B”; el segundo valor de “C” será el segundo de
“A” más el penúltimo de “B”; y así sucesivamente y luego imprima los tres vectores.
8. Realice un diagrama de flujo que llene un vector de 100 posiciones y permita buscar el
mayor número contenido en este y lo imprima.
9. Desarrolle un algoritmo que permita leer un vector de 50 cantidades de días, luego los
sume y permita determinar a partir del número de días calculado, ¿Cuántos años, meses,
semanas y días; constituyen el número de días proporcionado?
10. Hacer un diagrama de flujo que lea 1,000 palabras en español, y sus correspondientes en
inglés y francés. Una vez almacenadas en vectores, debe pedir una palabra a buscar, y si
se encuentra imprimir su equivalente en los tres idiomas, si no se encuentra imprimir un
mensaje de “palabra no encontrada digite otra”.
11. Realice un algoritmo que lea dos vectores conteniendo estos las notas y crédito de 5
asignaturas, calcule el índice de ciclo e imprímalo.
12. Haga un algoritmo que lea un vector de 10 posiciones e imprima número mayor y su
posición.
13. Realice un diagrama de flujo que llene una matriz 2x2 y luego debe imprimirla.
14. Realice un diagrama de flujo que llene una matriz 2x2 y luego imprima solo la diagonal
principal.
15. Realice un diagrama de flujo que llene una matriz 2x2 y luego imprima solo la diagonal
secundaria.

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

INTRODUCCIÓN A LA PROGRAMACIÓN CON RAPTOR


Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

8.1. INTRODUCCIÓN A RAPTOR

8.1.1. ¿QUÉ ES RAPTOR?

RAPTOR, (Rapid Algorithmic Prototyping Tool for Ordered Reasoning). Es un entorno de


programación basado en diagramas de flujo, diseñado específicamente para ayudar a los
estudiantes que se están iniciando en la programación y las disciplinas computacionales a
representar de manera gráfica y sencilla sus algoritmos, evitando toda la complejidad
sintáctica que implica utilizar un lenguaje de programación tradicional. Los programas
RAPTOR se crean visualmente y se ejecutan visualmente trazando la ejecución a través del
diagrama de flujo. Además de utilizar una notación sencilla y fácil de aprender, la sintaxis
necesaria se mantiene al mínimo.
Figura 44 Imagen del programa raptor

8.1.2. INSTALACIÓN DEL PROGRAMA

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

Figura 45 Asistente de instalación de RAPTOR

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

Figura 46 Asistente de instalación de RAPTOR

Finalmente se no muestra una ventana de confirmación, figura 8.4. En esta ventana


finalizamos el proceso de configuración o personalización de la instalación. Hacemos click
en siguiente (Next) y el asistente se encargara de completar la instalación de forma
automática.
También existe una versión portable del programa, que puede descargarse de la siguiente
dirección: http://raptor.martincarlisle.com/RaptorPortable_4.0_Revision_6.paf.exe. Esto
permite que RAPTOR se utilice desde una llave USB o similar sin necesidad de instalarlo.

150
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Figura 47 Asistente de instalación de RAPTOR

8.1.3. PRESENTACIÓN GENERAL DEL ENTORNO

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

Figura 48 Entorno de desarrollo de RAPTOR

El entorno se compone de tres grandes áreas, intuitivas y fáciles de utilizar:

• En la parte superior se encuentran la barra de menús y la barra de herramientas.


• En el extremo izquierdo se encuentran la ventana de símbolos y la ventana de
visualización.
• El área central representa el espacio de trabajo, identificada por los símbolos de
inicio y fin de todo diagrama de flujo, es aquí donde diseñaremos nuestros diagramas.

152
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

8.2. EL ENTORNO DE DESARROLLO

El programa RAPTOR pone a la disposición del programador una serie de herramientas y


símbolos que facilitan la creación, diseño y prueba de algoritmos mediante la notación de
diagramas de flujos. La sencillez del programa facilita su uso y aprendizaje.

8.2.1. BARRA DE MENUS

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

un algoritmo corre mucho más rápido que su versión gráfica.

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.

El menú editar, permite como su nombre lo indica, modificar


los símbolos que han sido agregados en el área de trabajo.
Además permite cortar, copiar, pegar y eliminar símbolos del
diagrama de flujo actual.
Deshacer (Undo) revierte los cambios realizados en el
diagrama de flujo actual.
Restablecer (Redo) cancela una acción de deshacer previa.
Comentarios (Comment) permite al usuario agregar un
comentario a un símbolo del diagrama de flujo.

Editar selección (Editselection) permite modificar el contenido de un símbolo seleccionado


en el diagrama de flujo.
Seleccionar todo (SelectAll) permite al usuario seleccionar el diagrama de flujo completo
para copiarlo, pegarlo o eliminarlo.

El menú Escalar (Scale) permite al usuario cambiar el factor Zoom del


espacio de trabajo.

154
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

El menú vista (View, ver), permite configurar diferentes vistas del


entorno de desarrollo y los símbolos utilizados en los diagramas de
flujo.
Todo el texto (Alltext) hace que se muestre todo el texto dentro de
los símbolos del diagrama de flujo. Los símbolos adaptan su tamaño
para mostrar el contenido.

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

Comentarios (comments), permite visualizar o quitar los comentarios agregados a los


símbolos dentro del diagrama de flujo en el espacio de trabajo.

Variables quita o muestra la ventana de visualización debajo de la ventana de símbolos del


panel izquierdo del entorno de desarrollo.

156
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Figura 8.6 Ventana de visualización

Las opciones Expandir todo (ExpandAll)yCollapseAll expanden o comprimen todos los


ciclos y estructuras de selección en el diagrama.

El menú Ejecutar (run) permite elegir como será


ejecutado o probado el diagrama de flujo.
Paso a paso (Step) permite ejecutar o probar paso por
paso el algoritmo, es decir, permite ir avanzando
símbolo por símbolo a través del diagrama de flujo
presionando la tecla F10. Esto puede ser útil cuando
necesitemos encontrar errores lógicos y ver el
contenido de las variables en algún momento dentro
de la ejecución del diagrama.

157
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Ejecución completa (ExecutetoCompletion) RAPTOR ejecuta de manera automática el


diagrama hasta su finalización.

Reiniciar (Reset) detiene la ejecución del algoritmo y reinicia los valores de todas las
variables del diagrama.

Reiniciar/ejecutar (Reset/execute) detiene la ejecución del algoritmo, reinicia los valores de


todas las variables y vuelve a iniciar la ejecución del algoritmo desde el principio.

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.

Un punto de interrupción se utiliza para detener el proceso de ejecución de un diagrama de


flujo, la ejecución de detiene en los símbolos del diagrama donde hayan sido colocados los
breakpoints previo a la ejecución.

8.2.2. BARRA DE HERRAMIENTAS

La barra de herramientas implementa algunas de las funciones que se encuentran en el menú


principal del programa. Al colocar el mouse sobre los botones puede verse un pequeño
mensaje que describe su nombre o uso.

El botón Nuevo (New) permite crear un nuevo proyecto o diagrama de flujo.


El botón Abrir (Open) abre un diagrama previamente guardado.
El botón Salvar (Save) guarda los cambios realizado en el diagrama de flujo actual.
Los botones cortar (cut), copiar (copy) y pegar (paste) realizan todas estas
funciones sobre los símbolos seleccionados en el diagrama de flujo actual.

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.

Los botones restablecer (redo) y deshacer (undo) permiten deshacer y restablecer


cambios realizados sobre el diagrama de flujo actual.
Ejecución completa (ExecutetoCompletion) ejecuta el algoritmo completo hasta que
termine.

Pausar (pause) detiene la ejecución del algoritmo hasta que esta sea reanudada por el
usuario.

El botón Detener y reiniciar (Stop/reset) detiene la ejecución del algoritmo y reinicia


los valores de todas las variables.
Avanzar siguiente (steptonextshape) avanza hasta la siguiente figura en la ejecución
paso por paso del diagrama.

Permite ajustar la velocidad de ejecución del diagrama de flujo. Mover


la barra a la izquierda disminuye la velocidad de ejecución y moverla a
la derecha la aumenta.

Permite ajustar el escalamiento o zoom del espacio de trabajo.

8.2.3. PANEL DE SIMBOLOS

El panel de símbolos contiene todas las figuras y símbolos utilizados en la construcción de


los diagramas de flujo. Se encuentra ubicado en el extremo izquierdo superior del entorno de
desarrollo.

159
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Figura 49 Ventana o panel de símbolos

8.2.4. ESPACIO DE TRABAJO

El espacio de trabajo es donde se crean y editan los diagramas de flujo. Se encuentra en la


parte central del entorno de desarrollo y se identifica por los símbolos de inicio y fin de todo
diagrama de flujo.

160
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Imagen 50. Espacio de trabajo del entorno RAPTOR

8.2.5. VENTANAS DE EDICIÓN DE SÍMBOLOS

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

8.2.6. VENTANA DE VISUALIZACIÓN


La ventana de visualización se utiliza para ver los valores que van tomando las variables
durante la ejecución o corrida de los diagramas de flujo.

Figura 51 Ventana de visualización

163
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

8.2.7. MASTER CONSOLE


Esta ventana esta como una herramienta adjunta al
entorno de desarrollo. Se inicia junto con el programa
y se cierra junto con él. RAPTOR utiliza esta ventana
para mostrar toda la entrada y salida generada en la
ejecución de los diagramas de flujo; valores de
variables, mensajes de error, etc.

Si queremos todo el texto que aparece en la ventana


solo tenemos que pulsar el botón Clear.

8.3. TRABAJANDO CON EL ENTORNO

8.3.1. NOTACIÓN Y SÍMBOLOS BÁSICO

RAPTOR, provee un conjunto de símbolos básicos y estandarizados utilizados en la


construcción de diagramas de flujo. El programador podrá utilizarlos para diseñar y
representar gráficamente sus algoritmos mediante la técnica de diagramas de flujo. Cada uno
de estos símbolos se utiliza para representar una función específica dentro del diagrama. A
continuación se describen las funciones de estos símbolos:

164
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Símbolo Nombre Descripción


Representan el inicio y el fin de todo
diagrama de flujo. El programa los
añade automáticamente cuando se
inicia o cuando se crea un proyecto
Inicio-Fin nuevo.
El símbolo de proceso, se utiliza para
declarar y asignar valores a variables,
realizar operaciones o cálculos como
Sentencia de asignación sumas, restas, multiplicaciones,
(assignment) divisiones.
Es utilizado para que el usuario pueda
introducir información, también se
puede utilizar para declarar y asignar
valores a variables. Los datos
introducidos se guardan en una
Sentencia de entrada (Input) variable.
Se utiliza para mostrar o dar salida a
los valores de las variables, y a
mensajes del usuario. Los resultados
serán colocados en la
Sentencia de salida (Output) MasterConsole, archivo, etc.
Se utiliza para representar o modelar
Sentencia de selección condiciones y para tomar decisiones
(Selection) dentro del algoritmo.
Se utiliza para representar ciclos o
bucles, es decir, secciones dentro del
diagrama que se repiten una o más
Sentencia repetitiva (Loop) veces.

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

8.3.2. AGREGAR SÍMBOLOS AL ESPACIO DE TRABAJO

La inserción de símbolos al espacio de trabajo es un proceso que se puede hacer de varias


formas:

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

8.3.3. EDITAR SÍMBOLOS


Luego que los símbolos son colocados en el espacio de trabajo, se pueden realizar varias
operaciones sobre estos.

Editar o modificar su valor


Para editar o modificar el contenido de un símbolo podemos hacerlo de varia maneras:

A. Haciendo doble click sobre la figura.


B. Presionando la tecla F2 al tener la figura que queremos editar seleccionada. El
símbolo seleccionado se marca en rojo al hacer click sobre él.
C. Presionando click derecho sobre la figura que queremos editar, aparecerá un menú
contextual donde podemos elegir la opción Edit (Editar) para modificar el contenido
de la figura.

D. Con la figura seleccionada, podemos elegir la opción Editselection (Editar selección)


del menú Edit (Editar) de la barra de menú en la parte superior del programa.

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:

A. Seleccionamos la figura que queremos eliminar haciendo click sobre esta y


presionando la tecla delete (suprimir) o la combinación de teclas Ctrl+X.
B. Haciendo click derecho sobre la figura que queremos eliminar, se nos mostrara un
menú contextual donde podemos elegir cualquiera de las opciones Delete o Cut
(Cortar) para eliminar la figura del espacio de trabajo.

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

8.3.4. DECLARACIÓN Y USO DE VARIABLES

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)

Al editar el contenido de este símbolo nos


aparece su ventana de edición. Figura 8.10.
En esta ventana podemos declarar la
variable y asignarle un valor, directamente o
a través de un cálculo.
En el campo Set, escribimos el nombre que
le daremos a la variable. Por ejemplo: A, c,
promedio, etc.
En el campo to, asignamos el valor que
tendrá la variable. Puede ser un valor

169
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

numérico, un carácter, o una cadena de texto; depende del tipo de la variable.


También podemos asignarle un valor a la variable por medio de una operación o cálculo de la
siguiente forma: suma+1, o X*3, etc.

Utilizando el símbolo o la sentencia de entrada (Input)

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.

Mostrar el contenido de las variables


Para mostrar el contenido de las variables podemos utilizar el símbolo de salida (Output).

Si modificamos el contenido de este símbolo nos aparecerá la ventana que se muestra en la


Figura 53 Ventana de edición para la sentencia de salida (Output) figura 8.12. En esta ventana especificamos la
variable que queremos mostrar su valor.
En el único campo disponible, escribimos el
nombre de la variable cuyo contenido
queremos que se muestre o imprima.
También podemos mostrar algún texto como
el siguiente “Mensaje”.
Podemos concatenar el valor de la variable a
un texto de la siguiente forma:
“texto:”+variable.
El texto y el valor de las variables se
mostraran a través de la MasterConsole.

171
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

8.3.5. AGREGAR COMENTARIOS A NUESTROS DIAGRAMAS


Los comentarios pueden ser utilizados dentro de los diagramas de flujo para recordar ciertos
detalles del algoritmo o hacer una explicación aclarativa de alguna sección, variable o punto
específico dentro del diagrama.

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).

B. Seleccionando la figura que queremos agregar el comentario, en el menú Edit


(Editar)seleccionamos la opción Comment (Comentario).

172
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

En la ventana de comentario,figura 8.13., escribimos el texto que queremos agregar


como comentario a la figura.

Los comentarios tienen un aspecto como el de la figura 8.14.


Figura 54 Ventana para agregar comentarios

Figura 55 Aspecto de un comentario

Los comentarios también se pueden mover de lugar, simplemente seleccionándolos y


arrastrándolos con el mouse de un lugar a otro.

Luego de agregar comentarios a uno o varios símbolos en un diagrama de flujo, estos se


pueden eliminar; simplemente seleccionando el comentario a remover y, haciendo uso de las
teclas delete o suprimir, o la combinación de teclas Ctrl+X, el comentario quedará
eliminado. También utilizando cualquiera de las opciones del menú contextual Cortar (Cut)
o Delete (Eliminar), sobre el comentario.

8.3.6. USO DE CONDICIONES Y SENTENCIAS REPETITIVAS


En ocasiones necesitamos controlar el flujo de nuestro programa a través de algún tipo de
condición. También necesitamos que ciertas secciones (o instrucciones) de nuestros
diagramas se repitan una o varias veces. Para tales fines utilizamos una sentencia de
selección (Selection) o una sentencia repetitiva (Loop).
El símbolo con forma de rombo o diamante se utiliza para la toma de decisiones, ya sea en
una estructura de selección o de bucle.El programador entra en el diamante una expresión
que evalúa a Sí (Verdadero) o No (Falso). Tales expresionesse denominan formalmente

173
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

como expresiones booleanas. Basado en el resultado de la expresión (True o False, Si o


No),control del programa se ramificará a la izquierda (Sí, o Verdadero) o a la derecha (No, o
Falso).En el caso de un diamante que controla la salida de un bucle, un valor Yes o True da
como resultado una salida del bucle mientras que un valor No o Falso hace que el control
continúe en el bucle y eventualmente vuelva a la parte superior del bucle.
Este tipo de estructuras nos permiten elegir entre dos opciones (Si o No, Yes o No). La
elección es mutuamente excluyente, es decir, si elegimos una opción no podemos elegir la
otra.
Las expresiones Yes / No más comunes (True / False) se programan comparando dos
expresiones numéricas usando unode los siguientes operadores:

Operador Nombre Descripción


= Igual Es verdadero si los elementos comparados son iguales
!= Diferente, no igual Es verdadero si los elementos comparados son diferentes
Es verdadero si en la expresión el elemento de la
< Menor que izquierda es menor que el elemento de la derecha.
Es verdadero si en la expresión el elemento de la
> Mayor que izquierda es mayor que el elemento de la derecha.
Es verdadero si en la expresión el elemento de la
>= Mayor o igual que izquierda es mayor o igual que el elemento de la derecha.
Es verdadero si en la expresión el elemento de la
<= Menor o igual que izquierda es menor o igual que el elemento de la derecha.

Estos pueden ser algunos ejemplos de expresiones validas:

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:

n >= 1 and n <= 10

174
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

n < 1 or n > 10

Sentencias selectivas (Selection)


Cuando en el diseño de nuestros diagramas necesitamos evaluar alguna condición utilizamos
el símbolo Selection. Lo agregamos al especio de trabajo donde necesitemos establecer la
condición.

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.

Debemos recordar que si utilizamos nombres


de variables estas deben ser declaradas antes
de ser utilizadas.

175
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Sentencias repetitivas (Loop)

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.

Figura 61 Ventana de edición para la sentencia repetitiva (Loop)

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.

8.3.7. PRUEBA Y EJECUCION DE NUESTROS DIAGRAMAS


Para la ejecución de un diagrama de flujo, podemos hacer uso de cualquiera de los botones
de la barra herramientas que se muestran a continuación.

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.

Figura 63 La sentencia o símbolo en color verde de la figura,


Indica que es la sentencia que está siendo ejecutada.

Los resultados de la ejecución podrán visualizarse a través de la ventana MasterConsole,


cuando finalice la ejecución del algoritmo.

8.3.8. DEPURANDO NUESTROS DIAGRAMAS


El proceso de depuración nos permite descubrir errores lógicos en nuestros diagramas y,
visualizar el contenido de las variables en algún momento determinado en la ejecución del
algoritmo. Esta tarea puede hacerse de dos formas:

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.

2. La segunda forma, lo que hacemos es, agregar un punto de interrupción en algún


símbolo o sentencia del diagrama figura 3.8. El punto de interrupción hace que el
proceso de ejecución se pause o detenga hasta que el usuario reanude la
ejecución presionando la tecla F10 o pulsando el botón de la barra de
herramientas. Cuando la ejecución del algoritmo se detiene el usuario puede hacer
una inspección del algoritmo y del contenido o valor 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.

Figura 64 Puntos de interrupción agregados al diagrama para


realizar el proceso de depuración y facilitar su análisis.

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

4. Diseñe un diagrama de flujo que llene vector de 3 elementos e imprima su contenido.

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

Stalling, W. (2006). Organización y Arquitectura de computadores (7ma edición). Pearson


Educación, S.A. Madrid, España.
Tanenbaum, Andrew S. (2003). Redes de computadoras. (4ta edición). México: Pearson
Educación.
Tanenbaum, Andrew S. (2009). Sistemas operativos modernos. (3ra edición). Pearson
Educación, México.

Alejandro Arias Gallegos. Navegadores y buscadores de internet. 10 de diciembre de 2010.


https://es.slideshare.net/AlejandroAriasGallegos/navegadores-y-buscadores-de-internet
Archivo binario. https://es.wikipedia.org/wiki/Archivo_binario.
Algoritmo de ordenamiento. https://es.wikipedia.org/wiki/Algoritmo_de_ordenamiento
Algoritmo de búsqueda. https://es.wikipedia.org/wiki/Algoritmo_de_b%C3%BAsqueda
Correo electrónico. https://es.wikipedia.org/wiki/Correo_electr%C3%B3nico
Carlisle, Martin C., y Wilson T. A., y Humphries W. J., y Hadfield M. S. RAPTOR:
Introducing Programming to Non-Majors with Flowcharts.
http://raptor.martincarlisle.com/raptor_paper.doc
Definición de informática. https://www.mastermagazine.info/termino/5368.php
Eduardo Esquivel. Búsqueda Indexada. 5 de Julio de
2016.https://prezi.com/btojdrynfrrq/busqueda-indexada/
Generaciones de computadoras.
https://es.wikipedia.org/wiki/Generaciones_de_computadoras
Herramienta computacional - RAPTOR.http://tareassgs.webs.com/11/Raptor.pdf
IBM Knowledge Center. Tipos de archivos. Versión 7.1.
https://www.ibm.com/support/knowledgecenter/es/ssw_aix_71/com.ibm.aix.osdevice/filetyp
es.htm
Importancia de la informática. http://www.tiposde.org/informatica/904-importancia-de-la-
informatica/
Informática. https://www.ecured.cu/Inform%C3%A1tica
Informática. https://es.wikipedia.org/wiki/Inform%C3%A1tica

184
Universidad Tecnológica de Santiago Introducción a los algoritmos computacionales

Juani Quezada. Navegadores y Buscadores de Internet. 21 de julio de 2013.


https://www.slideshare.net/jotarqv/navegadores-y-buscadores-de-internet-24483390
La importancia de la informática en nuestra sociedad. http://lainformatica.wikidot.com/la-
importancia-de-la-informatica-en-nuestra-sociedad
Learning Programming Concepts Using Flowcharting Software.
http://raptor.martincarlisle.com/GCCE_Raptor.pdf
RAPTOR - A Vehicle to Enhance Logical Thinking.
http://www.asee.org/file_server/papers/attachment/file/0003/3728/RAPTOR_ASEE2013_Sw
ain_Final.pdf
Tipos de algoritmos. http://www.tiposde.org/ciencias-exactas/843-tipos-de-algoritmos/
Welcome to the RAPTOR home page.http://raptor.martincarlisle.com/
William Fernando L. Qué tipos de algoritmos existen.
https://es.scribd.com/doc/60132651/Que-tipos-de-algoritmos-existen

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

También podría gustarte