You are on page 1of 40

Ins

stituto Tecn
T noló ógicco
de
e Es
studdios Supperiiore
es
de Irap
puatto
Ca
ampus
s- Purrísima
a del Rincó
ón

RE
ECOPIL
LACIÓN
N DE IN
NFORMA ACIÓN
COMPLEMEENTARIIA PARA EL CURSO
C DE
PROGR
RAMAC CIÓN

ENFO
OCADO A PROGR
RAMACIÓ
ÓN EN LENGUAJE
EC

El serr humano o como peersona es un fin enn sí mismoo, inmaneente y cappaz


d trascen
de nder, con identidadd propia y diferente de los demás,
autónnomos, peero al missmo tiemppo interdeependienttes; un seer históricco,
creaador de su
s culturaa, su lenguuaje, consciente de sí y del universoo,
emotivvo, libre y por endee responsable de sus accionnes. Por su s naturaleza
perrfectible, es un serr en consttante trannsformación y búsqqueda dell
coonocimien nto, la jussticia, la felicidad
f d y de su autorreali
a ización.
Filosoofía Modelo Edducativo Siglo XXI del SNESST

Reco
opilo: MC Cesarr Alejanddro Frausto Dáviila

Com mpra La Verrdad, Y No La


L Vendas;
La Sabiiduría, La Ennseñanza, Y La Inteligenncia.

Purísimaa del Rincón,, ENERO 20010


Materia: PROGRAMACION Clave: A/D B10

INDICE: Pág.
CAPITULO I
3
INTRODUCCION A LA PROGRAMACION DE COMPUTADORAS

CAPITULO II
PROCESO PARA LA SOLUCIÓN DE PROBLEMAS CON UNA 24
COMPUTADORA.

CAPITULO III
27
TÉCNICAS PARA LA FORMULACIÓN DE ALGORITMOS.

CAPITULO IV
32
ESTRUCTURAS ALGORITMICAS

CAPITULO V
ENTIDADES PRIMITIVAS PARA LA CONSTRUCCIÓN DE 41
INSTRUCCIONES (VARIABLES, OPERADORES Y TIPOS DE DATOS).

CAPITULO VI
IMPLEMENTACION DE ALGORITMOS EN LENGUAJE C (ENTRADAS Y
47
SALIDAS, ESTRUCTURAS DE CONTROL SELECTIVAS Y
REPETITIVAS).

CAPITULO VII
MODULARIDAD DEL LENGUAJE C (FUNCIONES, ARREGLOS, 74
APUNTADORES Y ARCHIVOS).

REFERENCIAS:

1.- Apuntes Programación / Enríquez Granados, Mario / SEP-DGIT

2.- C# Cómo Programar/Harvey M. Deitel & Paul J. Deitel/ Pearson-Prentice Hall

3.- Diseño Estructurado de Algoritmos/ Cabrera, Fco. & Gómez, Gdo. / SEP-ITL

4.- Introducción a las Ciencias Computacionales / Tremblay / Mcgraw-hill

5.- Lenguajes de Programación / Terans W. Pratt / Chapman&Hall-CRC.

6.- OOP in C++ / Maysam Rajaati & Farid Bekran / Tabriz University Press

7.- Programación en C / Byron gottfried / Mcgraw-hill

Profesor: MC Cesar Alejandro Frausto Dávila


ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

I. INTRODUCCION A LA PROGRAMACION DE COMPUTADORAS

Esta unidad tiene como finalidad dar una breve reseña histórica de los equipos de cómputo, así
como establecer los conceptos básicos y partes principales en un sistema de cómputo, esto
permitirá al usuario tener un mayor entendimiento de los temas a tratar a lo largo del curso.

ANTECEDENTES HISTORICOS Y EVOLUCION DE LA COMPUTADORA

Cuando hay que contestar a la pregunta “¿para que puedo utilizar yo una computadora?”, resulta
muy difícil hacerlo, pues si se responde “para lo que quieras”, el que recibe la respuesta no queda
muy satisfecho, pues piensa que se le esta contestando para salir del paso. Sin embargo, la
respuesta es correcta, ya que la limitación de sus aplicaciones reside solamente en el ingenio del
usuario.

Nuestra era ha sido nombrada de distintas maneras dependiendo el énfasis en alguno de los
desarrollos tecnológicos productos de este siglo, algunos ejemplos:

• Era atómica
• Era de la televisión
• Era de los plásticos
• Era de la informática
• Era de la telefonía celular
• Era de la cibernética

En este documento trataremos temas concernientes a la informática, una discusión mas extensa al
respecto se puede encontrar en las referencias 1,2 y 4.

Así, como la maquina de vapor dio lugar a lo que se llamo posteriormente la Revolución
Industrial, la computadora inicio lo que algunos han calificado de Segunda Revolución
Industrial, cuyo término y consecuencias aún no se vislumbran.

La maquina de vapor sustituye al hombre como ente capaz de realizar trabajo mecánico. El
hombre no trata de competir con la maquina, sino que, manteniendo sus características propias,
cuida de ella, la maneja y le busca aplicaciones.

La computadora sustituye al hombre como ente capaz de manejar información. Tampoco debe el
hombre tratar de competir con la computadora, sino que debe mantener nuevamente, y en forma
más precisa, la característica que le es propia: la actividad intelectual creadora. Asimismo debe
cuidar de este dispositivo, manejarlo y buscarle aplicaciones. Esto no es posible sin una adecuada
instrucción al respecto.

La computadora posee aspectos mucho más peligrosos para el hombre que la maquina de vapor.
Al sociólogo corresponde analizar cómo un simple artefacto puede cambiar la vida del
conglomerado humano.

Sugerencias, e-mail: soterios77@hotmail.com cefrausto@itesi.edu.mx


3
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Antes de continuar seria bueno hacernos las preguntas:

¿Qué es una computadora?


¿Puede la computadora dominar al hombre y esclavizarlo?
¿Cómo son los operarios de esas maquinas?
Algunas respuestas que podríamos escuchar serian:
Claro que podría dominar al hombre y volverle su esclavo.
La computadora es un artefacto que se utiliza ampliamente en muchas áreas de los negocios,
industria, ciencia y educación. Es una pequeña y compleja maquina que enciende luces y hace
girar discos.
Los que las emplean son de personalidad fría e impersonal, siniestra e intrigante, obsesionados
por alterar el saldo de su cuenta bancaria.
O son un genio brillante, normalmente excéntrico, que pasa día y noche al lado de su maquina y
que como resultado se encuentra al borde de la locura.

Si nuestra única fuente de información fuesen las películas (Viaje a las estrellas (Star Trek),
Odisea 2000, Matrix ó Yo Robot), los mensajes promocionales en nuestro celular, ipod o e-mail
es normal que nuestra respuesta sea similar, pero como parte medular de la sociedad, un
profesionista debe tener un mayor entendimiento de estos dispositivos que han expandido su
presencia en una gran variedad de áreas de uso común. La computadora, o mejor dicho los que la
gobiernan, bien pueden dominar al hombre, siempre que éste por ignorancia lo permita. Es por
ello importante recordar la frase extraída de un documento de la ONU “El hombre debe recibir
en su educación general la suficiente información general acerca de las computadoras de modo
que no se encuentre a merced de quienes gobiernan las maquinas”.

La computadora se ha desarrollado en paralelo con las crecientes necesidades del género humano
de más rápidos y precisos cálculos, pudiendo encontrarse a sus ancestros tres mil años atrás.

La realización de cálculos aritméticos mediante las cuatro operaciones básicas (suma, resta,
multiplicación y división) no es dificultad para nosotros empleando el método de numeración
decimal pero. ¿Seria también igual de fácil con cifras romanas?

Las necesidades del cálculo por parte del hombre datan desde hace miles de años. En la antigua
civilización egipcia se agrupaban piedrecillas en montones de diez con el objeto de contar. El
sistema de base 10 proviene del uso de los 10 dedos de las manos como elementos de cálculo, y
no olvidemos la contribución valiosa a los números arábigos del cero maya.

Tablillas que contienen tablas de multiplicar y de recíprocos han sido encontrados cerca de
Babilonia y se cree que fueron escritas alrededor de 1700 años antes de Cristo. Los babilónicos
utilizaban un sistema sexagesimal (60, de hay nuestro sistema de numeración del tiempo) y
existen evidencias de solución de ecuaciones algebraicas por parte de ellos y desarrollaron
algoritmos de solución de problemas prototipo. Predecían eclipses con precisión, 500 años antes
de Cristo.

I. Introducción a la Programación de Computadoras


4
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Desde los antiguos tiempos el hombre ha tenido conciencia de sus limitaciones con respecto a
sus capacidades mentales de cálculo, por lo que ha ido desarrollando las más diversas
herramientas de apoyo, que van desde las muy simples hasta las mas complejas.

Como antecesores de la computadora podemos considerar al ábaco, un tablero rectangular con


bordes a sus alrededores, donde antiguamente se colocaba una capa fina de arena y el operador
podía realizar sus cuentas ayudándose con piedrecillas (calculi en latín) que acompañaban al
tablero (abax= tabla) y el conocido ábaco chino swan pan (Figura siguiente), una variación del
original cuyos ejemplares antiguos datan de 1200 AC, es quizá el instrumento aritmético que
más se haya utilizado en el mundo.

La máquina aritmética de Pascal


Blaise Pascale (19 de Junio de 1623- 19 Agosto 1662), a los 19 años de edad, diseño una
“máquina aritmética” basada en ruedas dentadas y numeradas del 0 al 9, de tal manera que el
acarreo se efectuaba automáticamente (Figura siguiente). Fue el primer dispositivo verdadero
de cálculo. La serie de ruedas que giran sobre un eje, y que tienen circunscritas las cifras del 0 al
9, están dentadas de manera que cada una avanza en una cifra cuando la rueda de su derecha ha
cumplido una rotación completa. La maquina puede sumar o restar.

I. Introducción a la Programación de Computadoras


5
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Otros desarrollos antecesores de la computadora que podríamos nombrar son:

• El de Gottfried W. Leibnitz que en 1700 perfecciona el mecanismo de Pascal y consigue


realizar multiplicación y división por el método de sumas y restas repetidas.
• Joseph M. Jacquard en 1804 inventa la “tarjeta” perforada para automatizar mecanismos
de telares (similar a las cajas musicales), con programa escrito en ellas.

Algunos consideran como padre de la computadora a Charles Babbage (1792-1871) matemático


e ingeniero ingles, que en 1822 construyó el modelo funcional de una máquina para calcular
tablas matemáticas llamada “maquina de diferencias”.

En 1833 mejora la maquina bautizándola como “maquina analítica” (Figura siguiente). Dicha
maquina mecánica posee muchas de las características de las computadoras electrónicas actuales,
nunca se construyo completamente por limitaciones tecnológicas. Fue diseñada para calcular e
imprimir tablas matemáticas, tales como las de logaritmos y raíces cúbicas.

I. Introducción a la Programación de Computadoras


6
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

ADVENIMIENTO DE LAS COMPUTADORAS ELECTRONICAS

Herman Hollerith, estadista del U.S. Census Bureau durante el censo de 1880 concibió la idea de
que los datos del censo fueran perforados y tabulados automáticamente por maquinas
especialmente diseñadas (Figura siguiente), debido a la reducción de tiempo que se obtuvo
durante el análisis de los resultados el uso de estas maquinas se extendió a empresas de seguros y
agencias de gobierno. Durante la decada de 1890-1900 abandona el Census Bureau e inicia la
Tabulating Machines Company, que posteriormente llegaria a ser la International Machines
Company IBM que en 1930 fabrica en gran escala equipos de procesamiento de datos a base de
tarjetas perforadas.

El decenio de 1930-1940 fue testigo de la explosión de actividades concernientes al desarrollo de


las computadoras, en gran parte debido a los preparativos de la guerra que intensificaron la
necesidad de cálculos científicos como la producción de tablas balísticas, por ejemplo, y se
encontró financiamiento para varios proyectos clave.

En 1937, Howard Aiken, de la Universidad de Harvard, ideó una gigantesca calculadora


mecánica capaz de realizar largas secuencias de operaciones aritméticas y lógicas. La
calculadora que propuso recibía instrucciones codificadas previamente registradas en una cinta
de papel perforada y calculaba los resultados con la ayuda de unidades de almacenamiento
(memoria) de control y aritmética.

No obstante la máquina Mark I era relativamente lenta, pues su velocidad de operación dependía
de la rapidez de sus numerosos componentes electromecánicos. La compañía IBM emprendió la
construcción de la calculadora de Aiken y la primera máquina fue presentada a la Universidad de
Harvard en 1944.

En 1946, J. P. Eckert y J. W. Mauchley de la Universidad de Pensilvania se encontraron


confrontados con el problema de procesar grandes volúmenes de datos de estudios de tiempo y
balística. Se requería claramente de velocidades altas de computación. Ellos estaban convencidos
que las técnicas electrónicas eran esenciales para este propósito y así diseñaron el ENIAC
(Electronic Numerical Integrator and Computer, figura siguiente), que contenía 18 000 tubos de

I. Introducción a la Programación de Computadoras


7
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

vacío. Como no tenía partes móviles, representaba un gran avance en la tecnología de


computadoras. Era mucho mas rápida que la Mark I, la suma requería 0.2 milisegundo, y la
multiplicación requería 2.8 milisegundos. Carecía de memoria interna y por lo tanto un programa
se preparaba conexionando tableros en la máquina; el alambrado era un proceso lento y limitaba
la utilidad del ENIAC.

En 1945, el Dr. John Von Neumann, eminente matemático judío-húngaro, nacionalizado


norteamericano, en colaboración con J. P. Eckert y John Mauchly, propuso un tipo diferente de
computadora electrónica, una que tenía su programa almacenado en la memoria.
Almacenamiento interno del programa, que se encuentra presente en todas las computadoras
modernas, ofrece una flexibilidad de programación mucho mayor. La computadora, que se
completó en 1950 se llamo EDVAC (Electronic Discrete Variable Automatic Computer). Tenía
doce instrucciones distintas y realizaba las operaciones aritméticas con números binarios (base
dos).

La primera computadora comercial moderna fue la UNIVAC I (Universal Automatic Computer,


figura siguiente). A diferencia de sus predecesoras, la UNIVAC I se utilizaba para el tratamiento
de datos no científicos. La UNIVAC I fue construida en 1951 por Remington Rand (
posteriormente Sperry Rand), compañía fundada por Eckert y Mauchly, utilizaba la cinta
magnética para la entrada y salida de datos, mientras que las máquinas anteriores recurrían para
estos fines a las tarjetas o las cintas de papel perforadas, mucho más lentas. Además, la UNIVAC
fue la primera máquina capaz de aceptar y tratar o procesar datos alfabéticos a la vez que los
numéricos.

I. Introducción a la Programación de Computadoras


8
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

SEGUNDA GENERACION DE COMPUTADORAS

La primera generación de computadoras estaba muy lejos de los perfeccionamientos actuales.


Empleaban bulbos de vacío como componentes básicos de sus circuitos internos. Las maquinas
eran muy voluminosas (en realidad, gigantescas), consumían mucha energía y producían tanto
calor que fue preciso establecer rígidos requisitos en cuanto al aire acondicionado para proteger
las piezas de la computadora y mantenerla funcionando.

A partir de la UNIVAC I, el proceso en las computadoras ha sido consecuencia de la


miniaturización en su electrónica; el primer paso fue dado al utilizar el circuito impreso que
simplifico el alambrado de los circuitos electrónicos y disminuyó su costo notablemente. El
empleo del transistor (Figura siguiente), que sustituye al bulbo en 1958, origina la “segunda
generación” de computadoras con una reducción aproximada de volumen de 100 a 1, y un
aumento tal en la relación capacidad/precio, que permitió su introducción en la industria y el
comercio.

La primera de este tipo (una IBM 7070, figura siguiente) se instalo en México en 1960 al
servicio del Instituto Mexicano del Seguro Social. En esta época surge una nueva aplicación de
las computadoras: el control automático de procesos industriales que se consigue con la adición
de sensores y actuadores junto con programas adecuados: la Texaco empleó por primera vez este
sistema en 1959 y diez años después lo uso la NASA para su primer alunizaje tripulado, en
México, la paraestatal Petróleos Mexicanos ya contaba con este tipo de sistemas en la década de
1970.

I. Introducción a la Programación de Computadoras


9
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

TERCERA GENERACION DE COMPUTADORAS

En 1964, aparecieron en el mercado las primeras computadoras de la tercera generación. El


carácter distintivo de las maquinas de la tercera generación es el empleo de microcircuitos
lógicos de estado solido, para obtener los cuales se miniaturizaron los conductores, resistores,
diodos y transistores, combinándolos en placas cuadradas de cerámica de un centímetro
cuadrado. Actualmente se emplean obleas, de menor tamaño, llamadas “circuitos integrados
monolíticos” de material semiconductor, materiales dieléctricos y foto-resistivos, tugsteno,
silicones y nitratos, empleando métodos de implantación iónica, de esta forma se imprimen o
graban complejos circuitos electrónicos empleando maquinaria de alta precisión y control de
ambiente al límite (figura siguiente). De esta manera se ha reducido el volumen de las
computadoras y su velocidad de procesamiento se ha incrementado considerablemente.

Una característica distintiva en esta etapa de desarrollo es que muchos fabricantes de


computadoras de la tercera generación producen series de computadoras similares y compatibles:
IBM denomina a sus computadoras “Sistema/360” (Figura anterior), Xerox Data Systems (XDS,
figura siguiente) produce la familia “Sigma” y National Cash Register (NCR) fabrica la serie
“Century” de computadoras, etc.

I. Introducción a la Programación de Computadoras


10
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Los programas preparados para una computadora de una serie dada eran igualmente admitidos
por los modelos más avanzados de la misma serie. Esta cualidad era exclusiva de la tercera
generación. La mayoría de los sistemas de la tercera generación fueron diseñados para el
procesamiento de datos tanto científicos como comerciales con igual facilidad. La aparición de
las computadoras de la tercera generación popularizo el uso de la palabra nanosegundo. Un
nanosegundo es la milmillonésima parte (10 -9) del segundo. Algunas velocidades de proceso
(por ejemplo el tiempo de conmutación y la duración de un ciclo) inicialmente se expresaban en
esta unidad. En la actualidad hay docenas de fabricantes de computadoras de alta velocidad
cuyas velocidades de procesamiento se indican en Giga hertz (mil millones de veces por
segundo).

CUARTA Y QUINTA GENERACIONES DE COMPUTADORAS

Dentro de la literatura se puede encontrar una clasificación aun no homogenizada respecto a las
generaciones posteriores a la tercera generación, algunas de ellas se mencionan a continuación:

El uso de lo que se conoce como computación suave que comprende las técnicas conocidas como
inteligencia artificial para la programación de computadoras ha dado pie a considerar dicho
evento como iniciador de la cuarta generación de computadoras.

Algunos consideran el uso de unidades de procesamiento múltiple, una característica distintiva


que le permite clasificar como quinta generación de computadoras (Corel Duo, Triple Core, etc),
y día con día podemos enterarnos de una mejora en características de funcionamiento o mejora
en la implementación de software (programas cuyo propósito es administrar los recursos de la
computadora).

Durante las décadas de 1980 y 1990, Microsoft Corporation se convirtió en la compañía


dominante de software. En 1981 sacó al mercado la primera versión del sistema operativo DOS
para la computadora personal IBM. En 1981 sacó al mercado la primera versión del sistema
operativo DOS para la computadora personal IBM. A mediados de la década de 1980, desarrolló
el Sistema Operativo Windows, una interfaz gráfica de usuario creada para ejecutarse sobre el
DOS. En 1990, Microsoft liberó el sistema Windows 3.0, esta nueva versión contaba con una
interfaz amigable para el usuario y una funcionalidad robusta. El sistema operativo Windows se
hizo increíblemente popular después de la liberación, en 1992, de Windows 3.1, cuyos sucesores
(Windows 95 y Windows 98) prácticamente monopolizaron el mercado de los sistemas
operativos de oficina a finales de la década de 1990. Estos sistemas operativos, que tomaron
muchos conceptos (como los iconos, los menús y las ventanas) popularizados por los primeros
sistemas operativos Apple Macintosh, permitían a los usuarios navegar por varias aplicaciones al
mismo tiempo. En 1993, Microsoft entró al mercado de los sistemas operativos corporativos con
la presentación de Windows NT. Windows XP está basado en el sistema operativo Windows NT
y se presento en el 2001. Este sistema operativo combina las líneas de sistemas operativos
corporativos y para el consumidor de Microsoft. Las versiones Windows Vista y Windows 7
simplifican la implementación de aplicaciones vía internet (acceso a la World Wide Web) y
redes de computadoras. Hasta ahora, Windows es el sistema operativo más utilizado en el
mundo.

I. Introducción a la Programación de Computadoras


11
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

El mayor competidor del sistema operativo Windows es Linux. Este nombre se deriva de Linus
(por Linus Torvalds, quien desarrolló Linux) y UNIX (el sistema operativo en el cual está basado
Linux); este último se desarrolló en los laboratorios Bell y está escrito en el lenguaje de
programación C. Linux es un sistema operativo gratuito, de código fuente abierto. A diferencia
de Windows, que es propietario (Microsoft posee los derechos de propiedad y el control); el
código fuente de Linux está disponible sin costo para los usuarios, y pueden modificarlo para
ajustarlo a sus necesidades.

I. Introducción a la Programación de Computadoras


12
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

CONCEPTOS BASICOS

A continuación se da la descripción de algunos conceptos a emplear durante el curso.

Datos: Insumos o resultados de un fenómeno, es decir, magnitudes, cifras o relaciones por


introducir o derivar de la operación de un sistema. Estos pueden también ser no numéricos
(nombres, colores, hechos, premisas, etc.). Los datos son susceptibles de observación directa, o
componentes elementales indivisibles de información, no son útiles o significativos como tales,
sino hasta que son procesados y convertidos a una forma útil.

Información: Conocimiento derivado del análisis de los datos. La información obtenida de un


proceso puede servir como dato para otro proceso.

Proceso de datos: Serie de acciones y operaciones lógicas y/o matemáticas sobre determinados
datos con el fin de llegar a una información deseada. Transformación de datos de entrada, a
través de un proceso, a fin de obtener un producto (información) que puede ser útil sin
transformaciones ulteriores.

Sistema de información: Procedimientos y dispositivos utilizados en el procesamiento de datos


(maquina, papel, lápiz, computadora, etc.).

Recolección de datos-fuente: Adquisición de datos iníciales que más adelante, evaluados y


analizados por el sistema de información, arroja información para la toma de decisiones. Se
determinan los datos a ser recolectados y los mecanismos que habrán de hacerlo.

Conversión de datos: Cambio de código original en que están los datos, a un código acorde con
los medios de proceso y almacenamiento del sistema.

Transmisión de datos: Proceso de mover datos desde una localidad a otra, físicamente.

Almacenamiento de datos: Se refiere a la manera en que es almacenada la información.

Computadora: Maquina electrónica que ejecuta operaciones básicas sobre representaciones


simbólicas de números y otras cantidades, bajo el control de un conjunto de reglas interpretables
por la maquina.

Internet: Red global de computadoras, se inicio hace casi cuatro décadas, con fondos
suministrados por el Departamento de Defensa de los Estados unidos. Aunque originalmente se
diseño para conectarse con los principales sistems computacionales de aproximadamente una
docena de universidades y organizaciones de investigación, actualmente se emplea como un
medio de comunicación fácil y rápido a través de lo que se conoce como correo electrónico (e-
mail).

World Wide Web: Permite a los usuarios de computadora localizar y ver, a través de Internet,
documentos basados en multimedia, sobre cualquier tema. A pesar de que Internet se desarrolló

I. Introducción a la Programación de Computadoras


13
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

hace varias décadas, la introducción de la Web es un evento relativamente reciente. En 1989,


Tim Berners-Lee de CERN ( la organización Europea de Investigación Nuclear) comenzó a
desarrollar una tecnología para compartir información a través de documentos de texto con
hipervínculos. Berners-Lee llamó a su invención el Lenguaje de Marcado de Hipertexto
(HTML). También escribió protocolos de comunicación para formar las bases de su nuevo
sistema de información, al cual denomino World Wide Web.

HTTP: Protocolo de Transferencia de Hipertexto, es una tecnología o protocolo de


comunicación clave en la Web, la mayoría de los sistemas de cómputo lo soportan.

Sistema de cómputo: Le llamamos sistema de cómputo a la configuración completa de una


computadora, incluyendo las unidades periféricas y la programación de sistemas que la hacen un
aparato útil y funcional para un fin determinado.

Computadora digital: Realiza operaciones representando la información (generalmente un


número) almacenada o manipulada en unidades discretas. Tratan directamente con símbolos, los
cuales pueden representar cualquier cantidad deseada, ya que tantos dispositivos como se desee
pueden representar el numero. Funcionan secuencialmente, es decir, instrucción por instrucción.

Procesador Central: Esta parte es conocida también como unidad central de procesamiento o
CPU. Formada a su vez por la unidad de control y la unidad aritmética y lógica.

El procesador cuenta con una serie de celdas de memoria que se utilizan con mucha frecuencia y
que, por ende, forman parte de la CPU. Estas celdas son conocidas con el nombre de registros.
Un procesador puede tener una docena o dos de estos registros. Los registros son conjuntos de 8,
16, 32 y/o 64 flip-flops (basculadores o bi-estables).

Un flip-flop es un dispositivo capaz de almacenar dos niveles de voltaje, uno bajo, regularmente
de 0.5 volts y otro alto comúnmente de 5 volts. El nivel bajo de energía en el flip-flop se
interpreta como apagado o 0, y el nivel alto como prendido o 1. A estos estados se les conoce
usualmente como bits, que son la unidad más pequeña de información en una computadora. A un
grupo de 16 bits se le conoce como palabra, una palabra puede ser dividida en grupos de 8 bits
llamados bytes, y a los grupos de 4 bits se les llama nibbles. Las computadoras personales
pueden clasificarse por lo que se conoce como tamaño de palabra, esto es, la cantidad de bits
que el procesador puede manejar a la vez.

Las funciones de la unidad de control consisten en leer y escribir contenidos de las celdas de
memoria, llevar y traer datos entre celdas de memoria y registros especiales y decodificar y
ejecutar las instrucciones de un programa.

La unidad aritmética y lógica de la CPU realiza las operaciones relacionadas con los cálculos
numéricos y simbólicos. Típicamente estas unidades sólo tienen capacidad de efectuar
operaciones muy elementales como: suma y resta de dos números de punto fijo, multiplicación y
división de punto fijo, manipulación de bits de los registros y comparación del contenido de dos
registros.

I. Introducción a la Programación de Computadoras


14
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Memoria Central: Es un conjunto de celdas (actualmente fabricadas con semiconductores)


usadas para procesos generales, tales como la ejecución de programas y el almacenamiento de
información para las operaciones. Cada una de las celdas puede contener un valor numérico y
tienen la propiedad de que se pueden distinguir una de otra por medio de un número único o
dirección para cada celda.

El nombre genérico de estas memorias es Random Access Memory (Memoria de acceso


aleatorio) o RAM por sus siglas en inglés. La principal desventaja de este tipo de memoria es que
los circuitos integrados pierden la información que tienen almacenada cuando se interrumpe la
alimentación eléctrica.

Esto lleva a la creación de memorias cuya información no se pierda cuando se apaga el sistema.
Estas memorias reciben el nombre de Read Only Memory (Memoria de solo lectura) o ROM.

Unidades de Entrada y Salida: Para que una computadora sea útil es necesario que el
procesador se comunique al exterior por medio de interfaces que permiten la entrada y la salida
de datos del procesador y la memoria. Haciendo uso de estas comunicaciones es posible
introducir datos para su procesamiento y la posterior visualización de los datos ya procesados.
Algunas de las unidades de entrada mas comunes son teclados, escáner, cámaras, mouse, etc. Las
unidades de salida más comunes son las terminales de vídeo y las impresoras.

Unidades de Memoria Auxiliar: Como la memoria central de una computadora es costosa y,


considerando las aplicaciones actuales, muy limitada, surge entonces la necesidad de crear
sistemas de almacenamiento de información prácticos y económicos. Además, la memoria
central pierde su contenido al apagarse la máquina, por lo que no es conveniente utilizarla para
almacenamiento permanente de datos.

Estos y otros inconvenientes dan lugar a la creación de unidades periféricas de memoria que
reciben el nombre de memoria auxiliar o secundaria. De estas unidades periféricas las más
comunes son las cintas y los discos magnéticos. La información almacenada en estos medios
magnéticos recibe el nombre de archivo. Un archivo está formado por un número variable de
registros, generalmente de tamaño fijo; los registros pueden contener datos o programas.

Programa: Es una secuencia precisa de pasos para resolver un problema particular. Conjunto de
actividades a ser ejecutadas en un determinado orden (planeado, organizado, poniendo atención a
pequeños detalles y sin ambigüedades).

Software: En términos de computación es todo aquel proceso o programa que utiliza los recursos
de la computadora para lograr el objetivo trazado por su diseñador o programador.

Sistema operativo: Es el programa encargado de administrar los recursos y programas de una


computadora, tal como memoria, CPU, espacio de disco y dispositivos periféricos. El sistema
operativo es el fundamento sobre el cual las aplicaciones (tales como procesadores de texto,
emuladores, etc.) son construidas. Es una colección de rutinas y comandos interpretables por la
computadora.

I. Introducción a la Programación de Computadoras


15
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Lenguaje de programación de alto nivel: Lenguaje de programación como C, que es diseñado


para ser leído y escrito de manera fácil por los humanos.

Lenguaje de programación de bajo nivel: Lenguaje de programación diseñado para ser


ejecutado fácilmente por la computadora. También conocido como “Lenguaje Maquina” ó
“Lenguaje Ensamblador”.

Portabilidad: Propiedad de un programa para poder ejecutarse en distintos equipos o


computadoras.

Compilar: Traducir un programa desarrollado en un lenguaje de alto nivel a uno de bajo nivel,
con el fin de ser ejecutado posteriormente.

Código fuente: Programa en un lenguaje de alto nivel antes de ser compilado.

Archivo ejecutable: El producto de la compilación, después de haber sido traducido el programa,


también conocido como código Objeto.

Ejecutar un programa: Proceso en el que la computadora interpreta y lleva a cabo las


instrucciones contenidas en un archivo ejecutable.

Algoritmo: Proceso descrito en forma general para resolver una categoría de problemas.

Error de sintaxis: Error en un programa que le hace imposible ser compilado, debido a la
presencia de errores ortográficos en la redacción del programa, o estructuras de programa
incorrectas.

Error en tiempo real: Error en un programa que le hace fallar al momento de ejecutarse.

Error Lógico: Error en un programa por el que hace algo distinto a lo deseado por el
programador.

Depurar: El proceso de encontrar y remover cualquiera de los tres tipos de errores.

CARACTERISTICAS DE UNA COMPUTADORA

Capacidad de operar a altas velocidades

Computo de resultados exactos

Capacidad de almacenamiento de información alto

Capacidad de procesar datos y/o información

Capacidad de ejecutar secuencias de operaciones complejas sin intervención humana

I. Introducción a la Programación de Computadoras


16
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

ARQUITECTURA DE LA COMPUTADORA
Esta sección tiene como finalidad hacer una breve reseña de las partes principales de una
computadora y los principios bajo los cuales funcionan, culminando con un ejemplo de
conversión de cantidades entre los distintos sistemas de numeración empleados en programación.

Las partes principales de una computadora (figura en página siguiente) y la función de cada una
de dichas partes se describe a continuación:

La Unidad de control (UC) tiene tres funciones básicas:


Leer e interpretar instrucciones del programa. Dirigir la operación de los componentes internos
del procesador. Controlar el flujo de programas y datos hacia y desde la RAM.

Un programa se debe cargar primero a la RAM antes de que se pueda ejecutar. Durante la
ejecución, la primera de una secuencia de instrucciones del programa se transfiere de la RAM a
la UC, donde el decodificador, la decodifica e interpreta.

La Unidad Aritmética Lógica, realiza todos los cálculos (+,-,*,/) y todas las operaciones lógicas
(comparaciones).

El Almacenamiento Primario, es el espacio donde se guarda el programa que va a ejecutar la


computadora y los datos que va a procesar el programa, o sea de forma temporal en la memoria
RAM.

El Almacenamiento Secundario, tiene capacidad limitada, es menos costoso y se guardan los


programas de forma permanente, algunos de estos son: unidades de disco magnético, unidades de
cinta magnética, disco de láser óptico.

Los Dispositivos de entrada, proporcionan los medios por los cuales los datos son transmitidos a
la computadora. Ejemplos: tarjetas perforadas, escaners, cámaras o teclados.

Los Dispositivos de Salida, los dispositivos de salida permiten mostrar los datos. Ejemplo:
impresoras, pantallas.

Un Programa, es una serie de instrucciones que orientan al CPU en el desarrollo de los cálculos.

El Program Counter (PC), está en la unidad de control e indica en qué celda va la memoria.

El Acumulador (AC), está en la unidad lógica aritmética y almacena resultados parciales.

I. Introducción a la Programación de Computadoras


17
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

CPU

Unidad de Control
PC

Unidad Aritmética
Lógica AC

Dispositivo Dispositivo de
de entrada Leer Almacenamiento Salida
Primario Escribir

Almacenamiento
Secundario

Líneas de transmisión de datos


Líneas de comunicación

SISTEMAS DE NUMERACIÓN Y LAS COMPUTADORAS.

Las primeras computadoras se diseñaban basándose en el sistema de numeración decimal. Este


planteamiento hizo que el desarrollo de las capacidades lógicas de la computadora fuera
innecesariamente complicado y no utilizaba los recursos con eficiencia. Por ejemplo, se
necesitaban 10 bulbos al vacío para representar un dígito decimal.

En la actualidad un programa especial traduce el sistema decimal al binario en la entrada y el


sistema binario al decimal en la salida. En condiciones normales, un programador sólo verá
entradas y salidas decimales. Sin embargo, en su momento, éste deberá manejar largas y
confusas sucesiones de 1 y 0 en forma de un volcado de memoria, que esto es como una
fotografía instantánea del contenido del almacenamiento primario (bits apagados y bits
encendidos) en un momento determinado.

I. Introducción a la Programación de Computadoras


18
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Para reducir, por lo menos en parte, la confusión de ver sólo 1 y 0 en la salida, el sistema de
numeración Hexadecimal (de base 16) se usa como una simbología para presentar el contenido
binario tanto del almacenamiento primario como el almacenamiento secundario, pero no
confundir, por que las computadoras no operan ni trabajan con el sistema Hexadecimal, ejemplo:

38C070 29306294 4580623F D20DD0AA 62A29640 8CECCC04 88F00010 800000004

38C0A0 D06E0610 12114770 6202D203 D09F629D 4120D121 45B06236 5820D120

38C0D0 1A2C44E0 60701A1E 41818001 44F06076 9640D112 455062DA 94BFD112

38C100 FF0098E0 D08012EE 47806310 D27CF000 48A0D06A 48A D06C

Esto es un volcado de memoria Hexadecimal. Cada uno de los renglones es una representación
Hexadecimal del contenido del almacenamiento primario.

La primera columna de números a partir de la izquierda consiste en direcciones del


almacenamiento. Cada par de dígitos hexadecimales representa los ocho bits de un byte. La
dirección del primer byte (29) del volcado de memoria es 0038C070 en el sistema Hexadecimal
(ó 00000000001110001100000001110000 en el sistema binario). Se puede apreciar cuánto
espacio se ahorra presentando volcados de memoria en el sistema Hexadecimal en vez de
presentarlas en el sistema binario.

CÓDIGO DE ALMACENAMIENTO DE CARACTERES EN MEMORIA.

ASCII: Generalmente se pronuncia "aski", es un acrónimo de American Standard Code for


Information Interchange. Este código asigna a las letras del alfabeto, a los dígitos decimales del 0
al 9 y a varios símbolos adicionales un número binario de 7 bits (poniéndose el bit 8 en su estado
de apagado o 0). De esta forma cada letra, dígito o carácter especial ocupa un byte en la memoria
de la computadora.

Este método de representación de datos es muy ineficiente en el aspecto numérico, ya que en


formato binario nos basta un solo byte para representar números de 0 a 255, en cambio con el
código ASCII un byte puede representar únicamente un dígito. Debido a esta ineficiencia, el
código ASCII es principalmente utilizado en la memoria para representar texto.

I. Introducción a la Programación de Computadoras


19
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

EBCDIC: Código de intercambio decimal a código binario extendido.

Código ASCII EBCDIC


0 0 0000 0000
1 1 0000 0001
2 10 0000 0010
3 11 0000 0011
4 100 0000 0100
5 101 0000 0101
6 110 0000 0110
7 111 0000 0111
8 1000 0000 1000
9 1001 0000 1001

Decimal empaquetado

0000 0101 0000 1000

01011000

SISTEMAS DE NUMERACIÓN O DE UNIDADES.

Sistema Base Dígitos No.de Dígito


Dígitos Mayor
Decimal 10 0,1,2,3,4,5,6,7,8,9 10 9

Binario 2 0,1 2 1

Octal 8 0,1,2,3,4,5,6,7 8 7

Hexadecimal 16 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 16 F

I. Introducción a la Programación de Computadoras


20
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

TABLA DE EQUIVALENCIAS DE LOS SISTEMAS DE NUMERACIÓN.

Decimal Binario Octal Hexadecimal


0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10

CONVERSIONES ENTRE SISTEMAS DE UNIDADES:

Binario a Decimal

El sistema binario está basado en únicamente dos condiciones o estados, ya sea encendido (1) o
apagado (0), por lo tanto su base es dos.

Para la conversión podemos utilizar la formula de valor posicional:


Por ejemplo, si tenemos el número binario 10011, tomamos de derecha a izquierda cada dígito,
lo multiplicamos por la base elevada a la posición que ocupa cada dígito, y por último se suman
las cantidades obtenidas:

Binario: 1 1 0 0 1

Decimal: 1*2^0 +1*2^1 +0*2^2 +0*2^3 +1*2^4


= 1 + 2 + 0 + 0 + 16 = 19 decimal.

El carácter ^ es utilizado en computación como símbolo de potenciación y el carácter * se usa


para representar la multiplicación.

I. Introducción a la Programación de Computadoras


21
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Decimal a Binario

Existen varios métodos de conversión de números decimales a binarios; aquí solo se analizará
uno. El método que se explicará utiliza la división sucesiva entre dos, considerando la parte
entera del cociente, guardando el residuo como dígito binario y el resultado como la siguiente
cantidad a dividir. Tomemos como ejemplo el número 43 decimal.

43/2 = 21 y su residuo es 1
21/2 = 10 y su residuo es 1
10/2 = 5 y su residuo es 0
5/2 = 2 y su residuo es 1
2/2 = 1 y su residuo es 0
1/2 = 0 y su residuo es 1

Armando el número de abajo hacia arriba tenemos que el resultado en binario es 101011

Hexadecimal a Binario

En la base hexadecimal tenemos 16 dígitos que van del 0 al 9 y de la letra A hasta la F (estas
letras representan los números del 10 al 15). Por lo tanto, contamos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,
B, C, D, E y F.

La conversión entre numeración binaria y hexadecimal es sencilla. Lo primero que se hace para
una conversión de un número binario a hexadecimal es dividirlo en grupos de 4 bits, empezando
de derecha a izquierda. En caso de que el último grupo (el que quede mas a la izquierda) sea
menor de 4 bits se rellenan los faltantes con ceros. Tomando como ejemplo el número binario
101011 lo dividimos en grupos de 4 bits y nos queda:

10; 1011

Rellenando con ceros el último grupo (el de la izquierda):

0010; 1011

Después tomamos cada grupo como un número independiente y consideramos su valor en


decimal:

0010 = 2; 1011 = 11

Pero como no podemos representar este número hexadecimal como 211 porque sería un error,
tenemos que sustituir todos los valores mayores a 9 por su respectiva representación en
hexadecimal, con lo que obtenemos: 2BH (Donde la H representa la base hexadecimal)

Para convertir un número de hexadecimal a binario solo es necesario invertir estos pasos: se
toma el primer dígito hexadecimal y se convierte a binario, y luego el segundo, y así
sucesivamente hasta completar el número.

I. Introducción a la Programación de Computadoras


22
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Unidad de capacidad ó unidad de medida de la memoria = 1 byte = 8 bits

- Bit: digito binario,(estado electrónico de encendido y apagado)

- Byte: es una combinación de 8 bits, por lo cual existen 256 combinaciones de estos en un
byte ejemplos de combinaciones

1 byte = 1 bit 1 byte = 2 bits 1 byte = 3 bits

0→ A 00 → A 000 → A
1→ B 01 → B 001 → B
10 → C 010 → C
11 → D 100 → D
011 → E
101 → F
110 → G
111→H

I. Introducción a la Programación de Computadoras


23
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

II. PROCESO PARA LA SOLUCION DE PROBLEMAS CON UNA COMPUTADORA

¿Qué clase de problemas puede resolver una computadora?

Las computadoras hacen lo que se les indica que hagan y no necesariamente lo que el usuario
quiere que haga. En la programación clásica, no debe haber ambigüedad en las instrucciones que
se le proporcionen a la computadora en los programas, ni posibilidad de otras interpretaciones.
La computadora siempre genera una respuesta durante su actividad o trabajo, por lo que debe
tenerse cuidado de que exista una sola alternativa, de modo que el resultado que se obtenga sea
efectivamente el que se desea.

Un problema se puede resolver en una computadora si éste se puede escribir como una secuencia
finita de operaciones explícitas. Se debe considerar la factibilidad económica. El uso de una
computadora se hace particularmente útil en aplicaciones que involucran una serie de
operaciones que calculan resultados de manera repetitiva (calculo de nominas, evaluación de
solución a ecuaciones).

La mayor parte de los problemas interesantes parecen ser muy complejos desde el punto de vista
de la programación. Para algunos problemas (como los que emplean matemáticas complejas para
su evaluación), la complejidad puede ser inherente al problema mismo; sin embargo, en muchos
casos la dificultad radica en otros factores que pueden estar bajo el control del programador: por
ejemplo, la especificación incompleta o poco clara del problema. La complejidad no siempre es
un problema si se la sabe controlar. La programación de computadoras es una actividad compleja
que combina muchos procesos mentales. Sin embargo, el trabajo del programador puede hacerse
más manejable al dividirlo sistemáticamente en gran cantidad de trabajos más sencillos (mientras
mas simple mas entendible).

En la resolución de problemas mediante una computadora es importante una buena


especificación de todo problema a ser resuelto. Es recomendable apoyarse de una herramienta
grafica tal como diagramas de bloques y de flujo. Es común considerar dos etapas durante el
proceso de solución; la fase de diseño del problema de la que se denomina fase de construcción,
tal como se muestra en el siguiente esquema.

Fase de Diseño
PROBLEMA

Fase Ardua ALGORITMO

Fase de
Construcción
SOLUCIÓN VÍA
COMPUTADORA

Sugerencias, e-mail: soterios77@hotmail.com cefrausto@itesi.edu.mx


24
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

En la fase de diseño se concentra la atención en el diseño de un algoritmo (capitulo IV) que


resuelva el problema propuesto. Dado un algoritmo lo suficientemente preciso, la traducción a
un lenguaje de programación (etapa de construcción) es relativamente sencilla.

Un algoritmo puede entenderse como una secuencia ordenada de pasos exenta de ambigüedades,
que lleva a la solución de un tipo general de problemas. Se usa la palabra algoritmo en homenaje
al matemático Uzbeo Al-Kuaritzmi que en el siglo IX (año 880) escribió un libro en el cual, por
primera vez en la historia, se expresaban los métodos precisos para efectuar las cuatro
operaciones aritméticas más comunes: suma, resta, multiplicación y división. Las reglas que
explico Al-Kuaritzmi son aún hoy en día las que se usan en la enseñanza primaria.

Algoritmo no es pues un método de resolución de un problema particular con unos datos


particulares, sino el método de resolución de todos los problemas de un mismo tipo, sean cuales
sean los datos de que se parte.

PROCESO DE SOLUCION

En el proceso de solución de problemas mediante una computadora se requieren los pasos


siguientes:

Especificación del problema

Con esto se indica que se debe identificar perfectamente el problema y sus limitaciones, las
variables que intervienen y los resultados deseados. En otras palabras, éste paso demanda
claramente un conocimiento completo del problema y por lo general la computadora puede hacer
muy poco para ayudarnos con esta etapa.

Análisis del problema

Es la formulación de la solución del problema, denominada también algoritmo, de manera que se


tenga una serie de pasos aritméticos que resuelvan el problema y la capacidad de expresar la
solución en términos de operaciones aritméticas adecuadas a la computadora.

Programación

Este paso consiste en traducir el método de análisis o algoritmo de solución, expresándolo como
una serie detallada de operaciones. La programación se considera dividida en dos partes: en la
primera, la sucesión de operaciones se presenta en forma gráfica en un diagrama de bloques o
diagrama de flujo, que permite dar una idea grafica precisa de lo que se desea hacer, y en la
segunda parte, que se denomina codificación, el diagrama anterior se traduce a un lenguaje de
programación accesible a la máquina.

II. Proceso para la Solución de Problemas con una Computadora


25
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Validación ó Depuración

Es la prueba exhaustiva del programa para eliminar todos los errores que tenga, de manera que se
efectúe lo que se desea. Los resultados de prueba se comparan con soluciones conocidas de
problemas ya resueltos.

Documentación
Consiste en preparar un instructivo del programa, de manera que cualquier otra persona pueda
conocer y utilizar el programa. Un programa documentado permite posteriormente su revisión
con el objeto de efectuarle mejoras o cambios al mismo, ya sea por la persona que desarrollo el
programa o por otra persona.

Ejecución

Es la última etapa en la que sólo se proporcionan datos de entrada del programa, obteniéndose
las soluciones correspondientes. En general, se pueden introducir varios grupos de datos
referentes a distintas condiciones del problema problemas, produciéndose las respuestas
correspondientes, sin que sea necesaria la intervención del operador entre los distintos grupos de
datos.

Interpretación

Los resultados desplegados por la computadora no siempre constituyen una respuesta final al
problema. El usuario de la computadora debe interpretar los resultados para ver lo que significan
en términos de las combinaciones de metas, del sistema propuesto. A menudo es necesario
repetir algunos o todos los pasos anteriores para que el problema quede realmente resuelto.

PROBLEMAS YA RESUELTOS MEDIANTE EL USO DE LAS COMPUTADORAS

Aplicaciones Administrativas: pago de nomina, inventarios, estadísticas, etc.

Aplicaciones Científicas y Tecnológicas: Control en lanzamiento de satélites, resolución de


problemas matemáticos, diseño y control de reactores nucleares, etc.

Aplicaciones Industriales: Control de maquinaria, control de plantas, supervisión remota, etc.

Aplicaciones varias: confección de diccionarios, desciframiento de códigos, edición de libros,


etc.

II. Proceso para la Solución de Problemas con una Computadora


26
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

III. TECNICAS PARA LA FORMULACION DE ALGORITMOS

Como se menciono anteriormente, un algoritmo es una sucesión de pasos realizados en forma


lógica, es decir exento de ambigüedades para realizar una tarea

Un algoritmo tiene que ser un reflejo del tipo de programación que se esté utilizando y es la base
para el desarrollo de una aplicación computacional, tal como se muestra en la siguiente figura.

Programa fuente
Programa
escrito en un
Programa
Objeto Programa
lenguaje de Programa
Compilador ó
(escrito en Ejecutable
programación. Enlazador
Programa
Lenguaje
(Código ASCII) (Linker)
Intérprete
de máquina)
(Código de
(traductor)
texto)

Sugerencias, e-mail: soterios77@hotmail.com cefrausto@itesi.edu.mx


27
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Para el desarrollo de un algoritmo (fase de diseño) se emplean tres actividades:

Fase de Diseño Fase de construcción

Análisis del problema Codificación del Algoritmo;


Construcción del Programa

Diseño del Algoritmo Ejecución del Programa

Validación del Programa

Validación del
Algoritmo
Aplicación del Programa

El Análisis del Problema consta de los siguientes pasos

Análisis del Programa

Descripción del Datos de Entrada Datos de Salida


Problema (Resultados)

Nota:

Todos los pasos a seguir en la Fase de Diseño, están realizados por una persona física, o sea, el
programador.

En la fase de construcción, el primer paso de arriba hacia abajo esta hecho por una persona
física, el segundo paso, por la computadora y el tercero y cuarto paso, esta hecho tanto por el
programador como por al computadora.

III. Técnicas para la Formulación de Algoritmos


ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Símbolos para los diagramas de flujo o Algoritmos

BLOQUE FUNCIÓN DESCRIPCIÓN DISPOSITIVOS QUE


INTERVIENEN
Declaración de Reserva las celdas de Almacenamiento
Int a,b,c variables memoria que requieran primario
Float x,y cada uno de las variables
indicadas
Lectura de Datos Transferir el valor desde Dispositivo de entrada
dato el dispositivo de entrada Y almacenamiento
(teclado) a la celda de primario
memoria asignada a la
variable A.

Escritura de datos Transferir el valor Dispositivo de salida y


Datos almacenado en la celda almacenamiento
de memoria asignada a la primario
variable A al dispositivo
standard de salida
(pantalla).
Procesamiento Ejecuta las operaciones Almacenamiento
(instrucción aritméticas que se hayan primario y unidad lógica
A=C+B
aritmética, sentencia a la derecha del signo Aritmética
de asignación, igual y el resultado
cálculo) almacénalo en la celda
de memoria asignada a la
variable que se haya a la
izquierda del signo igual.

Inicio del programa,


así como el fin del
Inicio, Fin
programa

Flujo de la
información. Orden
en que se realizan las
funciones.

III. Técnicas para la Formulación de Algoritmos


ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Como:
- Recetas
- Descripción narrada - Manuales
- Instrucciones
TÉCNICAS PARA
LA FORMULACIÓN - Pseudocódigo
DE ALGORITMOS
- Diagrama de flujo

Diagramas de bloque y de flujo

Considerese una actividad diaria como la de ir al trabajo, algunas de las operaciones


involucradas tales como bañarse, vestirse, manejar, etc. Pueden representarse a su vez en
diagramas detallados, lo que hace ver la importancia de la especificación del problema que
define el desarrollo de estos diagramas.

Un diagrama de bloques, enuncia operaciones que pueden ser más detalladas. Por el contrario el
diagrama de flujo se define como la representación grafica que busca una traducción directa al
lenguaje de programación de la maquina.

El diagrama de bloque es útil en cuanto a la concepción global de un problema del cual puede
derivarse el diagrama de flujo, que permite la codificación de instrucciones que la computadora
puede ejecutar. Así pues, un diagrama de flujo es una representación gráfica de lo que se desea
que la computadora haga.

Puede decirse que cuando se desarrolla un diagrama de flujo se tiene más de la mitad realizada
en el proceso de solución.

Las frases usadas en los bloques de los diagramas de flujo no precisan de ninguna formalidad.
Cualesquier palabra que se use es buena, con tal que expresen claramente qué es lo que la
computadora debe hacer. Los siguientes ejemplos expresan la misma idea:

Asigna 2 a R
Haz R igual a 2
Inicializa R con valor 2
Por 2 en R
R=2
2→R

Una precaución importante al momento de desarrollar nuestro diagrama de flujo es el mostrar


caminos definidos para la detención del programa. Un programa sin considerar esta situación se
ciclara y ejecutara indefinidamente.

III. Técnicas para la Formulación de Algoritmos


ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Cuando se trabaja en el desarrollo de un diagrama de flujo, se esclarece nuestra idea acerca de


cómo resolver un problema. Cuando se trabaja por primera vez en una solución, se encuentra
cosas que distan mucho de ser obvias. Por esta razón, las primeras ideas de la solución de un
problema pueden ser por completo incorrectas, y cada vez se tendrá que empezar de nuevo el
diagrama.

Actividad
Como ejercicio de repaso obtenga el diagrama de flujo para resolver el siguiente problema:

Supongamos que se tienen tres artículos de venta: un refrigerador por $ 550, un televisor por
$375 y un aire acondicionado por $2500. Si se ha asignado una comisión del 15% para el primer
articulo, 12% para el segundo y 7.5% para el tercero, ¿Cómo podríamos calcular las comisiones
obtenidas por un vendedor usando una computadora?

III. Técnicas para la Formulación de Algoritmos


ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

IV. ESTUCTURAS ALGORITMICAS

ESTRUCTURAS PARA EL DISEÑO DE ALGORITMOS

1. Secuenciales (lineales).

2. Condicionales (toma de decisiones).

3. Repetitivas (cíclicas)

Estructuras secuenciales

Forma:

INICIO

Int, dato1,
dato2

dato1,dato2

Suma=dato1+dato2

suma

fin

Sugerencias, e-mail: soterios77@hotmail.com cefrausto@itesi.edu.mx


32
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

ESTRUCTURAS CONDICIONALES

Una Rama
- Simple
Dos Ramas

Estructuras - Anidadas
Condicionales
Simples
- Selección
Múltiple Anidadas

Estructuras Condicionales Simples

Condición Condición

V F V F

Sent 1 Sent 1 Sent 1

Sent 1 Sent 1

Condición

Operando1 Operador de relación Operando2

Tipo de Operando Operadores de Relación


• Constantes (8>3) >
• Variables (t>20) <
• Expresiones >=
Aritméticas (Q-3!=8) <=
==
!=

IV. Estructuras Algorítmicas.


33
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Estructuras condicionales anidadas

Cond1

Cond2 Sent1

Cond3 Cond4

Sent1 Sent1 Sent1 Sent1

Sent1

IV. Estructuras Algorítmicas.


34
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Estructuras Condicionales de Selección Múltiple

Las estructuras de selección múltiple están controladas por variables selectoras. Para que ejecute una
rama de la estructura de selección múltiple, el valor de la variable selectora debe ser exactamente igual
al valor de la etiqueta de esa rama. Si ningún valor de las etiquetas es igual al valor actual de la
variable selectora, se ejecutara la rama de falso. En la estructura de selección múltiple puede o no
usarse la rama de falso. Toda variable selectora puede ser únicamente del tipo entero o tipo carácter

inicio

Int,flota o char, variable selectora

Variable selectora

Variable selectora

Sent1 Sent2 Sent3 Sent4 Sent5 Sent6 Sent7 error

fin

La variable selectora es de tipo ordinal y puede ser:

• Dato tipo entero


• Dato tipo carácter

- Toda variable Centinela sirve para detectar si el flujo del procesamiento pasó por alguna
rama de una condición dada y para evaluar con ella si debe o no ejecutarse la rama de esa
condición.
- Toda variable Centinela debe ser de tipo entero y solamente puede tomar 2 valores, 0 y 1; a
esos valores se les conoce como “valores Centinelas”. Toda Centinela debe inicializarse ya
sea con 1 ó con 0.

- A la variable centinela también se le llama bandera.

IV. Estructuras Algorítmicas.


35
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

ESTRUCTURAS REPETITIVAS (CICLOS, BUCLES, RIZOS)

Existen 3 formatos de ciclos:

- While

- Do-while

- For

Estructura while.

INICIO
Inicialización de la variable
Variable de control que controla el ciclo (antes
del ciclo del ciclo)
Cont = 0
Límite

Cont < 3
Condición del control del
ciclo
C C
U D I
E EC “Hola” Fin
R L L
P O
Tarea a
O realizar en
Cont = cont + 1 el ciclo

Actualización o modificación
de la variable que controla el
ciclo.

IV. Estructuras Algorítmicas.


36
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Estructura do-while.

CARACTERÍSTICAS:

La condición va al final del cuerpo del ciclo.

Existe la posibilidad de que se ejecute al menos una vez el cuerpo del ciclo.

Inicio

Cont = 0

“Hola”

Cont = Cont +1

Cont < 3

Fin

IV. Estructuras Algorítmicas.


37
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Técnicas para el control de ciclos.

Tarea (valor límite) ciclo


Centinela

Se usa la técnica para el control de un ciclo por tarea cuando se sabe a priori el número de veces
que se va a ejecutar el ciclo.

Se usa una técnica para controlar el ciclo por centinela cuando desconozco desde antes el número
de veces que se ejecutará el ciclo.

Se usa una estructura while cuando existe una posibilidad dentro de la lógica del programa que la
tarea del ciclo no se ejecute alguna vez.

Condición compuesta.

Es la unión de dos o más condiciones a través de un operador lógico

Condición 1 [Operador lógico] Condición 2

Operador lógico Precedencia en la ejecución

No Not ! 1°
Y And && 2°
O Or || 3°

Tabla de verdad

Para los Valores de las Condiciones Compuestas

C1 C2 C1&&C2 C1| |C2 !C1 !C2

V V V V F F
V F F V F V
F V F V V F
F F F F V V

IV. Estructuras Algorítmicas.


38
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Ciclos anidados.

INICIO

n<1

Cont = 0

“Hola”

Cont = Cont + 1

cont < n

Resp

Resp!=’s’&&Resp!=’n’

Resp = = ‘s’

Fin

IV. Estructuras Algorítmicas.


39
ITESI CAMPUS PURÍSIMA DEL RINCÓN ENERO 2010

Estructura for.

CARACTERÍSTICA:

Sólo se usa cuando vamos a realizar ciclos por tarea.

Inicio

Cont=1 Fin

Cont<n

Cont= cont+1

Hola

IV. Estructuras Algorítmicas.


40

You might also like