You are on page 1of 0

Introduccin a las Computadoras

1.1 Los lenguajes de programacin



Para que un procesador realice un proceso se le debe suministrar en primer
lugar un algoritmo adecuado. El procesador debe ser capaz de interpretar el
algoritmo, lo que significa:

comprender las instrucciones de cada paso,
realizar las operaciones correspondientes.

Como el procesador es una computadora, el algoritmo se ha de expresar en un
formato que se denomina programa. Un programa se escribe en un lenguaje de
programacin y las operaciones que conducen a expresar en un algoritmo en
forma de programa se llaman programacin. As pues, los lenguajes utilizados
para escribir programas de computadoras son los lenguajes de programacin y
programadores son los escritores y diseadores de programas.

Los principales tipos de lenguajes utilizados en la actualidad son tres:

Lenguaje maquina,
Lenguaje de bajo nivel (ensamblador),
Lenguajes de alto nivel.

1.2 Instrucciones a la computadora

Los diferentes pasos (acciones) de un algoritmo se expresan en los programas
como instrucciones, sugerencias o proposiciones (normalmente el trmino
instruccin se suele referir a los lenguajes maquina y bajo nivel, reservando la
sentencia o proposicin para los lenguajes de alto nivel). Por consiguiente, un
programa consta de una secuencia de instrucciones, cada una de las cuales
especifica ciertas operaciones que debe ejecutar la computadora.

La elaboracin de un programa requerir conocer el juego o repertorio de
instrucciones del lenguaje.

Las instrucciones bsicas y comunes a casi todos los lenguajes de programacin
se pueden condensar en cuatro grupos:

Instrucciones de entrada/salida. Instrucciones de transferencia de
informacin y datos entre perifricos (teclado, impresora, unidad de disco,
etc.) y la memoria central.

Instrucciones aritmtico-lgicas. Instrucciones que ejecutan operaciones
aritmticas (suma, resta, multiplicacin, divisin, potenciacin), lgicas
(operaciones and, or, not, etc).

M.C. Braulio Jos Cruz Jimnez
3
Introduccin a las Computadoras
Instrucciones selectivas. Instrucciones que permiten la seleccin de
tareas alternativas en funcin de los resultados de diferentes expresiones
condicionales.

Instrucciones repetitivas. Instrucciones que permiten la repeticin de
secuencias de instrucciones un nmero determinado o indeterminado de
veces.


La arquitectura von Newman, se refiere a las arquitecturas de computadoras
que utilizan el mismo dispositivo de almacenamiento tanto para las instrucciones
como para los datos (a diferencia de la arquitectura Harvard). El trmino se
acu en el documento First Draft of a Report on the EDVAC (1945), escrito por
el conocido matemtico J ohn von Neumann, que propuso el concepto de
programa almacenado.



Figura. Arquitectura Von Newman

Lenguajes mquina

Los lenguajes mquina son aquellos que estn escritos en lenguajes
directamente inteligibles por la mquina (computadora), ya que sus instrucciones
son cadenas binarias (cadenas o series de caracteres dgitos- 0 y 1) que
especifican una operacin y las posiciones (direccin) de memoria implicadas en
la operacin se denominan instrucciones de mquina o cdigo mquina. El
cdigo mquina es el conocido cdigo binario.

Las instrucciones en lenguaje mquina dependen del hardware de la
computadora y, por tanto, diferirn de una computadora a otra. El lenguaje
mquina de una PC (computadora personral) ser diferente de un sistema HP
9000 (HP, Hewlett Packard) o un sistema 6000 IBM.

Las ventajas de programar en lenguaje mquina son la posibilidad de cargar
(transferir un programa a la memoria) sin necesidad de traduccin posterior lo
M.C. Braulio Jos Cruz Jimnez
4
Introduccin a las Computadoras
que supone una velocidad de ejecucin superior a cualquier otro lenguaje de
programacin.

Los inconvenientes en la actualidad superan a las ventajas, lo que hace
prcticamente no recomendables los lenguajes mquina. Estos inconvenientes
son:

Dificultad y lentitud en la codificacin.

Poca fiabilidad.

Dificultad grande de verificar y poner a punto los programas.

Los programas slo son ejecutables en el mismo procesador (CPU,
Unidad de Procesamiento Central).

Para evitar los lenguajes mquina, desde el punto de vista del usuario, se han
creado otros lenguajes que permiten escribir programas con instrucciones
similares al lenguaje humano. Estos lenguajes son los de alto nivel y bajo nivel.


Figura 1. Instrucciones en lenguaje mquina

Lenguajes de bajo nivel

Los lenguajes de bajo nivel son ms fciles de utilizar que los lenguajes
mquina, pero, al igual que ellos, dependen de la mquina en particular. El
lenguaje de bajo nivel por excelencia es el ensamblador (assembly language).
Las instrucciones en lenguaje ensamblador son conocidas como nemotcnicos
(mnemonics). Por ejemplo, nemotcnicos tpicos de operaciones aritmticas son:
en ingls, ADD, SUB, DIV.

Una instruccin tpica de suma sera:

ADD M, N, P

Esta instruccin podra significar: sumar el nmero contenido en la posicin de
memoria M al nmero almacenado en la posicin de memoria N y situar el
resultado en la posicin de memoria P. Evidentemente, es mucho ms sencillo
M.C. Braulio Jos Cruz Jimnez
5
Introduccin a las Computadoras
recordar la instruccin anterior con un nemotcnico que su equivalente en cdigo
mquina:

0110 1001 1010 1011

Un programa escrito en lenguaje ensamblador no puede ser ejecutado
directamente por la computadora, en esto se diferencia esencialmente del
lenguaje mquina, sino que requiere una fase de traduccin al lenguaje
mquina.

El programa original escrito en lenguaje ensamblador se denomina programa
fuente y el programa traducido en lenguaje mquina se conoce como programa
objeto, ya directamente inteligible por la computadora.

El traductor de programas fuente a objeto es un programa llamado ensamblador
(assembler), el cual convierte los programas de lenguaje ensamblador a
lenguaje mquina a la velocidad de las computadoras, existe en casi todas las
computadoras (Figura 2).

No se debe confundir aunque en espaol adoptan el mismo nombre el
programa ensamblador (assembler), encargado de efectuar la traduccin del
programa fuente escrito a lenguaje mquina, con el lenguaje ensamblador
(assembly language), lenguaje de programacin con una estructura y gramticas
definidas.



Figura 2. Programa ensamblador

Los lenguajes ensambladores presentan la ventaja frente a los lenguajes
mquina de su mayor facilidad de codificacin y, en general, su velocidad de
clculo.

Los inconvenientes ms notables de los lenguajes ensambladores son:

Dependencia total de la mquina, lo que impide la transportabilidad de los
programas (posibilidad de ejecutar un programa en diferentes mquinas).
El lenguaje ensamblador del PC es distinto del lenguaje ensamblador del
Apple Macintosh.

La formacin de los programadores es ms compleja que la
correspondiente a los programadores de alto nivel, ya que exige no slo
M.C. Braulio Jos Cruz Jimnez
6
Introduccin a las Computadoras
las tcnicas de programacin, sino tambin el conocimiento del interior de
la mquina.

Hoy da los lenguajes ensambladores tienen sus aplicaciones muy reducidas en
la programacin de aplicaciones y se centran en aplicaciones de tiempo real,
control de proceso y de dispositivos electrnicos etc.

Lenguajes de alto nivel

Los lenguajes de alto nivel son los ms utilizados por los programadores. Estn
diseados para que las personas escriban y entiendan los programas de un
modo mucho ms fcil que los lenguajes mquina y ensambladores. Otra razn
es que un programa escrito en un lenguaje de alto nivel es independiente de la
mquina; esto es, las instrucciones del programa de la computadora en
particular. En consecuencia, los programadores escritos en lenguajes de alto
nivel son portables o transportables, lo que significa la posibilidad de poder ser
ejecutados con poca o ninguna modificacin en diferentes tipos de
computadoras; al contrario que los programas en lenguaje mquina o
ensamblador, que slo se pueden ejecutar en un determinado tipo de
computadora.

Los lenguajes de alto nivel presentan las siguientes ventajas:

El tiempo de formacin de los programadores es relativamente corto
comparados con otros lenguajes.

La escritura de programas se basa en reglas sintcticas similares a los
lenguajes humanos.

Nombres de las instrucciones, tales como READ, WRITE, PRINT, OPEN,
etc.

Las modificaciones y puestas a punto de los programas son ms fciles.

Reduccin del costo de los programas.

Transportabilidad


Los inconvenientes se concretan en:

Incremento del tiempo de puesta a punto, al necesitarse diferentes
traducciones del programa fuente para conseguir el programa definitivo.

No se aprovechan los recursos internos de la mquina, que se explotan
mucho mejor en lenguajes mquina y ensambladores.
M.C. Braulio Jos Cruz Jimnez
7
Introduccin a las Computadoras

Aumento de la ocupacin de memoria.

El tiempo de ejecucin de los programas es mucho mayor.

Al igual que sucede con los lenguajes ensambladores, los programas fuente
tienen que ser traducidos por programas traductores, llamados en este caso
compiladores o intrpretes.

Los lenguajes de programacin de alto nivel existentes hoy son muy numerosos
aunque la prctica demuestra que su uso mayoritario se reduce a:

C, C++, COBOL, FORTRAN, BASIC, Pascal y Visual BASIC.

Estn muy extendidos: Clipper, Ada, Modula-2, Prolog, LISP y Smalltalk

y comienzan a difundirse: Visual Object, Delphi, Miranda y Eiffel

Aunque los dos primeros no dejan de ser entornos de programacin orientados a
objetos con soporte en los lenguajes Clipper y Turbo Pascal.

Traductores de lenguaje

Los traductores de lenguaje son programas que traducen a su vez los programas
fuente escritos en lenguajes de alto nivel a cdigo mquina.

Los traductores se dividen en:

Compiladores.
Intrpretes.

Intrpretes

Un intrprete es un traductor que toma un programa fuente, lo traduce y a
continuacin lo ejecuta.

Los programas intrpretes clsicos como BASIC, prcticamente ya no se
utilizan, aunque las versiones Qbasic y QuickBASIC se comercializan todava
con el Sistema Operativo DOS que corre en las computadoras personales. Sin
embargo, est muy extendida la versin interpretada del lenguaje Smalltalk, un
lenguaje orientado a objetos puro.

M.C. Braulio Jos Cruz Jimnez
8
Introduccin a las Computadoras

Figura 3. Intrprete
Compiladores

Un compilador es un programa que traduce los programas fuente escritos en
lenguajes de alto nivel como Pascal, FORTRAN, ... a lenguaje mquina.

Los programas escritos en lenguajes de alto nivel se llaman programas fuente y
el programa traducido programa objeto o cdigo objeto. El compilador traduce,
sentencia a sentencia, el programa fuente.

Los lenguajes compiladores tpicos son: C, C++, PASCAL, FORTRAN, COBOL.


Figura 4. La compilacin y sus fases

La compilacin es el proceso de traduccin de programas fuente a programas
objeto. El programa objeto obtenido de la compilacin ha sido traducido
normalmente a cdigo mquina.

M.C. Braulio Jos Cruz Jimnez
9
Introduccin a las Computadoras
Para conseguir el programa mquina real se debe utilizar un programa llamado
montador o enlazador (linker). El proceso de enlace conduce a un programa en
lenguaje mquina directamente ejecutable (Figura 4).

El proceso de ejecucin de un programa en C++, por ejemplo, tiene los
siguientes pasos:

1. Escritura del programa fuente con un editor (programa que permite a una
computadora actuar de modo similar a una mquina de escribir
electrnica) y guardarlo en un dispositivo de almacenamiento (por ejemplo
un disco).
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador C++
4. Verificar y corregir errores de compilacin (listado de errores).
5. Obtencin del programa objeto.
6. El enlazador obtiene el programa ejecutable.
7. Se ejecuta el programa y, si no existen errores, se tendr la salida del
programa.




El proceso de ejecucin sera el mostrado en las figuras 5 y 6.


Figura 5. Ejecucin de un programa

M.C. Braulio Jos Cruz Jimnez
10
Introduccin a las Computadoras

Figura 6. Fases de la ejecucin de un programa


1.3 Concepto de algoritmo

Un programador de computadora es antes que nada una persona que resuelve
problemas, por lo que para llegar a ser un programador eficaz se necesita
aprender a resolver problemas de un modo riguroso y sistemtico. Se estudiar
la metodologa necesaria para resolver problemas mediante programas, al
concepto se denomina metodologa de la programacin. El eje central de esta
metodologa es el concepto de algoritmo.

La resolucin de un problema exige el diseo de un algoritmo que resuelva el
problema propuesto.

M.C. Braulio Jos Cruz Jimnez
11
Introduccin a las Computadoras


Figura 7. Resolucin de un problema

Los pasos para la resolucin de un problema son:

1. Diseo del algoritmo que describe la secuencia ordenada de pasos sin
ambigedades que conducen a la solucin de un problema dado. (Anlisis
del problema y desarrollo del algoritmo).

2. Expresar el algoritmo como un programa en un lenguaje de programacin
adecuado. (Fase de codificacin).

3. Ejecucin y validacin del programa por la computadora.

Para llegar a la realizacin de un programa es necesario el diseo previo de un
algoritmo, de modo que sin algoritmo no puede existir un programa.

Los algoritmos son independientes tanto del lenguaje de programacin en que
se expresan como de la computadora que los ejecuta. En cada problema el
algoritmo se puede expresar en un lenguaje diferente de programacin y
ejecutarse en una computadora distinta; sin embargo, el algoritmo ser siempre
el mismo. As, por ejemplo, en una analoga con la vida diaria, una receta de un
plato de cocina se puede expresar en espaol, ingls o francs, pero cualquiera
que sea el lenguaje, los pasos para la elaboracin del plato se realizarn sin
importar el idioma del cocinero.

En la ciencia de la computacin y en la programacin, los algoritmos son ms
importantes que los lenguajes de programacin o las computadoras. Un lenguaje
de programacin es tan solo un medio para expresar un algoritmo y una
computadora es slo un procesador para ejecutarlo. Tanto el lenguaje de
programacin como la computadora son los medios para obtener un fin:
conseguir que el algoritmo se ejecute y se efecte el proceso correspondiente.

El diseo de la mayora de los algoritmos requiere creatividad y conocimientos
profundos de la tcnica de la programacin. En esencia, la solucin de un
problema se puede expresar mediante un algoritmo.

La mquina de Turing es un modelo computacional introducido por Alan Turing
en el trabajo On computable numbers, with an application to the Entscheidungs
problem, publicado por la Sociedad Matemtica de Londres, en el cual se
estudiaba la cuestin planteada por David Hilbert sobre si las matemticas son
M.C. Braulio Jos Cruz Jimnez
12
Introduccin a las Computadoras
decidibles, es decir, si hay un mtodo definido que pueda aplicarse a cualquier
sentencia matemtica y que nos diga si esa sentencia es cierta o no.

Turing construy un modelo formal de computador, la mquina de Turing,
y demostr que existan problemas que una mquina no poda resolver. La
mquina de Turing es un modelo matemtico abstracto que formaliza el
concepto de algoritmo.


Figura. Mquina de Turing

1.4 Caractersticas de los algoritmos

Las caractersticas fundamentales que debe cumplir todo algoritmo son:

Un algoritmo debe ser preciso e indicar el orden de realizacin de cada
paso.

Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se
debe obtener el mismo resultado cada vez.

Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en
algn momento; o sea, debe tener un nmero finito de pasos.

La definicin de un algoritmo debe describir tres partes: entrada, proceso y
salida. En el algoritmo de receta de cocina citado anteriormente se tendr:

Entrada: Ingredientes y utensilios empleados.
Proceso: Elaboracin de la receta en la cocina.
Salida: Terminacin del plato (por ejemplo, cordero).

Ejemplo 1.1

Un cliente ejecuta un pedido a una fbrica. La fbrica examina en su banco de
datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el
pedido; en caso contrario, rechazar el pedido. Redactar el algoritmo
correspondiente.
M.C. Braulio Jos Cruz Jimnez
13
Introduccin a las Computadoras

Los pasos del algoritmo son:

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

Ejemplo 1.2

Se desea disear un algoritmo para saber si un nmero es primo o no. Un
nmero es primo si solo puede dividirse por si mismo y por la unidad (es decir no
tiene ms divisores que l mismo y la unidad). Por ejemplo, 9, 8, 6, 4, 12, 16, 20,
etc, no son primos ya que son divisibles por nmeros distintos a ellos y a la
unidad. As, 9 es divisible por 3, 8 lo es por 2, etc.

El algoritmo de resolucin del problema pasa por dividir sucesivamente el
nmero por 2, 3, 4. .., etc.

1. Inicio.
2. Poner X igual a 2 (X =2, X, variable que representa a los divisores del nmero
que se busca N).
3. Dividir N entre X (N / X).
4. Si el resultado de N / X es entero, entonces N no es un nmero primo y
bifurcar al punto 7; en caso contrario continuar el proceso.
5. Suma 1 a X (X X +1).
6. Si X es igual a N, entonces N es un nmero primo en caso contrario bifurcar al
punto 3.
7. Fin.

Por ejemplo, si N es 131, los pasos anteriores serian:

1. Inicio.
2. X =2.
3 y 4. 131 / X. Como el resultado no es un entero, se continua el proceso.
5. X =2 +1, luego X =3.
6. Como X no es 131, se bifurca al punto 3.
3 y 4. 131 / X resultado no es un entero.
5. X =3 +1, X =4 .
6. Como X no es 131, se bifurca al punto 3.
3 y 4. 131 / X..., etc .
7. Fin.

Ejemplo 1.3

M.C. Braulio Jos Cruz Jimnez
14
Introduccin a las Computadoras
Realizar la suma de todos los nmeros pares entre 2 y 1000. El problema
consiste en sumar 2 +4 +6 +8 +... +1000. Utilizaremos las palabras SUMA Y
NUMERO para representar las sumas sucesivas (2 +4), (2 +4 +6), (2 +4 +6 +
8), etc.

La solucin se puede escribir con el siguiente algoritmo:

1. Inicio.
2. Establecer SUMA a 0.
3. Establecer NUMERO a 2.
4. Sumar NUMERO A SUMA .El resultado ser el nuevo valor de la suma
(SUMA).
5. Incrementar NUMERO 2 unidades.
6. El NUMERO =<1000 bifurca al paso 4; en caso contrario, escribir el ultimo
valor de SUMA y terminar el proceso.
7. Fin.

1.5 Resolucin de problemas con computadoras

La resolucin de problemas con computadora se puede resolver en tres fases:

Anlisis del problema
Diseo del algoritmo
Resolucin del algoritmo en la computadora.

El anlisis y el diseo del algoritmo requieren la descripcin del problema en
subproblemas a base de refinamientos sucesivos y una herramienta de
programacin, diagramas de flujo, diagrama NS o pseudocdigo; los conceptos
fundamentales del anlisis, diseo y herramientas de programacin (diagramas
de flujo, diagramas NS y pseudocodigos) se describen como conocimientos
indispensables para el aprendizaje de la programacin de computadoras.

La resolucin de problemas

La principal razn para que las personas aprendan a programar en general y los
lenguajes de programacin en particular es utilizar la computadora como una
herramienta para la resolucin de problemas. Ayudado por una computadora, la
resolucin de un problema se puede dividir en tres fases importantes:

1. Anlisis del problema.
2. Diseo o desarrollo del algoritmo.
3. Resolucin del algoritmo en la computadora.

El primer paso Anlisis del problema- requiere que el problema sea definido y
comprendido claramente para que pueda ser analizado con todo detalle.

M.C. Braulio Jos Cruz Jimnez
15
Introduccin a las Computadoras
Una vez analizado el problema, se debe desarrollar el algoritmo, procedimiento
paso a paso para solucionar el problema dado.

Por ltimo, para resolver el algoritmo mediante una computadora, se necesita
codificar el algoritmo en un lenguaje de programacin Pascal, C/++, Cobol,
Fortran, etc., es decir, convertir el algoritmo en programa, ejecutarlo y comprobar
que el programa soluciona verdaderamente el problema. Las fases del proceso
de resolucin de un problema mediante computadora se indican en la figura 8.


Figura 8. La resolucin de un problema

Anlisis del problema

El propsito del anlisis de un problema, es ayudar al programador para llegar a
una cierta comprensin de la naturaleza del problema. El problema debe estar
bien definido si se desea llegar a una solucin satisfactoria.

Para poder definir con precisin el problema se requiere que las especificaciones
de entrada y salida sean descritas con detalle. Una buena definicin del
problema, junto con una descripcin detallada de las especificaciones de entrada
y salida, son los requisitos ms importantes para llegar a una solucin eficaz.

El anlisis del problema exige una lectura previa del problema a fin de obtener
una idea general de lo que se solicita. La segunda lectura deber servir para
resolver a las preguntas:

Qu informacin debe proporcionar la resolucin del problema?

Qu datos se necesitan para resolver el problema?

La respuesta a la primera pregunta indicar los resultados deseados a las
salidas del problema.

La respuesta a la segunda pregunta indicar que datos se proporcionan a las
entradas del problema.

M.C. Braulio Jos Cruz Jimnez
16
Introduccin a las Computadoras


Figura 9. Anlisis del problema

Ejemplo 1.4

Leer el radio de un crculo y calcular e imprimir su superficie y la longitud de la
circunferencia.

Anlisis

Las entradas de datos en este problema se concentran en el radio del crculo.
Dado que el radio puede tomar cualquier valor dentro del rango de los nmeros
reales, el tipo de datos radio debe ser real.

Las salidas sern dos variables: superficie y circunferencia, que tambin sern
de tipo real.

Entradas: radio del circulo (variable RADIO).
Salidas: superficie del circulo (variable rea), Circunferencia del circulo (variable
Circunferencia).
Variables: Radio, rea y circunferencia (tipo real).

Diseo del algoritmo

Una computadora no tiene capacidad para solucionar problemas ms que
cuando se le proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos
que indican las instrucciones a ejecutar por la maquina, constituyen, como ya
conocemos, el algoritmo.

La informacin proporcionada al algoritmo, constituye su entrada y la informacin
producida por el algoritmo constituye su salida. Los problemas complejos se
pueden resolver mas eficazmente con la computadora, cuando se rompen en
subproblemas que sean ms fciles de solucionar que el original. Este mtodo
se suele denominar divide y vencers (divide and conquer) que consiste en
dividir un problema complejo en otros ms simples.

M.C. Braulio Jos Cruz Jimnez
17
Introduccin a las Computadoras
As el problema de encontrar la superficie y longitud de un crculo se puede
dividir en tres problemas ms simples o subproblemas. La descomposicin del
problema original en subproblemas ms simples y a continuacin dividir estos
subproblemas en otros ms simples que pueden ser implementados para su
solucin en la computadora se denomina diseo descendente (top-down design).

Para iniciar un diseo modular arriba-abajo es necesario partir de las funciones
mayores hacia las menores. El diseo de las funciones mayores se debe realizar
para el nivel ms alto de abstraccin (nivel 1). A su vez, cada una de estas
funciones se descompone en sus partes constitutivas ms elementales (nivel 2).
Cada una de las funciones de nivel 2 de descomponerse en sus partes
constitutivas (nivel 3). Esta particin continua hasta que se tengan funciones
fcilmente codificables.

Normalmente los pasos diseados en el primer esbozo del algoritmo son
incompletos e indicaran solo unos pocos pasos (un mximo de doce
aproximadamente). Tras esta primera descripcin, estos se amplan en una
descripcin mas detallada con ms pasos especficos. Este proceso se
denomina refinamiento del algoritmo (stepwise refinement). Para problemas
complejos se necesitan con frecuencia diferentes niveles de refinamiento antes
de que se pueda obtener un algoritmo claro, preciso y completo.

El problema de clculo de la circunferencia y superficie de un crculo se puede
descomponer en subproblemas ms simples: (1) leer datos de entrada, (2)
calcular superficie y longitud de circunferencia y (3) escribir resultados (datos de
salida).




Las ventajas ms importantes del diseo descendente son:

El problema se comprende ms fcilmente al dividirse en partes ms
simples denominadas mdulos.

Las modificaciones en los mdulos son ms fciles.

La comprobacin del problema se puede verificar fcilmente.

M.C. Braulio Jos Cruz Jimnez
18
Introduccin a las Computadoras
Tras los pasos anteriores (diseo descendente y refinamiento por pasos) es
preciso representar el algoritmo mediante una determinada herramienta de
programacin: diagrama de flujo, pseudocdigo o diagrama N.S. As pues, el
diseo de algoritmo se descompone en las fases recogidas en la figura 10.




Figura 10. Fases de diseo de un algoritmo





Figura. 11 Refinamiento de un algoritmo

Estructura inicial del algoritmo

Como ya se ha comentado anteriormente, el sistema para describir un algoritmo
consiste en realizar una descripcin paso a paso con un lenguaje natural del
citado algoritmo. Recordemos que un algoritmo es un mtodo o un conjunto de
reglas para solucionar un problema. En clculos elementales estas reglas tienen
las siguientes propiedades:
M.C. Braulio Jos Cruz Jimnez
19
Introduccin a las Computadoras

Deben de estar seguidas de algunas secuencias definidas de pasos hasta
que se obtenga un resultado coherente,

Slo puede ejecutarse una operacin a la vez.

El flujo de control usual de un algoritmo es secuencial; consideremos el
algoritmo que responde a la pregunta:

Qu hacer para ver la pelcula Tiburn?

La respuesta es muy sencilla y puede ser descrita en forma de algoritmo,
general de modo similar a:

ir al cine
comprar una entrada (billete o ticket)
ver la pelcula
regresar a casa

El algoritmo consta de cuatro acciones bsicas, cada una de las cuales debe ser
ejecutada antes de realizar la siguiente. En trminos de computadora, cada
accin se codificar en una o varias sentencias que ejecutan una tarea
particular.

El algoritmo descrito es muy sencillo; sin embargo, como ya se ha indicado en
prrafos anteriores, el algoritmo general se descompondr en pasos ms
simples en un procedimiento denominado refinamiento sucesivo, ya que cada
accin puede descomponerse a su vez en otras acciones simples. Esta
descomposicin sucesiva o refinamiento de especificaciones termina cuando
todas las instrucciones estn expresadas en trminos del computador, usando
un lenguaje de programacin.

As, un primer refinamiento del algoritmo ir al cine se puede describir de la forma
siguiente:

1. Inicio
2. Ver la cartelera de cines en el peridico
3. Si no proyectan Tiburn entonces
3.1 decidir otra actividad
3.2 bifurcar al paso 7
si_no
3.3 ir al cine.
Fin_si
4. Si hay cola
4.1 ponerse en ella
4.2 mientras haya personas delante hacer
M.C. Braulio Jos Cruz Jimnez
20
Introduccin a las Computadoras
4.2.1 avanzar en la cola
fin_mientras
Fin_si
5. Si hay localidades entonces
5.1 comprar una entrada
5.2 pasar a la sala.
5.3 localizar la(s) butaca(s)
5.4 mientras proyectan la pelcula hacer
5.4.1 ver la pelcula
fin_mientras
5.5 abandonar el cine
si_no
5.6 refunfuar
Fin_si
6. volver a casa
7. Fin

En el algoritmo anterior existen diferentes aspectos a considerar. En primer
lugar, ciertas palabras reservadas se han escrito deliberadamente en negrita
(mientras, si no, etc.). Estas palabras describen las estructuras de control
fundamentales y procesos de toma de decisin en el algoritmo. Estas incluyen
los conceptos importantes de decisin de seleccin (expresadas por si
entonces-si_no if then-else) y de repeticin (expresadas con mientras-hacer
o a veces repetir hasta e iterarfin-iterar, while-do y repeat-until) que se
encuentra en casi todos los algoritmos, especialmente los de proceso de datos.
La capacidad de decisin permite seleccionar alternativas de acciones a seguir o
bien la repeticin una y otra vez de operaciones bsicas Si proyectan la pelcula
seleccionada ir al cine si_no ver la televisin, ir al ftbol o leer el peridico
mientras haya personas en la cola, ir avanzando repetidamente hasta llegar a la
taquilla.

Otro aspecto a considerar es el mtodo elegido para describir los algoritmos:
empleo de indentacin (sangrado o justificacin) en escritura de algoritmos. En
la actualidad es tan importante la escritura de programa como su posterior
lectura. Ello se facilita con la indentacin de las acciones interiores a las
estructuras fundamentales citadas: selectivas y repetitivas.

Para terminar estas consideraciones iniciales sobre algoritmos, describiremos
las acciones necesarias para refinar el algoritmo objeto de nuestro estudio; para
ello analicemos la accin:

Localizar las butaca(s)

Si los nmeros de los asientos estn impresos en la entrada la accin
compuesta se resuelve con el siguiente algoritmo:

M.C. Braulio Jos Cruz Jimnez
21
Introduccin a las Computadoras
1. inicio //algoritmo para encontrar la butaca del espectador
2. caminar hasta llegar a la primera fila e butaca
3. repetir compara nmero de fila con nmero impreso en billete si no son
iguales, entonces pasar a la siguiente fila hasta_que se localice la fila correcta
4. mientras nmero de butaca no coincida con nmero de billete hacer avanzar
a travs de la fila a la siguiente butaca fin_mientras
5. sentarse en la butaca
6. fin

En este algoritmo la repeticin se ha mostrado de los modos, utilizando ambas
notaciones, repetir...hasta_que y mientras...fin_mientras. Se ha considerado
tambin, como ocurre normalmente, que el nmero del asiento y fila coincide con
el nmero y fila rotulado en el billete.

Resolucin del problema mediante computadora

Una vez que el algoritmo est diseado y representado grficamente mediante
una herramienta de programacin (diagrama de flujo, pseudocdigo o diagrama
N-S) se debe pasar a la fase de resolucin prctica del problema con la
computadora.

Esta fase se descompone a u vez en las siguientes subfase:

1. Codificacin del algoritmo en un programa.
2. Ejecucin del programa.
3. Comprobacin del programa.

En el diseo del algoritmo ste describe en una herramienta de programacin tal
como un diagrama de flujo, diagrama N-S o pseudocdigo. Sin embargo, el
programa que implementa el algoritmo debe ser escrito en un lenguaje de
programacin y siguiendo las reglas gramaticales o sintaxis del mismo. La fase
de conversin del algoritmo en un lenguaje de programacin se denomina
codificacin, ya que el algoritmo escrito en un lenguaje especfico de
programacin se denomina cdigo.

Tras la codificacin del programa, deber ejecutarse en una computadora y a
continuacin de comprobar los resultados pasar a la fase final de
documentacin.

M.C. Braulio Jos Cruz Jimnez
22
Introduccin a las Computadoras


Figura11. Resolucin del problema mediante una computadora

1.6 Representacin grafica de los algoritmos

Para representar un algoritmo se debe utilizar algn mtodo que permita
independizar dicho algoritmo del lenguaje de programacin elegido. Ello
permitir que un algoritmo pueda ser codificado indistintamente en cualquier
lenguaje. Para conseguir este objetivo se precisa que el algoritmo sea
representado grfica o numricamente, de modo que las sucesivas acciones no
dependan de la sintaxis de ningn lenguaje de programacin, sino que la
descripcin pueda servir fcilmente para su transformacin en un programa, es
decir, su codificacin.

Los mtodos usuales para representar un algoritmo son:

1. Diagrama de flujo,
2. Diagrama N-S(Nassi-Schneiderman),
3. Lenguaje de especificacin de algoritmos: pseudocdigo.

Diagramas de flujo

Un diagrama de flujo (flowchart) es una de las tcnicas de representacin de
algoritmo ms antigua y a la vez ms utilizada, aunque se empleo ha disminuido
considerablemente, sobre todo desde la aparicin de lenguajes de programacin
estructurados. Un diagrama de flujo es un diagrama que utiliza los smbolos
(cajas) estndar mostrados en la figura 12 y que tiene los pasos del algoritmo
escritos en esas cajas unidas por flechas, denominadas lneas de flujo, que
indican la secuencia en que se deben ejecutar.

Los smbolos estndar normalizados por ANSI (abreviatura de American
National Standard Institute) son muy variados. En la figura 13 se representan
una plantilla de dibujo tpica.

M.C. Braulio Jos Cruz Jimnez
23
Introduccin a las Computadoras
Figura 12. Smbolos del Diagrama de flujo

M.C. Braulio Jos Cruz Jimnez
24
Introduccin a las Computadoras


Figura 13. Diagrama de flujo

Se desea realizar el algoritmo que resuelva el sistema siguiente:

Calculo de los salarios mensuales de los empleados de una empresa, sabiendo
que calculan en base a las hora semanales trabajadas y de acuerdo a un precio
especificado. Si se pasan de cuarenta horas semanales, las horas
extraordinarias se pagarn a razn de 1.5 veces la hora ordinaria

Los clculos son:

1. Leer datos del archivo de la empresa, hasta que se encuentre ficha final del
archivo (HORAS, PRECIO_HORA, NOMBRE).
2. Si horas <= 40, entonces SALARIO es el producto de horas por
PRECIO_HORA.
3. Si HORA >40, entonces salario es la suma de 40 veces PRECIO_HORA ms
1.5 veces PRECIO_HORA por (HORAS=40).
M.C. Braulio Jos Cruz Jimnez
25
Introduccin a las Computadoras
M.C. Braulio Jos Cruz Jimnez
26



Diagramas de Nassi-Schneiderman (n-s)

El diagrama N-S de Nassi-Schneiderman, tambin conocido como diagrama de
chapin, es como un diagrama de flujo en el que se omiten las flechas de unin y
las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas
y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una
caja.

Introduccin a las Computadoras

Un algoritmo se representa de la forma siguiente:





Pseudocdigo

El pseudocdigo es un lenguaje de especificacin (descripcin) de algoritmos. El
uso de tal lenguaje hace el paso de codificacin final (esto es, la traduccin a un
lenguaje de programacin) relativamente fcil. Los lenguajes APL Pascal y Ada
se utilizan a veces como lenguajes de especificacin de algoritmos.

El pseudocdigo naci como un lenguaje similar al ingles y era un medio de
representar bsicamente las estructuras de control de programacin
estructurada. Se considera un primer borrador, dado que el pseudocdigo tiene
que traducirse posteriormente a un lenguaje de programacin. El pseudocdigo
permite un enfoque ms abstracto como el diseo descendente (top-down).

El pseudocdigo no puede ser ejecutado por una computadora. La ventaja del
pseudocdigo es que en su uso, en la planificacin de un programa, el
programador se puede concentrar en la lgica y en las estructuras de control y
no preocuparse de las reglas de un lenguaje especfico. Es tambin fcil
modificar el pseudocdigo si se descubren errores o anomalas en la lgica del
programa, mientras que en muchas ocasiones suele ser difcil el cambio en la
lgica, una vez que esta codificado en un lenguaje de programacin. Otra
ventaja del pseudocdigo es que puede ser traducido fcilmente a lenguajes
estructurados como Pascal, C, Fortran 77/90, Ada 83/95, C++, etc.


M.C. Braulio Jos Cruz Jimnez
27
Introduccin a las Computadoras
1.7 Concepto de programa

Un programa de computadora es un conjunto de instrucciones, las cuales son
rdenes dadas a la mquina que producirn la ejecucin de una determinada
tarea. En esencia, un programa es un medio para conseguir un fin.

Definicin
Diseo del
algoritmo
Codificacin
del problema
Depuracin y
verificacin

D
O
C
U
M
E
N
T
A
C
I

N

M
A
N
T
E
N
I
M
I
E
N
T
O


Figura 14. El proceso de la programacin.


Partes de un programa

Tras la decisin de desarrollar un programa, el programador debe establecer el
conjunto de especificaciones que debe contener el programa: entrada, salida y
algoritmos de resolucin, que incluirn las tcnicas para obtener las salidas a
partir de las entradas.

Conceptualmente, un programa puede ser considerado como una caja negra,
como se muestra en la figura 15. La caja negra o el algoritmo de resolucin, en
realidad, es el conjunto de cdigos que transforman las entradas del programa
(datos) en salida (resultados.






Entrada Programa
(algoritmo de resolucin)
Salida
Figura 15. Bloque de un programa
M.C. Braulio Jos Cruz Jimnez
28
Introduccin a las Computadoras
El programador debe establecer de donde provienen las entradas al programa.
Las entradas, en cualquier caso, procedern de un dispositivo de entrada como
el teclado, disco, etc. El proceso de introducir la informacin de entrada en la
memoria de la computadora se denomina entrada de datos, operacin de lectura
o accin de leer.

Las salidas de datos se deben presentar en dispositivos perifricos de salida:
pantalla, impresoras, disco, etc. La operacin de salida de datos se conoce
tambin como escritura o accin de escribir.

Instrucciones y tipos de instrucciones

El proceso de diseo del algoritmo o posteriormente de codificacin del
programa consiste en definir las acciones o instrucciones que resolvern al
problema. Las acciones o instrucciones se deben escribir y posteriormente
almacenar en memoria en el mismo orden en que han de ejecutarse, es decir, en
secuencia. Un programa puede ser lineal o no lineal.

Un programa es lineal si las instrucciones se ejecutan secuencialmente, sin
bifurcaciones, decisin ni comparaciones.

Instrucciones 1
Instrucciones 2
.
.
.
instrucciones n









En el caso del algoritmo las instrucciones se suelen conocer como acciones,
y se tendra:
Accin 1
Accin 2
.
.
.
Accin n









Un programa es no lineal cuando se interrumpe la secuencia mediante
instrucciones de bifurcacin:
Accin 1
Accin 2
.
.
.
Accin x
Accin n








M.C. Braulio Jos Cruz Jimnez
29
Introduccin a las Computadoras
Tipos de instrucciones

Las instrucciones disponibles en un lenguaje de programacin dependen del tipo
de lenguaje. Por ello, en este apartado estudiaremos las instrucciones bsicas
que se pueden implementar de modo general en un algoritmo y que
esencialmente soportan todos los lenguajes. Dicho de otro modo, las
instrucciones bsicas son independientes del lenguaje.

La clasificacin ms usual, desde el punto de vista anterior, es:

1. instrucciones de inicio/fin,
2. instrucciones de asignacin,
3. instrucciones de lectura,
4. instrucciones de escritura,
5. instrucciones de bifurcacin.

Elementos bsicos de un programa

En programacin se debe separar la diferencia entre el diseo del algoritmo y su
implementacin en un lenguaje especfico. Por ello, se debe distinguir
claramente entre los conceptos de programacin y el medio en que ellos se
implementan en un lenguaje especfico. Sin embargo, una vez que se
comprendan los conceptos de programacin, como utilizarlos, la enseanza de
un nuevo lenguaje es relativamente fcil.

Los lenguajes de programacin (como la mayora de los lenguajes) tienen
elementos bsicos que se utilizan como bloques constructivos, as como reglas
para las que esos elementos se combinan. Estas reglas se denominan sintaxis
del lenguaje. Solamente las instrucciones sintcticamente correctas pueden ser
interpretadas por la computadora y los programas que contengan errores de
sintaxis con rechazados por la mquina.

Los elementos bsicos constitutivos de un programa o algoritmo son:

Palabras reservadas (inicio, fin, si entonces..., etc),
Identificadores (nombres de variables esencialmente),
Caracteres especiales (coma, apstrofo, etc.),
Constantes,
Variables,
Expresiones,
Instrucciones.

Adems de estos elementos bsicos, existen otros elementos que forman parte
de los programas, cuya comprensin y funcionamiento ser vital para el correcto
diseo de un algoritmo y naturalmente la codificacin del programa. Estos
elementos son:
M.C. Braulio Jos Cruz Jimnez
30
Introduccin a las Computadoras

bucles,
contadores,
acumuladores,
interruptores,
estructuras de control:
secuenciales,
selectivas,
repetitivas.

El amplio conocimiento de todos los elementos de programacin y el modo de su
integracin en los programas constituyen las tcnicas de programacin que todo
buen programador debe conocer.

1.8 El ciclo de vida del software

Los diseadores de sistemas de software grandes, como los compiladores y
sistemas operativos, dividieron el proceso de desarrollo de software en seis
fases conocidas como ciclo de vida del software. Dichas fases son:

1. Anlisis y especificacin de la tarea (definicin del problema);

2. Diseo del software (diseo del algoritmo);

3. Implementacin (codificacin);

4. Prueba;

5. Mantenimiento y evolucin el sistema; y

6. Obsolescencia

Anlisis: Es la primera etapa del ciclo de vida. En ella se detecta un problema y
se trata de establecer el cul es el mbito del problema, las caractersticas,
limitaciones y patrones en los que se desea resolver.

Diseo: En esta etapa se toman las caractersticas que se desean en el sistema
y se organizan en algn modelo de forma que sea fcilmente programable
Tambin se elige entre diversas herramientas, y formas de construir el sistema.
Existen diversos documentos que se obtienen como resultado del diseo. Estos
dependen de la metodologa, el autor y algunas consideraciones referentes al
tipo de proyecto. Puede obtener un diagrama de flujo de datos, diagrama de
entidad de relacion, diagramas de estados,

Programacin: El programador es el responsable de esta actividad, y l se
encarga de transformar las especificaciones y los documentos de diseo, en
M.C. Braulio Jos Cruz Jimnez
31
Introduccin a las Computadoras
programas que funcionen. Como parte de su labor se encuentra la fase de
depuracin, en la cual elimina todos los errores que se encuentren en sus
programas.

Pruebas: En el momento en que el programa aun permanece aislado en el
equipo del programador original, se realizan pruebas que verifiquen que el
programa hace lo que se supone que debe hacer. Estas son llamadas pruebas
unitarias. Cuando finalmente se integra todo, se vuelven a realizar pruebas
donde se verifica que todos los programas pueden funcionar juntos. Estas son
llamadas pruebas integrales.

Mantenimiento y evolucin: Es muy difcil que un sistema salga sin errores desde
las fbricas de software, por lo cual despus de las pruebas se debe dejar pasar
un tiempo para que el programa muestre aquello errores que no se detectaron
en esa etapa. Una vez que el programa este en funcionamiento se inicia de
nuevo el ciclo de vida detectando nuevas necesidades que activan el ciclo desde
la etapa de anlisis.

Obsolescencia: Cuando un programa no est funcionando como debiera y no se
puede arreglar con una cantidad razonable de esfuerzo, debe desecharse y
sustituirse por uno nuevo.

1.9 Introduccin al lenguaje C++

El C es un lenguaje de programacin de alto nivel (alto nivel quiere decir
prximo al lenguaje humano), pero con caractersticas de bajo nivel. Es de
alto nivel porque es racional, estructurado y fcil de aprender. Es de bajo nivel
porque permite trabajar con bits, registros de la C.P.U. y posiciones de
memoria.

Porqu el C ?

El lenguaje C es poderoso y flexible: la mayor parte del sistema operativo
UNIX est escrito en C. Incluso estn escritos en C los compiladores e
intrpretes de otros lenguajes, como FORTRAN, APL, PASCAL, LISP, LOGO y
BASIC.

El lenguaje C es amistoso porque es lo suficientemente esrtucturado para
ejercer buenos hbitos de programacin. Es el lenguaje de programacin ms
utilizado por el programador de sistemas.






M.C. Braulio Jos Cruz Jimnez
32
Introduccin a las Computadoras
M.C. Braulio Jos Cruz Jimnez
33
FORTRAN
Relaciones del C con otros lenguajes de programacin



















C++es un lenguaje de programacin orientado a objetos inventado a principios
de los aos 80 por Bjarne Stroustrup en los laboratorios de AT&T en Nueva
J ersey (EE.UU.), famosos por ser donde trabajaban los inventores del lenguaje
C y del sistema operativo UNIX, Dennis Ritchie y Brian Kernighan. La idea
original de Stroustrup era desarrollar un lenguaje para uso interno en el
laboratorio, que fuera una mejora al C, una especie de C con clases. Debido a
ello, C++incorpor caractersticas de diversos lenguajes como Ada, Simula67 o
Algol68. Sin embargo, el lenguaje no se redujo a estas incorporaciones, y
adems de conservar la versatilidad y potencia de C, ha crecido con las
necesidades de sus usuarios hasta convertirse en uno de los lenguajes de
programacin ms utilizados en la actualidad. En general, podemos decir que
C++ es un lenguaje de programacin de propsito general con cierta desviacin
hacia la programacin de sistemas que:

es un C mejorado,
soporta la abstraccin de datos,
soporta la programacin orientada a objetos (POO), y
soporta otros tipos de programacin genrica.

La herencia de C es vista por muchos puristas como una debilidad del lenguaje.
Sin embargo, el hecho de que C++conserve una compatibilidad total con C, le
dota de una potencia que no tienen otros lenguajes orientados a objetos puros;
como J ava o Smalltalk, y adems no fuerza ningn estilo de programacin.

Por otro lado, debemos recordar que C++es un lenguaje estandarizado, que ha
sido adoptado por la ISO (International Organization for Standardization,
ALGOL
PL/1 (1965)
PASCAL (1970)
C(1972)
ANSI C (1985) C++(1985)
Introduccin a las Computadoras
M.C. Braulio Jos Cruz Jimnez
34
Organizacin Internacional de Estandarizacin) y varias organizaciones
nacionales como ANSI (The American National Standards Institute, el Instituto
Nacional Americano de Estndares), BSI (The British Standards Institute, el
Instituto Britnico de Estndares), y DIN (la Organizacin Alemana de
Estndares Nacionales) el 14 de Noviembre de 1997.

El comit ANSI-C++es conocido por "X3J 16". El grupo del estndar ISO C++es
conocido como "WG21". Entre las compaas que han contribuido al estndar
figuran AT&T, Ericsson, Digital, Borland, Hewlett Packard, IBM, Mentor Graphics,
Microsoft, Silicon Graphics, Sun Microsystems, y Siemens.

You might also like