Está en la página 1de 84

mailxmail - Cursos para compartir lo que sabes

Informtica. Desarrollo cientfico del ordenador


Autor: Abdiel Cceres Gonzlez

mailxmail - Cursos para compartir lo que sabes

Presentacin del curso


Ordenador, ciencia e informtica son las claves de este curso. Conoce el desarrollo cientfico que hay detrs de una computadora u ordenador de ltima generacin; la evolucin de las computadoras revelando la ciencia de la computacin en torno a hardware, software, estructura, sistemas de numeracin (binario, decimal), etc. Estudiaremos los principios de programacin y el desarrollo de programas: codificacin, editores, compiladores, depuradores, errores de cdigo, etc. Veremos, tambin, diseo Top-Down y pseudocdigo de algoritmos; la construccin de algoritmos siguiendo la orden de GOTO y el teorema de la estructura, llegando al detalle de cmo definir un problema y cmo escribir algoritmos. Asimismo estudiaremos las variables, constantes y tipos de datos, adems de los principios bsicos de las expresiones y rdenes.

mailxmail - Cursos para compartir lo que sabes

1. Era de la informacin. Evolucin de las computadoras (1/2)


INTRODUCCIN A LAS CIENCIAS COMPUTACIONALES Resumen.- La carrera de ciencias computacionales ofrece una variedad de especialidades de las cuales el alumno ira adquiriendo una lnea de especialidad desde los primeros semestres de la misma. En esta materia se mostraran estas lneas de especialidad, as mismo se darn las bases para que el alumno empiece a resolver problemas mediante la computadora utilizando un lenguaje de programacin. El objetivo general de este curso es lograr que el alumno adquiera un panorama general de las ciencias computacionales y sirva de introduccin hacia la carrera que est cursando, permitindole as visualizar la lnea en la que podra especializarse. Palabras Clave.- Ciencias de la computacin, Historia de las computadoras, Fundamentos tericos de las ciencias computacionales, Sistemas numricos, Arquitecturas de computadoras, Hardware y Software. ACLARACIN LAS notas de este curso siguen muy de cerca los apuntes de los cursos [1], y son pues una recopilacin de diversas fuentes de informacin con algunas anotaciones propias, en las que pueden existir errores que deben atribuirse al autor del presente curso, y no a las fuentes de informacin. Las figuras, esas si, fueron tomadas libremente de algunos sitios de Internet, y a menos que se declare otra cosa, son de dominio pblico. Aclarado este asunto, empecemos con las notas del curso de Introduccin a las Ciencias Computacionales. I. ERA DE LA INFORMACIN A. La evolucin de las computadoras DESDE los inicios de la historia de la humanidad, muchas personas han intentado construir mecanismos que sean capaces de hacer clculos [2]. baco (500 A.C): Quiz fue el primer dispositivo mecnico que se utiliz para hacer clculos numricos.

Figura. 1. baco antiguo Regla de clculo (1625 D.C.): Inventada por John Napier, fue una herramienta de

mailxmail - Cursos para compartir lo que sabes


clculo sumamente til, pues se utiliz hasta fines de 1960. Utilizaba las distancias fsicas para multiplicar y restar.

Figura. 2. Regla de clculo

mailxmail - Cursos para compartir lo que sabes

2. Era de la informacin. Evolucin de las computadoras (2/2)


Pascalina (1642): Blas Pascal, cuando tena 19 aos de edad, construy este dispositivo mecnico, compuesto de engranes, para ayudar a su padre que trabajaba como cobrador de impuestos. La pascalina solamente poda sumar.

Figura. 3. Pascalina, construida en 1642 Charles Babbage (1822): Ch. Babbage dise una mquina que funcionaba con vapor y que llam motor de diferencias, esta mquina era del tamao de un cuarto y era capaz de calcular las tablas de multiplicar y las tablas de logaritmos.

Figura. 4. Mquina de diferencias construida por Charles Babbage en 1822. La ABC (1937): En 1847 George Bool desarroll el lgebra bivalente, ahora conocida como algebra booleana, y es la base matemtica en la que residen todos los clculos que hacen las computadoras modernas, la primer computadora que utiliz este sistema se construy en 1937, se llam ABC, que son las iniciales de Atanasoff Berry Computer.

mailxmail - Cursos para compartir lo que sabes

Figura. 5. Computadora ABC, hecha por Vincent Atanasoff y Clifford Berry en 1937. Las primeras computadoras electrnicas se construyeron entre las dcadas de 1920 y 1930, lo que marc la era de las computadoras electrnicas. Las computadoras que se construyeron con componentes electrnicos han cambiado de acuerdo a la tecnologa electrnica de sus componentes, esta es la primera clasificacin de los tipos de computadoras, cada clase se le conoce como generacin.

mailxmail - Cursos para compartir lo que sabes

3. Primera generacin de computadoras


1) Primera generacin de computadoras: La primera generacin de computadoras electrnicas ocurri a partir de 1945 y dur aproximadamente hasta 1956. Una de las primeras computadoras que se construyeron fue la llamada ENIAC (Electronic Numeric Integrator And Calculator), construida en 1945 por la Universidad de Pensilvania, en los Estados Unidos de Amrica, y el propsito para su construccin fue realizar clculos con fines blicos, durante la segunda guerra mundial. Las computadoras de la primera generacin se caracterizaron por tener varios problemas en comn. Todos estos problemas tienen que ver con: Tamao: Las computadoras de la primera generacin eran enormes. La ENIAC pesaba 30 toneladas y se requera todo un edificio para alojarla. Tena 18,000 bulbos, 70,000 resistencias y 5.000.000 soldaduras. Precio: Las computadoras de esta generacin costaban tanto dinero que casi nadie poda comprarlas, solamente las ms grandes instituciones gubernamentales y unas pocas universidades, pues el costo estaba en el orden de los millones de dlares. Consumo de energa: Esta clase de computadoras gastaba muchsima energa elctrica, alrededor de 200 KW/h, de modo que cuando la ENIAC funcionaba, toda la ciudad de Philadelphia se enteraba, porque bajaba la corriente elctrica. Poca confiabilidad: Esto se debi principalmente a que los componentes electrnicos con los que estaban construidas estas computadoras, fallaban en promedio cada 7 minutos y medio, lo que obligaba a reiniciar los clculos en cada evento de esta naturaleza. En ocasiones la computadora arrojaba resultados diferentes en cada corrida, dependiendo de qu bulbo (o componente) estaba daado.

Figura. 6. John von Neumann a un lado de la computadora ENIAC En 1946, John von Neumann, quien fue pionero en las ciencias computacionales, estudi e hizo significativos aportes al desarrollo del software, de hecho, fue von Neumann quien invent los diagramas de flujo. Las principales lneas de investigacin en la teora de la programacin fueron:

mailxmail - Cursos para compartir lo que sabes


Las instrucciones y los datos se almacenan en un lugar especfico en la computadora, la memoria de lectura y escritura. El espacio en memoria era perfectamente distinguible por localidades nicas, nombradas por medio de una direccin. Los programas se ejecutaban en forma secuencial, y a su vez, las instrucciones de los programas tambin se hacan en forma secuencial.

mailxmail - Cursos para compartir lo que sabes

4. Nuevas generaciones de computadoras


2) Siguientes generaciones de computadoras: La segunda generacin de computadoras empez en 1958, cuando la compaa BELL AT&T desarroll el transistor. Los transistores eran ms rpidos, ms baratos, consuman menos energa elctrica y como consecuencia eran ms confiables que los bulbos, que eran los componentes principales de las computadoras de la primera generacin. Con la invencin del circuito integrado se termin la segunda generacin de computadoras, dando paso a la tercera generacin de computadoras. Los circuitos integrados (CIs) agrupaban todos los componentes esenciales de la computadora dentro de una unidad encapsulada. Esto hizo que se eliminaran las conexiones por cableado entre los componentes, lo que a su vez deriv en menos consumo de energa y redund en mayor confiabilidad. La memoria de la computadora fue de los componentes que se vieron ms beneficiados, porque ahora es posible disponer de mayor capacidad de almacenamiento que nunca antes La cuarta generacin de computadoras empez a mediados de la dcada de 1970, cuando las primeras microcomputadoras ya estaban disponibles en el mercado. Notemos que hasta la tercera generacin, las clases de computadoras estaban diferenciadas principalmente por la tecnologa de sus componentes, a partir de la cuarta generacin, la clasificacin se volvi ms ambigua, debido a que ahora un aspecto importante era la funcionalidad y el desempeo.

Figura. 7. La computadora Apple 1, de 1976, se vendi como un kit de "hgalo usted mismo" en unos $600.0 El precio de las computadoras personales (PCs), que son miles de veces ms poderosas que la ENIAC, es mucho menor. Los avances tecnolgicos, como el desarrollo de los CIs y tecnologa de superconductores hicieron posible que el costo de produccin disminuyera significativamente, y con esto, el costo de venta para los usuarios finales. Ahora ya hemos alcanzado la quinta generacin de computadoras con la caracterstica de cmputo empotrado, cmputo vestible, cmputo molecular y la inteligencia artificial. En la actualidad hay computadoras hechas de molculas de ADN, aunque su funcionalidad an no es de propsito general, se estn logrando significativos avances en este aspecto.

mailxmail - Cursos para compartir lo que sabes


Ejercicios: 1 ) Elabore un ensayo sobre la historia de los lenguajes de programacin, considerando de manera particular las fechas de los eventos ms importantes y los personajes ms representativos. 2 ) Elabore una lnea de tiempo sobre la historia de las computadoras y la historia de los lenguajes de programacin. 3 ) Agregue a la lnea del tiempo del ejercicio anterior, algunos de los eventos ms sobresalientes en la historia universal.

10

mailxmail - Cursos para compartir lo que sabes

5. Computador (ordenador). Caractersticas y funciones bsicas


B. Caractersticas y funciones bsicas de las computadoras En el principio de la era de la computacin, el trmino computar significaba calcular, hacer clculos numricos. Sin embargo, actualmente este concepto ha ampliado su definicin, abarcando ahora muchas otras actividades, adems de hacer clculos matemticos. El trmino computar ahora significa, tomar datos, hacer un proceso con ellos y obtener como resultado informacin. Para entender esto de los datos y la informacin, consideremos por ejemplo, el nmero 42, este nmero por s mismo no dice mucho, pero cuando un programa arroja este resultado, al hacer una consulta acerca de la temperatura corporal actual de un paciente, entonces ya se convierte en informacin, que implicara hacer las acciones que sean pertinentes para este caso. La naturaleza de las computadoras es hacer clculos. Las computadoras son muy buenas en hacer tareas repetitivas, aburridas y tareas que las personas son propensas a cometer errores. Estas tareas son por lo general las sumas, comparaciones, bsquedas y clculos de muchas reas del conocimiento humano. Casi el nico modo en que las computadoras puedan fallar en hacer los clculos, es que exista un defecto en los componentes con los que est construido, porque las computadoras no se cansan ni se aburren en hacer esas tareas. A partir de la dcada de 1930, se hicieron muchas especulaciones acerca de la similitud de la computadora con el cerebro humano. No era para menos, pues la computadora poda responder con mucha precisin a preguntas relacionadas con clculos; cosa que a las personas les costaba ms trabajo. Esto hizo pensar a algunas otras personas que la computadora era capaz de pensar y razonar como un humano. Alan M. Turing, matemtico ingls, propuso una prueba, en la que se podra determinar, si una computadora poda razonar como lo hace una persona normal y tener inteligencia como una persona. Aunque esta prueba no estaba basada en formalismos (pero muchos otros estudios de Alan Turing s), si haba confianza en el resultado.

11

mailxmail - Cursos para compartir lo que sabes


Figura. 8. Alan M. Turing propuso lo que conocemos como la "prueba de Turing", en la cual se determinaba si la computadora era capaz de confundirse con un ser humano. La prueba de Turing se trataba de hacer un dialogo entre una computadora y una persona, pero la persona no debera saber con quin estaba dialogando. Si la persona era capaz de reconocer que su interlocutor no era una persona, entonces la computadora no pasara la prueba; al contrario, si la persona no poda reconocer que se trataba de algo (no de alguien), entonces la computadora tendra el reconocimiento de tener inteligencia como la humana. Hasta ahora, ninguna computadora ha sido capaz de vencer en la prueba de Turing, aunque los avances en este sentido han sido asombrosos. Por ejemplo, se ha dado el caso de que una computadora ha vencido en el juego del ajedrez a campeones mundiales de la especialidad, hay computadoras que hacen diagnsticos mdicos, cirugas, evaluaciones y tomas de decisiones. Pero aunque estas tareas resulten asombrosas para las computadoras, hay an cosas humanas que no pueden hacer, como desarrollar tareas impredecibles, como responder a preguntas que jams antes haban conocido.

12

mailxmail - Cursos para compartir lo que sabes

6. Computador(ordenador). Software y hardware


Las computadoras estn compuestas, de manera muy general, en software y hardware. Sin el software o el hardware, las computadoras sirven de muy poco, y de nada para lo que originalmente fueron concebidas. 1) El software: El software de la computadora son los programas (las instrucciones) de la computadora, es decir, son los conjuntos de instrucciones que deben seguir de manera ordenada para llevar a cabo la tarea para la cual han sido programadas. Las personas que se relacionan con el software de las computadoras, normalmente caen en una de dos clases, o son programadores o son usuarios de programas. Los programadores son las personas que hacen los programas, implcitamente tambin son usuarios de programas, por otro lado, los usuarios se limitan a usar los programas hechos por los programadores. Las personas que se dedican a las ciencias computacionales, tienen que ver la computacin como un objeto de estudio. Ya sea como programador o como usuario, los computlogos deben proponer nuevos y mejores maneras de hacer computaciones, en cualquiera que sea el objeto del cmputo. En ocasiones se debe garantizar que un procedimiento es posible realizarlo con la computadora y desde otro punto de vista, explicar porqu tal o cual procedimiento es imposible hacerlo en una computadora, esto es la computabilidad. 2) El hardware: Conocemos como hardware a lo que es tangible en la computadora, como el monitor, todos los circuitos electrnicos, mecnicos o elctricos; los componentes de plstico o cualquier otro material. En general, el hardware de la computadora se puede dividir en tres partes: I) El hardware de entrada: Son aquellos dispositivos que sirven para meter datos a la computadora. II) El hardware de procesamiento central: Son aquellos componentes que sirven para procesar los datos, ya sean numricos, alfanumricos, visuales, textuales o de cualquier otra clase. III) El hardware de salida: Son los elementos constituyentes de la computadora que sirven para recibir informacin de ella.

13

mailxmail - Cursos para compartir lo que sabes

7. Ordenador. Supercomputadoras. Mainframe


C. Tipos de computadoras En general, podemos distinguir las computadoras en 5 categoras. Estas categoras se han establecido para dar una idea general del poder de cmputo que est implcito al nombrar el tipo de computadora. Supercomputadoras. (Figura 9). Las supercomputadoras normalmente son aquellas que son cientos de veces ms rpidas que cualquier computadora de escritorio. Las supercomputadoras normalmente estn en cuartos muy fros y se deben enfriar con lquidos especiales para que la resistencia elctrica sea mnima y garantice la mxima velocidad. El software que se corre en las supercomputadoras normalmente es un software especializado, como la prediccin del clima, la dinmica molecular (como el caso de la BlueGene/L de IBM que se muestra en la figura 9). De modo que la principal caracterstica de las supercomputadoras es su velocidad de proceso, y no el nmero de procesos que puedan ejecutar al mismo tiempo.

Figura. 9. Supercomputadora BlueGene L, la mejor del mundo hasta ahora (sep/2007). Es una mquina de 360 TeraFLOPS (360 1012, o 360.000.000.000.000) Mainframe. (Figura 10). El significado del trmino mainframe dentro de la computacin, ha cambiado varias veces. Al principio, mainframe era un trmino con el que se designaba a las computadoras que se alojaban en cuartos enormes, luego se utiliz para distinguir las mquinas que compartan los recursos con muchas computadoras de menos poder de cmputo. Ahora, el trmino se refiere usualmente a las computadoras compatibles con el sistema IBM 360. Otras computadoras con las mismas capacidades se suelen llamar servidores. En general, nosotros entenderemos como mainframe, una computadora que es capaz de compartir los recursos con muchas otras computadoras de menor capacidad. Los mainframes se utilizan en universidades, bancos, etc. Una computadora mainframe acepta entradas de otras terminales, u otros mainframes. Una terminal es una computadora con muy poco poder de cmputo que requiere de los servicios que presta un mainframe, usualmente se les conoce como terminales tontas.

14

mailxmail - Cursos para compartir lo que sabes

Figura. 10. Mainframe antigua, con el sistema IBM360.

15

mailxmail - Cursos para compartir lo que sabes

8. Computador personal. Servidores


Computadoras personales. (Figura 11). Son pequeas y baratas. Generalmente solamente tienen un procesador, aunque ahora se est volviendo comn tener computadoras personales con ms de un procesador. Al principio se les conoca como microcomputadoras, porque eran computadoras completas construidas a pequea escala y que fueron adquiridas por la mayora de los negocios.

Figura. 11. Computadoras personales. Actualmente ya tienen mucho poder de cmputo, son relativamente baratas y corren una amplia gama de aplicaciones. Las computadoras personales pueden ejecutar una amplia gama de aplicaciones de propsito general, como procesadores de texto, hojas de clculo, presentadores de transparencias, manejadores de bases de datos, entre otros. Tambin se conocen como terminales, o estaciones de trabajo. Pueden caber perfectamente en un escritorio, en conjunto con un monitor, un ratn y un teclado. La mayora de los negocios hacen redes interconectando varias estaciones de trabajo. (Figura 12). Servidores de redes. (Figura 12). Son similares a las PCs pero mucho ms poderosas. Los servidores manejan la seguridad de la red, archivos compartidos e impresoras compartidas. Un servidor es una computadora optimizada para proporcionar servicios a otras computadoras en una red de computadoras. Los servidores generalmente tienen procesadores poderosos y mucha memoria y discos duros de enorme capacidad.

16

mailxmail - Cursos para compartir lo que sabes

Figura. 12. Computadoras personales. Frecuentemente se utilizan computadoras personales para conectarlas y hacer una red de computadoras.

17

mailxmail - Cursos para compartir lo que sabes

9. PDAs. Computadoras vestibles


Por otro lado, ahora se estn haciendo computadoras cada vez ms pequeas, y con cada vez mayor capacidad de procesamiento y de almacenamiento de datos. Es comn ahora encontrar: Computadoras porttiles. (Figura 13) Tambin se les conoce por notebooks o laptops, son computadoras personales un poco ms caras que las computadoras personales de escritorio, porque la tecnologa que se requiere para fabricarlas debe de caber en menos espacio y tener el mismo poder de cmputo y almacenamiento. La ventaja de una laptop sobre una computadora de escritorio es que es completamente porttil. Las energa principal la proporciona una batera, que debe de ser recargada en pocas horas, frecuentemente 2 o 3 horas.

Figura. 13. Computadoras personales. Porttiles. PDAs. (Figura 14). Los PDAs (Asistentes digitales personales) Son equipos de cmputo con generalmente poco poder de cmputo, pero esto mejora a pasos agigantados. Frecuentemente son utilizados como asistentes personales, y las aplicaciones que corren son telfono mvil, agendas, editores de planes, listas de cosas por hacer, juegos, etc. Caben en la palma de una mano, generalmente tienen una pantalla sensible al tacto para evitar el teclado. Utilizan una tecnologa de reconocimiento de patrones que les permite saber qu smbolo se dibuja con el lpiz sobre la pantalla.

Figura. 14. Computadoras personales. PDAs.

18

mailxmail - Cursos para compartir lo que sabes


Computadoras vestibles. (Figura 15). La computacin vestible an se encuentra en desarrollo, pero se pretende crear computadoras tan pequeas que se puedan incorporar en la vestimenta del usuario. Esto significara una mejor conexin con el entorno. Por ejemplo, se podra detectar la identidad de un empleado y habilitar su entrada o negar el acceso sin tener que portar una credencial o detenerse a firmar; y muchas otras aplicaciones ms.

Figura. 15. Las computadoras vestibles estn en pleno desarrollo. En un futuro cercano se podrn utilizar como ahora se utilizan los telfonos celulares.

19

mailxmail - Cursos para compartir lo que sabes

10. CPU. Organizacin o estructura. Memoria


D. Organizacin de la computadora A pesar de la gran diversidad de formas de las computadoras, todas ellas tienen en comn que sirven para procesar datos y devolver informacin. Para entender cmo se procesan los datos y cmo se devuelve la informacin, es til considerar la organizacin de la computadora. Las computadoras personales actuales, tienen en comn (al menos hasta hace poco tiempo), que tienen un procesador, memoria, una interfaz y dispositivos de entrada y salida (figura 16). Sin embargo, las computadoras multiprocesadores se estn volviendo ms comunes cada vez. Aunque su organizacin es una generalizacin de la organizacin de las computadoras monoprocesador. La unidad central de proceso (conocida como el procesador), la memoria y la interfaz de entrada y salida, componen la unidad computacional.

Figura. 16. Organizacin bsica de las computadoras. Una computadora opera fundamentalmente en pasos de tiempo discreto. Las computadoras son dispositivos regidos por el tiempo, en donde los pasos del tiempo los proporciona de manera peridica un reloj central de acuerdo a su frecuencia de operacin. Cuando decimos: "... tengo una computadora de 1GHz...", significa que la computadora requiere 1 nanosegundo para realizar un tick. Una operacin puede tomar varios ticks en realizarse. La velocidad de la computadora se expresa en unidades de millones de instrucciones por segundo (MIPS). Nuestra computadora de 1GHz (la velocidad del reloj) puede tener una velocidad computacional de 200 MIPS. 1) Memoria: La memoria de la computadora es un arreglo de circuitos electrnicos capaces de mantener la polaridad de sus elementos por el tiempo que se encuentre encendida la computadora. Usualmente se le conoce como RAM (Memoria de acceso aleatorio). En la memoria se alojan los programas que se estn ejecutando y generalmente los datos que deben utilizar esos programas. Dentro de los programas que debe

20

mailxmail - Cursos para compartir lo que sabes


datos que deben utilizar esos programas. Dentro de los programas que debe ejecutar la computadora, el principal de ellos es el sistema operativo. El sistema operativo es un programa de computadora que se encarga de administrar los recursos del sistema de cmputo. Otros programas son los compiladores, traductores, demonios (programas que se ejecutan sin que se entere el usuario y que constantemente estn revisando una tarea especfica), etctera. 2) CPU: La Unidad Central de Procesos (CPU), se encarga de calcular y distribuir las tareas que se deben ejecutar. Entre sus funciones est la de hacer solicitudes a la memoria para obtener todos los datos necesarios para realizar su computacin; tambin est la de hacer gestiones a la interfaz de entrada y salida para permitir la lectura de los caracteres del teclado, los clicks del ratn, mostrar las ventanas en el monitor, etc. Frecuentemente, en las computadoras de un solo CPU, la velocidad de proceso se ve frenada por la capacidad de transmitir datos de un lado al otro, entre el CPU, la memoria y la interfaz de E/S. Antiguamente, las computadoras podan transmitir datos en conjuntos de 8 bits, ahora las computadoras pueden transmitir hasta 64 bits en cada tick del reloj (aunque a la fecha hay equipos de cmputo de 128 bits, pero son dedicados a consolas de juegos).

21

mailxmail - Cursos para compartir lo que sabes

11. Computadora. Interfaz y dispositivos de entrada y salida


3) Interfaz E/S: La interfaz de entrada y salida es una placa de circuitos integrados que manipulan y controlan los dispositivos que se conectan con el CPU. Los fabricantes de los dsipositivos de entrada de datos o de salida de datos, deben ajustarse a los lineamientos del procesador central.

Figura. 17. interfaz de entrada/salida de una computadora. Contiene circuitos integrados que controlan los dispositivos de entrada y salida y establece una comunicacin con la unidad central de proceso. Existen estndares para la transmisin de datos, tanto de entrada como de salida. Es el medio por el cual se envan o se reciben seales desde un sistema hacia otros. Los datos viajan por un bus de datos. Si el bus de datos es de poca capacidad y el procesador es de mucha capacidad, por ejemplo, si el bus de datos puede transmitir hasta 16 bits en un tick, y el procesador trabaja con 32 bits en cada tick, es claro que el procesador puede esperar hasta 2 ticks para trabajar; si el bus fuera de 64 bits y el procesador de 32 bits, entonces tambin hay un tiempo de espera. 4) Dispositivos de E/S: Los dispositivos de entrada y de salida son aquellos que se conectan a la unidad de computacin por medio de la interfaz de entrada/salida. Hay dispositivos de entrada, como los teclados, los ratones, las tabletas digitalizadoras, los micrfonos, etc.; y hay dispositivos de salida como los monitores, las bocinas, y cualquier otro actuador. Los dispositivos de E/S se conectan utilizando los puertos de la computadora. Antiguamente haba dos puertos, el puerto serial y el puerto paralelo. Actualmente est en desuso el puerto paralelo y en su lugar hay otros puertos seriales de alta velocidad, el USB (Bus Serial Universal) que se utiliza para casi cualquier dispositivo y el FireWire que se prefiere para transmitir altas cantidades de datos o de informacin, como los videos.

22

mailxmail - Cursos para compartir lo que sabes

23

mailxmail - Cursos para compartir lo que sabes

12. Sistemas de numeracin. Binario a decimal


E. Sistemas de numeracin Debido a la naturaleza elctrica y electrnica de las computadoras, los dispositivos de los cuales se componen, se pueden presentar en uno de dos estados, encendidos o apagados. Esto nos ha servido para modelar cada uno de esos estados con un 0 (apagado) o un 1 (encendido). El conjunto de smbolos 1 y 0, los conoceremos como dgitos binarios, porque son los dgitos que conforman el sistema de numeracin binaria. El nombre ms comn es BIT que es una contraccin de la palabra en ingls BInarydigiT. 1) Binario a decimal: La representacin de los nmeros en notacin binaria, sigue las mismas reglas que la representacin de los nmeros en notacin decimal, la que utilizamos cotidianamente; y tambin es la misma que la representacin de los nmeros en cualquier sistema numrico de otra base. Los nmeros se representan de manera posicional, con el dgito ms significativo a la izquierda y el menos significativo a la derecha. Ejemplo 1: El nmero decimal 7632 tiene el dgito ms significativo 7, y el menos significativo el 2. El nmero binario 10011 tiene el dgito ms significativo en el extremo izquierdo y el menos significativo al extremo derecho. Cada posicin representa las veces que la base debe ser considerada para expresar correctamente el nmero. En el ejemplo anterior, el nmero decimal 7632 representa:

Los dgitos 7, 6, 3, 2, han sido ordenados de arriba hacia abajo en orden decreciente de acuerdo a su posicin en el nmero 7632. De manera similar, el nmero binario (en base 2) del ejemplo 1, el nmero 10011 es representado por los dgitos de la siguiente tabla:

Esto nos sirve para poder convertir cualquier nmero en binario a su expresin numrica en base decimal. Por ejemplo, el mismo nmero del ejemplo 1, el 10011 se expresa en decimal como el resultado de:

24

mailxmail - Cursos para compartir lo que sabes

As, 100112 es equivalente al nmero 1910. El nmero en subndice a la derecha, indica la base que rige la expresin numrica. Esta misma idea la podemos aplicar a expresiones numricas de cualquier otra base. Por ejemplo, el nmero 2013:

de modo que las expresiones numricas 100112, 2013 y 1910 son equivalentes, cada una en su propio sistema numrico. Ejercicios: 1) Encuentre las expresiones numricas en sistema decimal equivalentes de los siguientes nmeros: a) 3368 b) 3367 c) 3369 2) a) b) c) El nmero decimal 845 es equivalente a qu numero binario? 11010011012 11010111012 11010011002

25

mailxmail - Cursos para compartir lo que sabes

13. Sistemas de numeracin. Decimal a binario


2) Decimal a binario: Para convertir un nmero en el sistema numrico decimal a otro sistema numrico de cualquier otra base hacemos divisiones, considerando los residuos para formar la expresin numrica del resultado. Ejemplo 2: Calcular la expresin numrica en binario del nmero 35610 (decimal). Para realizar esta tarea, tenemos que dividir:

De modo que el nmero binario buscado es 101100100. Una vez terminadas las divisiones, el resultado se obtiene escribiendo los residuos de izquierda a derecha en orden decreciente respecto a su significancia, es decir, primero el ms significativo, hasta el bit menos significativo que se escribe en el extremo derecho. Para convertir un nmero decimal a una expresin en otra base diferente que 2 se debe considerar dividir entre la base deseada hasta que la parte entera de la divisin sea 0, y escribir los residuos de izquierda a derecha en el orden de significancia. Ejercicios: 1) Convierta los siguientes nmeros en base 10 a base 2: a) 11010 b) 79010 c) 1001110

26

mailxmail - Cursos para compartir lo que sabes

14. Programacin. Principios. Programacin clsica (1/2)


II. PRINCIPIOS DE PROGRAMACIN ESTA seccin se trata de revisar y estudiar los principios que rigen el arte de programar computadoras. Veremos los conceptos fundamentales de la programacin, comprenderemos las direcciones de estudio en la programacin y los principios para tener buenos hbitos en la programacin. A. Programacin clsica Como las computadoras no pueden pensar (al menos hasta ahora), necesitamos darle las instrucciones para que ellas hagan lo que queremos. Un programa contiene un conjunto de instrucciones que la computadora puede utilizar para hacer alguna tarea. Debido a la naturaleza elctrica de prendido y apagado, las computadoras solamente entienden el lenguaje de 1s y 0s. Este lenguaje se llama lenguaje mquina. Una instruccin tpica en lenguaje mquina es 0000100000101111. Como las computadoras utilizan millones de circuitos electrnicos, utilizan el 1 para representar cuando tienen corriente y 0 para representar cuando no tienen corriente. Al principio, cuando se utilizaban las tarjetas perforadas, utilizaban el mismo principio. Un orificio se representaba con 1 y un no-orificio (no hay hueco) se representaba por un 0. Los estados prendido y apagado de los circuitos electrnicos de la computadora, posibilitan el uso del lgebra booleana, que fue inventada por el matemtico ingls George Boole. Los sistemas binarios operan de acuerdo con las reglas de la lgica booleana. Estas reglas se utilizan para hacer clculos con los datos. Como las personas no se sentan cmodas con el lenguaje mquina, inventaron el lenguaje ensamblador en la dcada de 1950. El lenguaje ensamblador involucra la traduccin de muchas combinaciones de nmeros en lenguaje mquina a instrucciones escritas con letras. Una instruccin tpica en lenguaje ensamblador se parece a Add A, B, que significa sumar el contenido de la variable A, con el contenido de la variable B. Cada tipo computadora tiene su propio tipo de lenguaje ensamblador. En la mayora de los casos, el tipo lo determina la marca de la computadora, aunque diferentes computadoras de la misma marca pueden tener diferentes lenguajes ensambladores. La cantidad de comandos que se utilizan en lenguaje ensamblador es la misma que en lenguaje mquina. Las computadoras suelen tener un programa especial que se llama ensamblador, que traduce un programa en lenguaje ensamblador a un lenguaje mquina, de modo que la computadora pueda entenderlo y ejecutarlo. Tanto el lenguaje ensamblador como el lenguaje mquina son lenguajes de bajo nivel, y son dependientes del procesador. Ya que cada procesador tiene su propia

27

mailxmail - Cursos para compartir lo que sabes


nivel, y son dependientes del procesador. Ya que cada procesador tiene su propia arquitectura, un programa en lenguaje ensamblador escrito para un procesador puede no funcionar en una computadora con un procesador diferente.

28

mailxmail - Cursos para compartir lo que sabes

15. Programacin. Principios. Programacin clsica (2/2)


Los lenguajes de alto nivel incluyen lenguajes como: Fortran. FORTRAN es una contraccin de FORmula TRANslation. Se utiliza principalmente en aplicaciones donde lo principal es el clculo numrico en problemas cientficos. Fue el primer lenguaje de alto nivel y lo cre la compaa IBM en 1950. Pascal. Pascal fue creado en 1970 y se llamo as por el matemtico Blaise Pascal. Se utiliz mucho en las universidades y centros educativos por su simplicidad y excelente diseo estructurado. COBOL. COBOL tambin es un acrnimo que significa COmmon Business Oriented Language. Se cre en 1960, y poda procesar clculos simples de grandes cantidades de datos. Los programas escritos en COBOL eran ms largos que aquellos que se escriban en otros lenguajes, pero a la vez, eran ms fciles de seguir. COBOL fue un lenguaje popular para las aplicaciones orientadas a los negocios que corran en computadoras grandes como los mainframes, aunque ahora ya no es tan comn, aunque an existe el compilador para este lenguaje. BASIC. Tambin es un acrnimo, significa Beginners All/purpose Symbolic Instruction Code. Se desarroll en 1964 y como su nombre lo sugiere, es un lenguaje fcil de aprender para los estudiantes y principiantes. Hasta hace algn tiempo, las computadoras tenan incluido un intrprete de BASIC en su software de fbrica. C . C se cre en 1972 como un lenguaje para hacer aplicaciones en el sistema operativo UNIX. A partir de C, se han desarrollado otros lenguajes como C++, C#, C-objetivo, incluso Java, que son lenguajes actuales y ampliamente difundidos y utilizados. Ejercicios: 1) Escribe una descripcin corta de los siguientes lenguajes: LISP, PROLOG, ADA, OBERON, RUBY y SMALLTALK. 2) Elabora una tabla comparativa, que describa los nombres de las personas que crearon el lenguaje y las fechas de creacin de todos los lenguajes que se mencionaron en el texto, incluyendo los del punto anterior. 3) Menciona, para cada lenguaje de los anteriores, qu tipo de aplicacin es aconsejable hacer con cada lenguaje de computadora. Los lenguajes de alto nivel se parecen ms al lenguaje natural que los lenguajes ensambladores, porque utilizan palabras como el lenguaje cotidiano (usualmente en ingls) como BEGIN, END o IF. Los compiladores y los intrpretes se utilizan para convertir programas de alto nivel a bajo nivel. Cada instruccin de alto nivel se traduce varias instrucciones de

29

mailxmail - Cursos para compartir lo que sabes


nivel a bajo nivel. Cada instruccin de alto nivel se traduce varias instrucciones de bajo nivel. Los lenguajes de cuarta generacin (4GLs) tienen comandos que se parecen mucho ms a los lenguajes humanos. SQL (Structured Query Language) es un lenguaje de cuarta generacin. La mayora de los lenguajes de cuarta generacin se utilizan para manipular bases de datos. Por ejemplo, un comando en SQL como el siguiente...

... se puede utilizar (junto con otros comandos) para obtener informacin de los empleados en una base de datos. Los lenguajes de cuarta generacin son ms fciles de aprender y de manipular, pero son ms difciles de interpretar por la computadora. La computadora requiere de ms recursos para traducir una instruccin en lenguaje de cuarta generacin. Cada lenguaje de programacin tiene sus ventajas y desventajas. Por ejemplo, FORTRAN es muy bueno para hacer clculos numricos, pero es muy malo para hacer formatos de texto en la pantalla; mientras que COBOL es muy bueno para dar formatos de texto en la pantalla, pero muy malo para hacer cmputo numrico. Si queremos ser programadores profesionales, probablemente deberemos aprender varios lenguajes de programacin, porque actualmente los entornos de programacin permiten mezclar cdigo de diferentes lenguajes.

30

mailxmail - Cursos para compartir lo que sabes

16. Programacin. Tendencias. Programacin estructurada (1/2)


B. Tendencias de la programacin En 1966, dos matemticos publicaron un artculo donde se mostraba que era posible hacer cualquier programa utilizando nicamente tres tipos de estructuras de control: 1) Secuencias 2) Opcionales 3) Repeticiones El documento se tradujo del italiano (el idioma original del artculo) al ingls, y se public en la revista Communications of the ACM, donde redujeron a dos las reglas de formacin necesarias para crear cualquier algoritmo [3]. ............................................................ Ejercicios: 1) Cules son esas dos reglas de formacin? ............................................................ El artculo proporcion una tendencia de programacin que se conoce como programacin estructurada. 1) Programacin estructurada: En la programacin estructurada, los programas grandes son difciles de comprender si tienen un solo inicio y siguen aplicando operaciones tras operaciones hasta un solo final, de modo que la programacin estructurada ofrece la alternativa de hacer mdulos de programas ms pequeos, que en conjunto puedan dar solucin al problema. De modo que la programacin estructurada incluye Un desarrollo TOP-DOWN Un diseo Modular El desarrollo TOP-DOWN establece dividir el problema en componentes de tamao ms manejable, resultando en programas ms precisos y confiables. El diseo modular agrupa las tareas que desarrollan la misma funcin. Por ejemplo. Un clculo de inters general podra ocupar un mdulo en un programa; cualquier otra parte del programa puede utilizar ese mdulo, as que se puede llamar en varias ocasiones por otros mdulos. El diseo modular de un programa se complementa con el desarrollo top-down porque los subpasos en el proceso del desarrollo en realidad es hacer ms mdulos en el programa (Figura 18).

31

mailxmail - Cursos para compartir lo que sabes

Figura. 18. Diseo modular con filosofa Top-Down para el desarrollo del Software.

32

mailxmail - Cursos para compartir lo que sabes

17. Programacin. Tendencias. Programacin estructurada (2/2)


Los lenguajes de tercera generacin, como Pascal, C y BASIC, siguen la filosofa de la programacin estructurada, porque son lenguajes procedurales que necesitan hacer instrucciones paso por paso para llegar al resultado deseado. Los lenguajes de cuarta generacin se desarrollaron desde finales de la dcada de 1970. Cada una de sus instrucciones genera aproximadamente unas 50 instrucciones en lenguaje mquina. Los programas escritos utilizando esos lenguajes tambin se pueden corregir rpidamente. Esta clase de lenguajes (4GL) no son procedurales, porque el programador solicita un resultado sin proporcionar los pasos necesarios para obtenerlo. Por ejemplo, esta solicitud de SQL despliega los Productos de la base de datos Inventario. GET Productos FROM Inventario

Figura. 19. Sistema de Base de Datos La mayora de los lenguajes de cuarta generacin se utilizan para acceder a las bases de datos, quienes utilizan los siguientes componentes (figura 19): Sistema manejador de Bases de Datos. (DBMS) El manejador de la base de datos se asegura que se pueda leer de la base de datos y escribir en la base de datos de manera adecuada y sin confusiones. Lenguaje de consulta de la Bases de Datos. El lenguaje de consulta de la base de datos permite los usuarios especificar precisamente qu informacin desean de la base de datos. Generador de pantallas. El generador de pantallas proporciona una interfaz

33

mailxmail - Cursos para compartir lo que sabes


grfica que rpidamente genera tanto las entradas del usuario como las salidas para el usuario. Generador de reportes. El generador de reportes crea reportes personalizados en segundos. Los reportes se deben mostrar haciendo nfasis en la informacin necesaria y solicitada por el usuario. Los lenguajes de cuarta generacin son orientados al usuario final, en otras palabras, tienen una interfaz con el usuario muy amigable, de modo que las personas con pocos o nulos conocimientos en lenguajes de programacin pueda aprenderlos fcilmente. Como la principal aplicacin de los lenguajes de cuarta generacin es la interaccin con las bases de datos, son buenos para extraer datos y presentarlos en un formato especfico; sin embargo, tienen compiladores que son muy grandes y lentos, comparados con los compiladores de los lenguajes de tercera generacin. Como ejemplos de los sistemas manejadores de bases de datos (DBMSs) que utilizan lenguajes de cuarta generacin incluyen: Informix. Proporciona sistemas manejadores de bases de datos relacionales que corren en diversas plataformas UNix. Las bases de datos relacionales almacenan los datos en forma de tablas relacionadas. Son muy poderosas, porque los datos se pueden ver de diversas maneras, siempre atendiendo las necesidades especficas de cada clase de usuario. Oracle. Las bases de datos Oracle incluyeron el primer sistema manejador de bases de datos que incorporaron el lenguaje SQL y que se utilizaron en una amplia gama de plataformas. El lenguaje SQL (Structured Query Language) es el lenguaje de programacin estndar de la industria, y se utiliza para extraer informacin de las bases de datos que son alojadas en el sistema. Oracle ofrece una variedad de herramientas de desarrollo de aplicaciones que incluyen aplicaciones para ser ejecutadas en redes de computadoras.

34

mailxmail - Cursos para compartir lo que sabes

18. Programacin orientada a objetos - OOP


2) Programacin orientada a objetos: La programacin orientada a objetos (OOP) se convirti en la alternativa para la programacin estructurada a finales de la dcada de 1980. La OOP crea abstracciones de los objetos del mundo real en la computadora.

Figura. 20. Esquema de un objeto. Tiene al interior las propiedades (atributos) y para acceder a ellos se hace por medio de las operaciones (mtodos). Cada objeto tiene un conjunto de propiedades y operaciones - o mtodos asociados con l (figura 20. Por ejemplo, el objeto reloj puede tener las propiedades: horas, minutos, segundos y los mtodos poneTiempo, tiempoActual. Las propiedades horas, minutos y segundos se pueden manipular solo por medio de los mtodos. Los programas orientados a objetos son modulares. Los programas modulares son fciles de corregir. La tendencia actual es la programacin orientada a objetos, considerando algunas extensiones a esta filosofa de programacin. Como ejemplos de lenguajes orientados a objetos, incluyen: Smaltalk. Smaltalk fue el primer lenguaje de programacin orientado a objetos, ofrece muchas libertades a los programadores, de modo que los programadores deben tener mucho cuidado al manejar la memoria del sistema. Java. Fue creado por la compaa Sun Microsystems, Java es un lenguaje orientado a objetos similar a C++ pero han mejorado el lenguaje con caractersticas que evitan errores de programacin comunes, como el manejo de la memoria, donde la responsabilidad recae en un subsistema que se llama recolector de basura. C + + . C + + es un superconjunto del lenguaje C. Generalmente es considerado uno de los mejores lenguajes para hacer aplicaciones a gran escala. C # . Fue desarrollado por Microsoft. C# (que se pronuncia C-sharp) es un hbrido de C y C++ que fue desarrollado para competir con Java y con el objetivo de mejorar la productividad en el desarrollo de aplicaciones WEB, manteniendo la flexibilidad y el poder de C y C++.

35

mailxmail - Cursos para compartir lo que sabes


Los lenguajes de alto nivel tienen algunas ventajas sobre los lenguajes de bajo nivel [4]: 1) Son ms legibles: Un buen lenguaje de alto nivel, permitir que los programas se escriban de manera que recuerden descripciones tipo-idioma-comn, muy parecidos a los pseudocdigos. Si se programa cuidadosamente, se puede generar una documentacin autocontenida, que es una propiedad deseable cuando se considera que los programas se documentan para que otras personas lean y comprendan lo que se ha escrito. 2) Son ms portables: Actualmente, los lenguajes de programacin de alto nivel se estn volviendo ms capaces de ser utilizados en arquitecturas de computadoras diferentes, con ningn cambio; o bien al proporcionar el cdigo fuente y ser recompilado sin modificaciones. 3) Tienen estructura y orientacin de objetos: Este es un acuerdo general que empez con la programacin estructurada desde la dcada de 1960 y posteriormente con el movimiento a la programacin orientada a objetos en la dcada de 1990, de lo que result una gran mejora en la calidad y confiabilidad del cdigo. Los lenguajes de alto nivel se pueden disear para reforzar esos paradigmas. 4) Tienen mayor generalidad: La mayora de los lenguajes de alto nivel permiten la escritura de una amplia variedad de programas, para permitir al programador mezclar cdigo de diversos lenguajes para que su aplicacin sea mejor. 5) Brevedad: Los programas expresados en lenguajes de alto nivel usualmente son considerablemente ms cortos (en trminos del nmero de lneas de cdigo fuente) que los hechos en lenguajes de programacin de bajo nivel. 6) Verificacin de tipos: Siendo humano, un programador probablemente cometa muchos errores en el desarrollo de un programa de computadora. Muchos lenguajes de alto nivel - o al menos sus implementaciones - pueden, y deben, verificar los errores tanto en tiempo de compilacin como en tiempo de ejecucin.

36

mailxmail - Cursos para compartir lo que sabes

19. Principios de una buena programacin


C. Principios de una buena programacin Los programas de computadoras son tiles cuando se usan, a pesar de lo trivial que pueda sonar esta frase, involucra cuatro caractersticas importantes que deben tener los programas para que sean buenos programas y se puedan utilizar. Un buen programa es robusto, eficiente, utilizable y mantenible. Robusto. Decimos que un programa es robusto cuando es tolerante a las fallas. Podemos probar nuestro programa extensivamente para indicar las fallas que pudieran encontrar los usuarios. Sin embargo, debe haber un balance entre el costo de probar y la necesidad de manipular los errores. Generalmente no es posible probar un sistema para encontrar todas las fallas y hacer un programa que reaccione a cada una de estas fallas. Eficiente. Los programas deben usar de manera correcta los recursos del sistema en el cual se estn ejecutando. En un avin, por ejemplo, el tamao y el peso de una computadora es limitado. De modo que el software utilizado en esos sistemas debe estar restringido a la capacidad de memoria y a la velocidad del procesador utilizado. Los programas que desperdician memora y recursos del sistema, usualmente no sirven, porque cuando aumenta el volumen de datos, esos programas pueden ocasionar errores fatales. Un error fatal es aquel que hace detener la normal ejecucin de un programa, ocasionando en ciertos casos que se deba reiniciar el sistema completo. Utilizable. Los programas utilizables son aquellos que el usuario final encuentra fciles de operar. La utilizabilidad depende de algunos factores, como las formas para introducir los datos a la computadora, el diseo de los mens de opciones y la presentacin de la informacin. Los mensajes informativos y los archivos de ayuda mejoran la utilizabilidad. La documentacin del usuario offline como los manuales impresos, deben ser fciles de leer y de seguir en la operacin del sistema; asimismo, la ayuda en-lnea se debe distribuir y buscar ms fcilmente. Mantenible. Un programa mantenible involucra hacer cambios a un programa despus de haber sido implementado. Es posible que despus de un tiempo, el usuario ya no est completamente satisfecho con el sistema, entonces se debe modificar. La facilidad con que se puedan hacer esos cambios es lo que hace a un sistema mantenible. Un programador debe, entonces, estar familiarizado con la sintaxis del lenguaje de programacin en que fue creado el sistema. Una excelente recomendacin que es muy simple de aplicar para que nuestros programas seas claros y fciles de seguir, es utilizar identacin en la escritura del cdigo. Como ejemplo, notemos la diferencia entre estos dos segmentos de cdigo.

37

mailxmail - Cursos para compartir lo que sabes

Cuando los programas tienen cientos o miles de lneas de cdigo, la identacin - o la falta de ella - afectarn significativamente la legibilidad del programa. Tambin los comentarios incrementan la legibilidad de un programa. Todos los lenguajes de programacin tienen un modo de insertar texto que no se ejecuta como parte del programa, por ejemplo, C trata cualquier texto entre /* */ como un comentario.

Un esfuerzo que deberamos practicar, es escribir variables con un significado que nos haga recordar fcilmente el porqu existe tal variable. Los nombres para las variables, generalmente empiezan con una letra y pueden continuar con ms letras o con nmeros, y a veces tambin se permiten los guiones y muy pocos smbolos especiales. Estas reglas son muy generales y se permiten nombres como a23 para el nombre de una variable. Comparemos los siguientes dos fragmentos de cdigo en Pascal y notemos la legibilidad en cada uno de ellos.

Cualquier persona que lea este ltimo fragmento de cdigo, no sabra lo que

38

mailxmail - Cursos para compartir lo que sabes


significan los smbolos m, n s y e. Pero los ejemplos del cdigo con las variables con significado dan una mejor idea de lo que queremos expresar en el cdigo. A pesar de la recomendacin de elegir nombres con significado para las variables, se prefieren nombres cortos para las variables, veamos; el nombre de la variable salarioDeEmpleadosMensual es menos preferible que salarioMensual.

39

mailxmail - Cursos para compartir lo que sabes

20. Software. Ciclo de vida


D. Fases del ciclo de vida del software El software vara en complejidad dependiendo de lo que se requiere hacer. La mayora de los paquetes de software consisten de muchos mdulos, cada mdulo es responsable de ciertas tareas especficas. Para simplificar el desarrollo del software, se sigue una serie de pasos que se llaman el ciclo de vida del software, y que son seguidos durante el tiempo que un software existe (figura 21).

Figura. 21. Fases del desarrollo del software. Una vez que se concluye, prcticamente se inicia nuevamente al entender las modificaciones que deben hacerse. 1) Introduccin al ciclo de vida del software: Regularmente hay cinco pasos en el ciclo de vida del software: a) Entender el problema. En la primera fase del ciclo de vida del software, se enlistan las tareas que el software debe desarrollar, los problemas a ser resueltos, y en esta fase se estudian sus causas y efectos. La tarea especfica que se requiere del programa se deriva del establecimiento del problema, que es una descripcin concisa del problema en cuestin. El software debe proporcionar una solucin utilizable a este problema. b) Disear el programa. En la fase de diseo, el objetivo es conocer las relaciones entre los mdulos del programa, y garantizar que se cumplen cabalmente los requerimientos solicitados de una manera eficiente, lgica y completa. Los diseadores de software consideran los recursos de hardware y software disponibles para poder alcanzar su objetivo. Si se llega a la conclusin de que no es posible utilizar algn hardware o software, se planea utilizar una estrategia diferente. Primero se disea la estructura general del programa. Entonces el problema se divide en subproblemas en tareas ms y ms pequeas hasta que tengan un tamao manejable. c) Codificar el programa. Durante la fase de codificacin, el programa se escribe en un lenguaje de programacin. Hay muchos lenguajes de programacin, cada uno de ellos es especialista en algn tipo de problemas. Por ejemplo, FORTRAN es especialista en clculos numricos, mientras que LISP es especialista en problemas de inteligencia artificial y procesamiento simblico. El cdigo del programa debe

40

mailxmail - Cursos para compartir lo que sabes


desarrollar la tarea solicitada, y debe ser legible de modo que otros programadores lo puedan mantener. Los programas se escriben usualmente en mdulos separados, cada mdulo desarrolla alguna tarea especfica y debe funcionar independientemente y en relacin con el resto del programa. d) Probar el programa. Durante la fase de pruebas, el programa se ejecuta y se revisa. Las tareas deben ejecutarse sin errores en los resultados y tambin sin errores fatales. Los defectos en los programas se llaman bugs. Se examinan primero los mdulos de manera individual, en forma independientemente, luego, se prueba todo el programa para encontrar bugs que puedan ocurrir en la interaccin de los mdulos. Cuando se encuentra un bug, se asla la causa y se resuelve. Este proceso se llama depuracin. El programador se debe asegurar de al resolver un bug, no se crean otros ms en alguna otra parte del programa. e) Mantener el programa. Durante la fase de mantenimiento, de determina cualquier error y deficiencia en el programa, y se realizan cualquier accin para resolverla, mientras se preserva la integridad del programa. El uso de notas de diseo, cdigo bien documentado y variables entendibles, pueden ayudar al mantenimiento futuro del programa.

41

mailxmail - Cursos para compartir lo que sabes

21. Software. Desarrollo


2) Roles en el desarrollo del software: Una persona por s sola puede llevar o desarrollar los programas en cada etapa del desarrollo del software, pero usualmente esto es una excepcin, la mayora de los programas son grandes y complejos.

Figura. 22. Roles de las personas que trabajan en el desarrollo del software. Una compaa de software emplea, frecuentemente, diversos equipos, cada uno de ellos es responsable de una fase diferente en el desarrollo del software (figura 22). Un equipo de desarrollo de software, tpicamente est compuesto por varios programadores programadores, al menos un programador analista y al menos un analista de sistemas. Los programadores asistentes usualmente son programadores con poca experiencia. Estos no escriben nuevos programas, en lugar de esto, se dedican a desarrollar trabajos de mantenimiento acerca de otros programas. Cuando los programadores han adquirido ms experiencia, pueden hacer nuevos programas. Las especificaciones de esos programas ya deben estar analizadas y autorizadas. Los programadores experimentados Senior programmer dan las especificaciones del programa y escriben nuevos programas. Ellos no hacen tareas de mantenimiento, solo se dedican a generar nuevo cdigo. Un programador analista trabaja muy de cerca con los diseadores del programa. Adems de programar nuevo cdigo, los programadores analistas empiezan a aprender las tcnicas y los lineamientos del diseo de software. Un analista de sistemas es un intermediario entre el cliente y los programadores. Los clientes comunican sus necesidades a los analistas de sistemas (figura 23). Los analistas traducen esos requerimientos en diseos de programas y se lo comunican a los programadores, quienes hacen de hecho, la programacin.

42

mailxmail - Cursos para compartir lo que sabes

Figura. 23. En la fase de anlisis de requerimientos, los clientes y los analistas definen el propsito y capacidades del software.

43

mailxmail - Cursos para compartir lo que sabes

22. Programas. Desarrollo. Codificar un programa


III. DESARROLLO DE PROGRAMAS AL final de esta seccin, seremos capaces de describir cmo hace la computadora para poder ejecutar los programas, y cmo debemos escribirlos de modo que cometamos menos errores y al mismo tiempo que nuestros programas sean ms legibles y entendibles. A. Codificar un programa Escribir un programa involucra una serie de procesos separados. Ejercicio: 1 ) El proceso de escribir un programa involucra seis (6) pasos. Relaciona las columnas de los pasos en el orden adecuado.

Al escribir un programa, el programador debe completar satisfactoriamente cada uno de estos pasos: 1) Entender las especificaciones del programa. El programador debe entender cules son las entradas y cules son las salidas que se requieren del programa, adems del proceso lgico de los datos. 2) Disear el programa. Los diseadores de programas, utilizan herramientas de diseo, como el pseudocdigo o un diagrama de flujos estructurados. Estas herramientas detallan las tareas lgicas que el programa debe realizar. El programador debe analizar rigurosamente el diseo, para asegurarse de que ha entendido bien el resultado correcto esperado. 3) Codificar el programa. Un programador codifica el programa escribiendo en un lenguaje de programacin en particular. El cdigo se puede escribir primero en papel - como una recomendacin para los programadores principiantes - o se puede escribir en la computadora utilizando un editor. El programador revisa la lgica del cdigo y la sintaxis, para asegurarse de que todo est correcto. Esto lo pueden hacer manualmente, en lo que se conoce como prueba de escritorio. Una prueba de escritorio hace que se descubran algunos errores que se pueden corregir antes de que el cdigo sea compilado. Algunas veces, los programadores revisan el cdigo de otros programadores. Esto es una buena prctica de programacin y ocasiona que se revise el cdigo al menos dos veces en busca de posibles errores.

44

mailxmail - Cursos para compartir lo que sabes


4) Compilar el programa. Las computadoras pueden ejecutar programas en cdigo mquina nicamente. El proceso de traducir un cdigo hecho en un lenguaje de alto nivel en cdigo en lenguaje mquina se llama compilar, o interpretar el programa. Los programas que se encargan de compilar o de interpretar programas se llaman compiladores o intrpretes. Los compiladores se utilizan ms frecuentemente que los intrpretes. El cdigo que tiene errores no se puede compilar. El compilador genera un mensaje que nos indica que existe un error en el cdigo, y el programador debe arreglar ese error antes de tratar compilar el programa de nuevo. 5) Ejecutar el programa. Una vez que el programa no tiene errores puede ser ejecutado. Un programa que es interpretado, se ejecuta lnea por lnea hasta llegar al final del programa o hasta que se encuentre un error. 6) Depurar el programa. El programador revisa las salidas del programa para asegurarse de que son correctas. Puede ocurrir, sin embargo, que an cuando no existan errores de sintaxis, si existan errores en la lgica del programa, lo que podra ocasionar errores en la salida del programa, o errores que se encuentran al momento de estarse ejecutando el programa. Hay diferentes tipos de errores que se pueden cometer al escribir programas, desde los ms simples que se comenten al escribir mal algunas palabras, hasta los ms difciles de encontrar, que son aquellos en que tiene que ver un mal diseo del programa o errores en tiempo de ejecucin.

45

mailxmail - Cursos para compartir lo que sabes

23. Desarrollo de programas. Editores


B. Editores Los editores son aplicaciones de software que permiten a los programadores escribir el texto de los programas en la computadora. A diferencia de los procesadores de palabras, los editores no permiten algunas caractersticas de formato, es decir, no permiten justificar, centrar texto, ni tipos de letras ni otras caractersticas de formato de texto. En general hay dos tipos de editores: 1) Editores de lneas. Esta clase de editores fueron los precursores de los editores de pantalla completa. Permitan al programador editar una sola lnea a la vez. El programador debe especificar qu lnea se debe editar. Hay an dos editores de lneas que son populares: v i Es una abreviacin para visual. vi es un editor basado en UNIX. Edlin Es una contraccin de Edit lines. Edlin se puede utilizar en una plataforma de MS-DOS. 2) Editores de pantalla completa. Los editores de pantalla completa son ms fciles de usar que los editores de lneas, porque los programadores editan cualquier lnea en cualquier momento. Los editores de pantalla completa pueden proporcionar varias herramientas tiles para los programadores, por ejemplo: Mens de cortina. En los editores de pantalla completa pueden haber comandos para hacer alguna tarea especfica, estos comandos suelen ordenarse y agruparse en mens que se despliegan hacia abajo (como una cortina), de modo que el programador no tiene que aprenderlos de memoria. Integracin con compiladores e intrpretes. La integracin de los programas compiladores e intrpretes con editores, ofrece muchas ventajas para los programadores. Esto significa que el cdigo puede ser escrito, editado, compilado o interpretado, y ejecutado desde el mismo programa. Esto difiere de los editores de lneas, donde un programa por separado desarrolla cada funcin. Texto coloreado. Algunos editores pueden mostrar palabras especficas en un color particular para distinguirlas del resto del cdigo. Estas palabras se llaman palabras reservadas, por ejemplo begin en Pascal. As mismo, otro texto se puede colorear, por ejemplo los nmeros, las cadenas de caracteres y los comentarios, frecuentemente se identifican con otro color. Nmeros de lnea y de columna. Para los programadores es muy til saber el nmero de lnea y de columna en cada momento de la edicin, porque cuando el cdigo es revisado por el compilador, este devuelve una lista de errores (si los hubiera, y frecuentemente los hay) junto con el nmero de lnea en que se ha detectado.

46

mailxmail - Cursos para compartir lo que sabes


Texto autocompletado. Es una caracterstica que permite al programador empezar a escribir un comando, y el editor "se da cuenta" de qu comando se pretende escribir, entonces completa el comando y lo muestra marcado. Por ejemplo, si el programador escribe be, el editor puede completarlo con begin. Si la palabra no es el comando requerido, el programador sigue escribiendo sobre la zona marcada. Ejercicio: 1 ) Cul de los siguientes formatos crees que debes utilizar para grabar el cdigo de un programa, que se ha escrito en un procesador de palabras? a) Word97 b) RTF (Rich Text Format) c) Text only (ASCII) d) PDF (Portable Document File)

47

mailxmail - Cursos para compartir lo que sabes

24. Compiladores e intrpretes de programas


C. Compiladores e intrpretes Un archivo fuente es el que contiene el texto del cdigo del programa que ha sido escrito por el equipo de programadores. Las computadoras solamente pueden ejecutar instrucciones que estn en cdigo mquina, as que los programas en cdigo fuente no se pueden ejecutar directamente en la computadora. Un compilador debe, en primer lugar, convertir el archivo fuente en un archivo intermedio que se llama archivo objeto o archivo cdigo objeto (figura 24). El archivo objeto contiene una traduccin del cdigo del programa en lenguaje mquina, pero an no se considera un programa ejecutable. Una divisin comn para describir los compiladores, como menciona Torben AEgidius Mogensen en [5], es como se describe enseguida, aunque el orden puede cambiar, algunas fases se pueden combinar o dividir en otras fases o an otras fases se pueden insertar, pero en general, los compiladores siguen estas tareas: Anlisis lxico. Es la parte inicial de leer y analizar el cdigo fuente. El texto es ledo y dividido en tokens, cada uno de los cuales corresponde a un smbolo en el lenguaje de programacin, por ejemplo, el nombre de una variable, una palabra reservada o un nmero. Anlisis sintctico. En esta fase se toma una lista de tokens producida por el anlisis lxico y los acomoda en una estructura de rbol llamada rbol sintctico que refleja la estructura del programa. Esta fase tambin se llama parsing. Verificacin de tipos. En esta parte se analiza el rbol sintctico para determinar si el programa viola ciertos requerimientos de consistencia, es decir, si una variable se utiliza pero no se declara, o si se usa en un contexto que no tiene sentido por el tipo de variable, tal como un string para utilizar un valor booleano como una funcin apuntador. Generacin de cdigo intermedio. El programa se traduce a un lenguaje simple independiente de la mquina. Ubicacin de registros. Los nombres simblicos de las variables utilizadas en el cdigo intermedio se traducen a nmeros, cada uno de ellos corresponde a un registro en el cdigo mquina objetivo (de la mquina que va a ejecutar finalmente el programa). Generacin de cdigo mquina. El lenguaje intermedio se traduce al lenguaje ensamblador (una representacin textual de cdigo mquina) para una arquitectura de mquina especfica. Ensamblado y Enlazado. El cdigo en lenguaje ensamblador se traduce a una representacin binaria y se determina la direccin real de las variables, funciones, etc.

48

mailxmail - Cursos para compartir lo que sabes

Figura. 24. Historia de la compilacin de un programa, desde el cdigo fuente hasta el cdigo ejecutable. Un programa linker (enlazador), combina todos los mdulos en el archivo objeto para formar un archivo ejecutable (figura 24). Un archivo ejecutable s es un programa completo en s mismo, es decir, no requiere hacer referencia al cdigo fuente original. Esto significa que correr ms rpidamente, comparado con la ejecucin del mismo programa cuando an no es ejecutable. Un intrprete traduce un cdigo fuente en lenguaje mquina tambin. El intrprete difiere del compilador en que ejecuta cada orden una vez que se traduce. Este proceso puede hacer ms lenta la ejecucin del programa, as que los intrpretes se utilizan menos que los compiladores. Un intrprete es otra manera de implementar un lenguaje de programacin. La interpretacin comparte muchos aspectos con el compilador. Los anlisis lxico, sintctico y verificacin de tipos son exactamente los mismos que en un compilador. Pero en lugar de generar cdigo del rbol sintctico, el rbol sintctico se procesa directamente para evaluar expresiones y ejecutar sentencias, y as hasta terminar. Un intrprete puede necesitar evaluar la misma parte del rbol sintctico varias veces (por ejemplo cuando se hacen ciclos), por eso la interpretacin puede ser ms lenta que la ejecucin de un programa compilado. Pero escribir un intrprete es ms fcil de mover a una mquina diferente, as que para aplicaciones donde la velocidad no importa, lo mejor es utilizar un intrprete. Es muy til sabe cmo se hace un intrprete o un compilador, porque esto permite a los programadores tener una idea de lo que hacen los programas de alto nivel, lo que a su vez, ayudar a los programadores para crear cdigo ms eficiente. Otras razones. Los errores que devuelven los compiladores proporcionan una manera fcil de entender el cdigo fuente; adems, se conoce la diferencia entre errores lxicos, sintcticos, errores de tipos, y as.

49

mailxmail - Cursos para compartir lo que sabes

50

mailxmail - Cursos para compartir lo que sabes

25. Depuradores de programas. Errores de cdigo y comentarios


D. Depuradores, errores de cdigo y comentarios Depurar el cdigo significa quitar los errores. Todos los errores deben ser eliminados antes de que se diga que se ha terminado de hacer un programa. Los dos tipos principales de errores son sintcticos y lgicos. Errores de sintaxis. Los errores de sintaxis, o sintcticos, ocurren cuando el programador escribe cdigo que no va de acuerdo a las reglas de escritura del lenguaje de programacin. Son como los errores gramaticales en el lenguaje comn. Hasta que un cdigo fuente no tenga errores de sintaxis, no se puede traducir en cdigo mquina. Errores lgicos. Los errores lgicos ocurren a causa de un mal diseo del programa. Puede ocurrir que una lnea de cdigo observe todas las reglas sintcticas del lenguaje, pero el cdigo tenga una lgica equivocada. Los errores lgicos son menos obvios que los errores sintcticos, de modo que los programas pueden ser compilados o interpretados sin reportar este tipo de error. Los errores se descubren usualmente cuando el programa est siendo ejecutado y se estudia la salida. Un debugger ejecuta un programa lnea por lnea para que el programador pueda examinar paso a paso, la ejecucin de su programa, con el fin de encontrar los errores lgicos (figura 25).

Figura. 25. Un debugger auxilia al programador para encontrar errores lgicos en el cdigo fuente. El cdigo debe ser legible y entendible, para que pueda ser mantenido. Los comentarios se pueden escribir en el cdigo para asegurarse que cumple estos requisitos. Los comentarios se usan para proporcionar notas explicatorias para el programador

51

mailxmail - Cursos para compartir lo que sabes


acerca de lo que hace alguna funcin en particular, o bien para especificar la utilidad de alguna parte del cdigo, o especificar el tipo y funcin de las variables utilizadas. Cada lenguaje de programacin codifica los comentarios de un modo en particular, hay bsicamente dos clases de comentarios: Los comentarios de una sola lnea. Esta clase de comentarios requieren una marca especial para que el compilador o el intrprete sepa que lo que sigue despus de la marca y hasta el final de la lnea no debe tomarse en cuenta para efectos de compilacin. En el lenguaje FORTRAN, los comentarios de una sola lnea empiezan con una letra C, solamente si se escribe en la primera columna del texto, en otras versiones la marca es un !. En C, podemos escribir un comentario de una sola lnea con \\. Los comentarios de bloque. Permiten escribir ms de una lnea en forma de comentario, esto es til cuando deseamos dar una breve explicacin del uso de alguna parte del cdigo sin tener que comentar cada lnea. En C, es posible crear un bloque de cdigo empezando con la marca \* y terminando el bloque con la marca *\

52

mailxmail - Cursos para compartir lo que sabes

26. Algoritmo. Instrucciones precisas


IV. INTRODUCCIN A LOS ALGORITMOS UN algoritmo es una secuencia finita de pasos bien determinados que sirven para resolver un problema [6]. Los algoritmos toman datos de entrada, los procesan de acuerdo al conjunto de instrucciones, y generan una salida. Se dice que la palabra algoritmo proviene del nombre del matemtico persa Muhammad ibn Ms al-Khwrizm (figura 26), quien escribi un tratado llamado Sobre clculos con numerales hinds.

Figura. 26. Muhammad ibn Ms al-Khwrizm. 780 D.C. - 850 D.C. aprox. A. Los algoritmos deben contener instrucciones precisas En ocasiones se suele mostrar cmo funciona un algoritmo con la idea del proceso para crear un pastel, en trminos generales si es correcto, pero en trminos especficos no lo es porque generalmente, una receta involucra pasos que no son bien determinados. Una receta para crear un pastel puede considerarse un algoritmo porque es un conjunto de pasos (aunque no necesariamente son bien determinados), donde hay algunos elementos de entrada, que son los ingredientes, un procedimiento que es la manera de hacerlo segn la receta y un producto de salida, que es el pastel mismo. El problema define la salida deseada, que a su vez, determina las entradas y las instrucciones. Por ejemplo, al decidir qu tipo de pastel queremos, debemos determinar qu ingredientes necesitamos y las instrucciones a seguir. Supongamos que decidimos escribir un algoritmo para hervir agua. La entrada es la cantidad de agua a cualquier temperatura por debajo del punto de ebullicin y la salida es el agua hirviendo. Un algoritmo debe proporcionar la salida correcta para cualquier condicin de los datos de entrada. Ejercicio: Ordene los siguientes pasos en orden de prioridad para resolver el problema de hervir agua.

53

mailxmail - Cursos para compartir lo que sabes

Sin duda, podemos escribir los algoritmos en espaol. Para producir resultados consistentes, el lenguaje que usemos debe estar libre de ambigedades. Si decimos algo como: Verificar que la olla tenga suficiente agua, es una frase ambigua, porque para diferentes personas puede significar cosas diferentes la frase suficiente agua. Es preferible decir algo como: Verificar que la olla tenga al menos un cuarto de su capacidad de agua, porque se define qu es lo que significa suficiente. En este siguiente ejemplo debemos incluir un paso para llenar la olla con agua bajo condiciones especficas. -Verificar que la olla tenga al menos 1 cuarto de su capacidad de agua. -Si la olla tiene menos de 1 cuarto de su capacidad de agua, Y agregamos las instrucciones para poner la olla en la estufa y para encender la estufa. -Poner la olla en la hornilla de la estufa -Encender la hornilla de la estufa Un algoritmo debe tener bien claro un punto final, de modo que cuando la entrada sea procesada y la salida deseada se alcance, el proceso termine. Agregaremos entonces la instruccin final para terminar el algoritmo -Cuando el agua este hirviendo, apagar la estufa.

54

mailxmail - Cursos para compartir lo que sabes

27. Diseo Top-Down


B. Diseo Top-Down El diseo Top-Down fue promovido en la dcada de 1970 por el investigador de IBM Harlan Mills y Nickaus Wirth. Mills desarroll conceptos de programacin estructurada para utilizarlos y probarlos en un proyecto de 1969 que tena como objetivo automatizar algunos procedimientos del peridico New York Times. El desarrollo de este proyecto hizo que se dispersara y se ampliara la idea de hacer los programas con esta filosofa de trabajo al resto de los desarrolladores de IBM, as como al resto de la industria del software. Por su parte, Nicklaus Wirth, desarroll entre otros lenguajes, el lenguaje de programacin Pascal, escribi un artculo muy importante acerca del Desarrollo de programas por medio de refinamiento de pasos. Esta idea de disear programas permaneci como principal corriente de desarrollo hasta fines de la dcada de 1980, cuando fue desplazada por la programacin orientada a objetos, sin embargo contina siendo una muy importante ayuda para el desarrollo de los mtodos en los la programacin orientada a objetos [7].

Figura. 27. Niclaus Wirth (izq.) y Harlan D. Mills (der.) fueron los primeros promotores del diseo Top-Down en la dcada de 1970. La solucin a los problemas computacionales puede llegar a se muy complicada y compleja. Cuando los programas son de miles de lneas, o componerse de diversos archivos de cdigo, es imposible mantener todos los detalles del programa en mente cuando se desarrolla un algoritmo. El diseo top-down es una herramienta que presenta en primer lugar una solucin a un problema general utilizando tres o cuatro pasos solamente. Cada uno de esos pasos en la primera solucin se dividen en otros subpasos. Este proceso se repite varias veces, en cada iteracin se produce una solucin ms detallada al problema original. Cuando los pasos ya no se pueden subdividir, el algoritmo ha terminado. El diseo top-down tambin se conoce comodescomposicin funcional o refinamiento de pasos. Ejercicio: De la siguiente lista de actividades, cul crees que est orientada al diseo Top-down? 1) Empezar con los detalles 2) Empezar con el problema en general 3) Considerar el problema general y los detalles al mismo tiempo El diseo top-down automticamente produce mdulos en un algoritmo.

55

mailxmail - Cursos para compartir lo que sabes


Recordemos que los mdulos son grupos de instrucciones que desarrollan funciones especficas. Supongamos que queremos escribir un algoritmo que imprima facturas, en primer lugar vamos a identificar esa tarea en la primera iteracin den diseo top-down. El paso calcular el monto total de la factura lo podemos redefinir como.

Lo que nos ayuda a definir los mdulos de nuestro algoritmo en: Mdulo 1. Obtener detalles del cliente Mdulo 2. Obtener detalles de todas las ordenes de ese cliente Mdulo 3. Calcular el monto total de las facturas del cliente Mdulo 4. Agregar el 5% de inters a las facturas de hace 1 mes Mdulo 5. Agregar el 10% de inters a las facturas anteriores a 1 mes Mdulo 6. Sumar el monto de las facturas con el total de los intereses Mdulo 7. Imprimir el monto total Cada mdulo debe ser tratado en la misma manera que el problema general, el diseo top-down, hace que el problema general se convierta en problemas ms especficos y en general ms fciles de resolver.

56

mailxmail - Cursos para compartir lo que sabes

28. Algoritmo. Pseudocdigo


C. Pseudocdigo Ejercicio: El pseudocdigo es til cuando queremos escribir algoritmos de una manera definida y consistente. Cul de las siguientes aseveraciones crees que es verdadera para los pseudocdigos? 1) Pueden correr como un programa por s mismos 2) Se deben sujetar a estndares predefinidos 3) No existe un estndar absoluto para los pseudocdigos En realidad no existe un estndar para los pseudocdigos, pero podemos seguir las siguientes recomendaciones. Utilizar espaol simple. Escribir cada instruccin en una lnea separada. Utilizar identacin donde sea apropiado. Proporcionar solamente un punto de entrada y un punto de salida para un algoritmo. Agrupar las instrucciones en mdulos. Podemos hacer que nuestros pseudocdigos sean claros y concisos utilizando palabras comunes en espaol. La sentencia Encontrar la diferencia entre los nmeros A y B, se puede expresar de manera ms clara como Diferencia:= A - B. Cuando tengamos mltiples instrucciones en una sola lnea, ocasiona que nuestro algoritmo sea ms difcil de seguir.

Pero si escribimos una sentencia en cada lnea, el cdigo va a ser ms legible.

Si la secuencia que llevan las instrucciones se desarrolla dentro de una estructura de control como el estatuto SI-ENTONCES, debemos identarlo para tener mayor claridad. Cuando la ejecucin de la secuencia de instrucciones dentro del bloque de la estructura de control termina, la identacin tambin termina, y vuelve a tener el nivel anterior.

57

mailxmail - Cursos para compartir lo que sabes


En algunas ocasiones, un bloque de instrucciones se debe ejecutar varias veces en diferentes puntos en el algoritmo, en este caso, las instrucciones se deben agrupar en un mdulo con su propio nombre. Si deseamos reutilizar el cdigo que hemos escrito, para poder ejecutar las instrucciones que estn en ese segmento de cdigo tantas veces como sea necesario, debemos poner esas instrucciones en un mdulo por separado y llamarlo cuando se requiera. El pseudocdigo no es un lenguaje de programacin - no puede se ejecutado. Solamente es una herramienta de diseo de programas que es muy til para planear nuestro cdigo.

58

mailxmail - Cursos para compartir lo que sabes

29. Algoritmo. Trabajando con las entradas


D. Trabajando con las entradas Para hacer las operaciones bsicas en la computadora, es necesario conocer algunas convenciones especficas del lenguaje para codificar programas. Ejercicio: Las computadoras pueden recibir los datos de entrada de diferentes fuentes tales como un archivo o un mdem. Cules de las siguientes sentencias piensas que se deberan utilizar para codificar la entrada de datos? 1 ) obtener 2 ) enviar 3 ) leer 4 ) formatear Las palabras obtener y leer son sentencias que indican la entrada de datos. Podemos utilizar la sentencia obtener para adquirir un dato mediante el teclado, mientras que leer lo preferimos utilizar para leer datos de cualquier otra fuente, como un archivo almacenado en el disco duro. De manera similar, las computadoras pueden devolver la informacin y desplegarla en el monitor, o escribirla en un archivo o hacia cualquier otro dispositivo de salida de datos. Para indicar que un dato se debe desplegar en la pantalla del monitor, podemos utilizar sentencias como poner, desplegar o salida, pero preferimos desplegar. Y utilizaremos la sentencia escribir para almacenar datos en un archivo que se va a grabar en el disco duro. En las sentencias de los pseudocdigos, un sustantivo se utiliza para establecer un dato de entrada o de salida. Para asignar valores, podemos utilizar palabras como inicializar, guardar o almacenar, pero vamos a utilizar SEA Por ejemplo, el comando SEA total EN 10, que nos indica que debemos considerar que el identificador total debe tener el valor inicial de 10. Podemos utilizar una variable para almacenar un dato de entrada. Para hacer esto, usualmente utilizamos una orden como obtener total, que asignar el valor que el usuario teclee en su teclado y lo debe asignar a la variable total. Una vez procesado el dato, podemos conocer el resultado en la salida del pseudocdigo, con una orden como imprimir total, que mostrar el valor de salida que ha sido almacenado en la variable total , y lo mandar a la impresora, al monitor o hacia algn dispositivo de salida para su impresin. Una convencin muy til es encerrar texto entre comillas simples, lo que nos indicar que la secuencia de smbolos que estn entre comillas simples, se debe considerar como una palabra y no como una variable o palabra reservada. Por

59

mailxmail - Cursos para compartir lo que sabes


ejemplo, con el cdigo imprimir total debemos entender que la impresora debe imprimir la palabra total, y no algn valor asignado a alguna variable total. Las operaciones aritmticas son muy importantes en las operaciones de la computadora. En pseudocdigo, podemos utilizar los smbolos convencionales para describir las operaciones aritmticas.

60

mailxmail - Cursos para compartir lo que sabes

30. Igualdad y asignacin de algoritmo


1) Igualdad y asignacin: Haremos una mencin especial al smbolo =, porque en muchos lenguajes de programacin es importante hacer diferencia entre el significado del smbolo. Empezaremos por poner un ejemplo para ver el problema que encierra este smbolo. Supongamos que en el cdigo del programa tenemos las siguientes lneas.

En la lnea 2, el valor asignado a la variable a es 1, de modo que en adelante, se puede sustituir la ocurrencia de la variable a por la constante 1, a menos que exista otra orden que seale lo contrario. El problema se presenta de inmediato, porque en la lnea 3 hay una pregunta, que solicita el valor de a, pero como hemos utilizado el smbolo = para asignar valores a variables, en realidad, lo que debemos pensar es que en la lnea 3 del pseudocdigo, estamos asignando el nuevo valor 5 a la variable a, lo que ocasionar errores lgicos en la ejecucin del programa. Es por esta razn que utilizaremos diferentes smbolos para describir las diferentes situaciones respecto a la igualdad. Si se trata de una igualdad de tipo asignacin de valores, utilizaremos :=, como en variable := nuevoValor. Si se trata de una igualdad lgica, en la que se puede obtener un valor que sea verdadero o falso, entonces debemos escribirlo como =, como en variable = valorComparado. As, el pseudocdigo anterior puede ser reescrito como:

Es importante aclarar que lo expuesto anteriormente acerca del pseudocdigo, son convencion convencionalismos que no se deben tomar como un estndar ni mucho menos,

61

mailxmail - Cursos para compartir lo que sabes


convencionalismos que no se deben tomar como un estndar ni mucho menos, simplemente es una manera un poco ms organizada de plasmar las ideas, con el fin de causar menos confusiones al desarrollar programas de computadora.

62

mailxmail - Cursos para compartir lo que sabes

31. Algoritmo. Construccin. La orden de GOTO (1/2)


V. CONSTRUCCIN DE UN ALGORITMO En esta seccin aprenderemos a describir la orden GOTO, el teorema de la Estructura, y cmo escribir un algoritmo. A. La orden GOTO En el diseo de los lenguajes de programacin, la orden GOTO ha sido quiz la que ha causado ms discusiones. Antes de que la programacin estructurada fuera desarrollada a finales de la dcada de 1960, los programadores utilizaban la orden GOTO para transferir el control de una parte del programa a otra, en lugar de que el control contine en la siguiente lnea de cdigo. A pesar de la llegada de la programacin estructurada, en lenguajes como Pascal, se conserv la orden GOTO, posiblemente por motivos histricos, o para permitir que los programadores "de la vieja guardia" pudieran hacer la transicin de su forma de programar de una manera ms suave. Para utilizar la orden GOTO, veamos el siguiente segmento de programa, en pseudocdigo. Listing 1. Segmento de cdigo utilizando la orden GOTO.

La figura 28 muestra de manera esquemtica el flujo del control del programa. Vemos que en la lnea 103 ocasiona que el control se transfiera a la lnea 107, ocasionando un posible error lgico.

Figura. 28. Esquema del flujo de instrucciones utilizando GOTO, basado en el ejemplo del listado 1

63

mailxmail - Cursos para compartir lo que sabes


El problema con la orden GOTO, es que puede ocasionar que el programa transfiera el control a direcciones ms adelante y ms hacia atrs sin ninguna restriccin, y como frecuentemente sucede, la lectura y entendimiento del programa se complica a medida que el cdigo crece. Esta caracterstica del flujo del control se conoce como cdigo espagueti.

64

mailxmail - Cursos para compartir lo que sabes

32. Algoritmo. Construccin. La orden de GOTO (2/2)


Supongamos que queremos hacer un programa donde el usuario proporcione su edad, y el sistema imprima un cierto mensaje que debe ser ledo slo por las personas mayores de 18 aos, de modo que si el usuario ingresa su edad y es menor o igual a 18, entonces debe aparecer el mensaje de advertencia y terminar el programa; si el usuario ingresa una edad mayor de 18, entonces el programa imprime otro mensaje y termina el programa. Utilizando la orden GOTO, podemos solucionar este problema del siguiente modo. Listing 2. Ejemplo del uso de la orden GOTO para modelar la orden si-entonces.

Ahora, veamos el siguiente cdigo. Se trata del mismo problema, pero desde un punto de vista estructurado, sin la orden GOTO.

Figura. 29. Esquema del flujo de instrucciones utilizando GOTO, basado en el ejemplo del listado 3. Los esquemas (a) y (b) describen el mismo flujo de rdenes, es claro que la forma (b) es ms entendible que (a). Listing 3. Ejemplo de la orden si-entonces-enOtroCaso desde un punto de vista estructurado.

65

mailxmail - Cursos para compartir lo que sabes

Aunque el cdigo 3 tiene ms lneas que el cdigo 2, es ms legible y se entiende mejor. La lgica y el resultado de ambos programas es el mismo (figura 29), pero en el punto de vista estructurado es ms fcil seguir la lgica del programa.

66

mailxmail - Cursos para compartir lo que sabes

33. Teorema de la estructura. Construccin (1/2)


B. Introduccin al Teorema de la Estructura En 1966, los matemticos Bhm y Jacopini publicaron un artculo donde se mencion lo que ahora conocemos como el Teorema de la Estructura [3]. El Teorema de la Estructura muestra cmo cualquier programa se puede escribir utilizando tres estructuras de control: Secuencias. Un programa de computadora ejecuta una lista de instrucciones una sola vez. Las instrucciones se ejecutan en la secuencia en la que aparecen, y el programa no salta a ningn lado ni se repite ninguna de las instrucciones. Seleccin. La seleccin implica que es posible elegir entre algunas opciones, que dependen del valor de una condicin especificada por el programador. Repeticin. La repeticin ejecuta por varias veces una seccin de cdigo mientras que cierta condicin permanece siendo verdadera. Posteriormente, los mismos autores, mencionan que es posible utilizar solamente dos tipos de estructuras para hacer cualquier otro programa, y es que una combinacin de secuencias y seleccin, puede crear una repeticin. En muchos lenguajes de programacin hay estructuras de seleccin, en particular la estructura SI-ENTONCES-ENOTROCASO, que corresponde a la estructura if-then-else en el lenguaje Pascal, o IFELSE en lenguaje de NetLogo, o alguna similar en otros lenguajes. Tambin, en la mayora de los lenguajes estructurados, el mbito de las estructuras de control est restringido por smbolos o palabras clave, por ejemplo el uso de llaves en lenguajes como C { y }, o palabras reservadas como Begin y END. En el lenguaje de pseudocdigo que estamos utilizando vamos a emplear varios pares de palabras, como ENTONCES-FINENTONCES, ENOTROCASO-FINENOTROCASO o EMPIEZA-TERMINA. Ejercicio: En este ejemplo, la seleccin se hace en trminos del valor que pueda tener la variable edad. De acuerdo al siguiente cdigo, qu mensaje de texto piensas que se debe imprimir si el valor de la variable edad es igual a 18?

1) Se van a imprimir ambos mensajes

67

mailxmail - Cursos para compartir lo que sabes


2) Ninguno de los mensajes 3) El primer mensaje 4) El segundo mensaje En una orden de opcin con la estructura SI-ENTONCES-ENOTROCASO, cuando la condicin de decisin adquiere un valor falso, se ejecuta la segunda parte de la condicin, es decir, la parte ENOTROCASO.

68

mailxmail - Cursos para compartir lo que sabes

34. Teorema de la estructura. Construccin (2/2)


1) Acerca de la estructura de repeticin: Una repeticin ejecuta un segmento de cdigo por ms de una ocasin, si se cumplen las condiciones requeridas. Podemos crear una orden de repeticin utilizando la sentencia Mientras... FINMIENTRAS. La orden MIENTRAS se utiliza para empezar un bloque que debe ser repetido. El bloque termina con la marca FINMIENTRAS. Veamos el siguiente ejemplo. Listing 4. Ejemplo de la orden mientras, se ejecuta un segmento de cdigo mientras una condicin sea verdadera.

Figura. 30. Diagrama que muestra el flujo del control del programa con una estructura IENTRAS...FINMIENTRAS. El listado 4 muestra un ejemplo de una repeticin que (entre otras cosas) imprime el nmero de boleto que se ha vendido, pensando en que el programa puede ser utilizado en cualquier clase de taquilla que venda boletos y tenga un tope de 100 boletos para vender. Es importante mencionar que para entrar a un ciclo como el del ejemplo del listado 4, es necesario tener el control de cundo se descumplir la condicin. En este ejemplo, se inicializa una variable tope-vendidos en 100, antes de entrar al ciclo. Si omitimos esta orden, dependiendo del lenguaje de implementacin pueden suceder dos cosas: 1 ) El sistema inicializa automticamente la variable en 0, de modo que el ciclo nunca va a terminar, pues siempre la variable b-vendido ser igual o mayor que 0, pero nunca menor que 0. 2 ) El sistema trata de interpretar el contenido actual de la memoria alojado en esa variable en ese momento. Esto puede ocasionar resultados inesperados, ocasionando errores lgicos. Tambin es importante que en alguna parte del segmento que ser repetido,

69

mailxmail - Cursos para compartir lo que sabes


actualicemos alguna variable, de modo que eventualmente la condicin evaluada en cada ciclo resulte en un valor falso. En el caso del listado 4, la variable que se actualiza en cada ciclo se encuentra en la lnea 207.

70

mailxmail - Cursos para compartir lo que sabes

35. Algoritmo. Construccin. Definir un problema


C. Cmo definir un problema Antes de escribir el cdigo de un programa para resolver un problema, debemos entender perfectamente el problema que se pretende resolver. Un problema normalmente se presenta en forma de requerimientos o de rdenes. Ejercicio: Marca los tres elementos de un algoritmo 1) 2) 3) 4) 5) [ ] Datos de entrada [ ] Preguntas [ ] Datos de salida [ ] Procesos [ ] Requerimientos

Las opciones 1,3 y 4 son correctas. Los algoritmos se componen de entrada de datos, los cuales se procesan y se obtienen datos de salida. Los requerimientos se utilizan para disear el programa, y las preguntas son una manera de puntualizar los requerimientos, o bien de especificar qu clase de datos de entrada se requieren. Las rdenes se dan en forma verbal, como calcular, ordenar, encontrar, imprimir. Estas rdenes se utilizan para transformar los datos de entrada en datos de salida. Para identificar los datos de entrada o de salida, utilizamos sustantivos, adjetivos y adverbios. Una vez que hemos identificado todos los elementos de un problema, normalmente describirnos las entradas y las salidas utilizando una tabla de definiciones o tabla entrada-procesosalida. La tabla tiene tres columnas - Entrada, Proceso y Salida. Podemos utilizar la tabla de definiciones para escribir un algoritmo - sus procesos son las rdenes en el algoritmo. Y los elementos de entrada y salida se convierten en los argumentos de las rdenes. En el listado 4 de la pgina 22, la lnea 204, el verbo es obtener y el objeto es datos-de-client datos-de-cliente. Ejercicio: Deseamos hacer un programa para calcular la velocidad a la cual debe manejar un piloto de rally para cubrir cierta distancia dada en un tiempo requerido. Identifica los elementos de entrada del problema. 1) 2) 3) 4) [ [ [ [ ] ] ] ] El sustantivo tiempo. El sustantivo velocidad. El sustantivo distancia. El verbo calcular.

Los sustantivos distancia y tiempo son los elementos de entrada del problema, el sustantivo velocidad es el elemento de salida del problema, y el verbo calcular es el proceso del problema que calcula el valor de la velocidad en base a la distancia y al

71

mailxmail - Cursos para compartir lo que sabes


tiempo solicitados. Para cualquier elemento de entrada en el problema, debe haber una orden como obtener obtener o leer, por ejemplo en leer distancia. El elemento final de salida se debe presentar al usuario utilizando una orden que enve el dato al dispositivo de salida adecuado, puede ser entonces imprimir, desplegar o escribir, como en imprimir velocidad.

72

mailxmail - Cursos para compartir lo que sabes

36. Algoritmo. Construccin. Escribir algoritmos


D. Cmo escribir algoritmos Una vez que ya hemos comprendido adecuadamente el problema, podemos escribir el algoritmo. Probablemente necesitaremos reescribir el algoritmo varias veces para mejorarlo. Los algoritmos tienen ciertas caractersticas. Cada algoritmo empieza con un nombre que describe la funcin que realiza. Usualmente empieza con un verbo y termina con un sustantivo, como se muestra en el ejemplo. ALGORITMO: calcular impuesto

De cada paso de procesamiento en la tabla de definiciones, resulta una o ms instrucciones de pseudocdigo. Los elementos en las columnas de entradas y salidas son los argumentos de las instrucciones. Ejercicio: Supongamos que queremos escribir un programa que convierta una distancia en kilmetros a una distancia en millas. En cada kilmetro hay 0.625 millas. Coloca cada opcin en su lugar correcto en la tabla de definiciones. 1 ) kilmetros 2 ) millas

Claro! los kilmetros van en la columna de entrada y las millas van en la columna de salida. Para transformar los kilmetros en millas necesitamos un proceso. El verbo convertir convertir en el enunciado del problema indica el proceso que necesitamos. As que tenemos que calcular el nmero de millas que es equivalente al nmero de kilmetros dado. Y necesitamos un proceso que muestre las millas calculadas.

Podemos utilizar nuestra tabla para escribir nuestro algoritmo en pseudocdigo. Listing 5. ALGORITMO para convertir kilmetros en millas.

73

mailxmail - Cursos para compartir lo que sabes

Cuando se ejecute el programa, lo que el usuario debe ver en pantalla, ser algo como lo siguiente.

74

mailxmail - Cursos para compartir lo que sabes

37. Variables y constantes (1/2)


VI. VARIABLES, CONSTANTES Y TIPOS DE DATOS A. Variables y constantes Ejercicio: Los datos que residen en la memoria de la computadora pueden cambiar o permanecer con el mismo valor durante la ejecucin del programa. Cul de los siguientes trminos se refieren a los datos que se establecen al inicio y permanecen sin cambio durante la ejecucin de todo el programa? 1 ) Variable 2 ) Constante 3 ) Operador 4 ) Procedimiento El trmino variable describe a los datos que pueden cambiar de valor mientras el programa est en ejecucin, mientras que el trmino constante describe a los datos cuyo valor se establece al inicio del programa y permanecen sin cambio durante toda la ejecucin. Aunque las variables pueden cambiar de valor mientras el programa est en ejecucin, hay algunas ocasiones en que el valor de inicio se establece por los programadores para permitir a las variables que se utilicen con un valor conocido. Esto se conoce como inicializar la variable. B. Cmo nombrar las variables y las constantes Las variables y las constantes se alojan en alguna direccin particular de la memoria. Aunque el valor de las variables puede modificarse, la direccin de la memoria que ocupan, permanece siendo la misma. Las direcciones de la memoria se pueden identificar con nmeros enteros en base hexadecimal, como AD56 o F0FF. Sin embargo, para que los programadores puedan recordar ms fcilmente la direccin de memoria que aloja el valor deseado, se les pone un nombre. Ejercicio: Los lenguajes de programacin tienen reglas que establecen la manera en cmo se deben nombrar las variables y las constantes. Cul de las siguientes reglas crees que se aplican al nombrar las variables y las constantes? 1 ) Los nombres de las variables y las constantes no deben tener el mismo nombre que alguna palabra reservada en un lenguaje de programacin. 2 ) Los nombres no deben empezar con un dgito. 3 ) Los nombres no deben empezar con una letra. 4 ) No se deben utilizar ciertos caracteres en los nombres de las variables. 5 ) Los nombres deben tener una longitud mnima de 8 bytes o caracteres. Algunos lenguajes de programacin no permiten el uso de ciertos caracteres en los nombres de las variables y las constantes. Es posible que los nombres no empiecen con dgitos y no deben tener el mismo nombre que las palabras reservadas en el

75

mailxmail - Cursos para compartir lo que sabes


lenguaje de programacin. Ciertos lenguajes no permiten el uso de caracteres especficos, como BASIC por ejemplo, no permite el uso de * (asterisco), + (signo mas) y () (parntesis). Otra restriccin comn, aunque no es general, es que los nombres de las variables y constantes no deben empezar con un dgito; as que las variables 2enero o 12meses posiblemente no sean aceptadas como nombres vlidos, pero enero2 y meses12 si lo sern.

76

mailxmail - Cursos para compartir lo que sabes

38. Variables y constantes (2/2)


Las palabras reservadas que se utilizan en los lenguajes de programacin no se deben utilizar como nombres de variables y de constantes. Por ejemplo, FOR es una palabra reservada en BASIC, y VAR es una palabra reservada en Pascal. Ninguna de estas palabras se debe utilizar como nombres de variables ni de constantes en sus respectivos lenguajes. Generalmente, el nombre de las variables y de las constantes tiene un lmite mximo para la longitud, dependiendo del lenguaje y de la versin del lenguaje que se est utilizando. En unas versiones de Pascal, el nombre de las variables no puede exceder los 32 caracteres. Ejercicio: Para entender el propsito de una variable en particular, es importante darle un nombre apropiado y con significado. Cules de las siguientes convenciones para los nombres crees que son apropiadas? 1 ) El nombre o constante debe ser transparente para describir suficientemente bien el dato que representa 2 ) El nmero de caracteres en cada constante debe de ser 5 o menos 3 ) Cada nombre debe ser nico dentro de la parte del programa que se utiliza 4 ) Cada variable debe de empezar con el prefijo `vari El nombre de una variable o constante debe ser lo suficientemente claro para describir el dato que representa, y cada nombre debe ser nico dentro de la seccin del programa que se utilice. Una variable que se refiera al tamao de la poblacin de cierta especie, podra llamarse tamPoblacion. Una variable llamada tp0 podra referirse al mismo dato, pero es ms difcil de recordar y de entender, debido a que es menos significativa. Los nombres que se ocupen para alguna variable o constante, no se pueden repetir, en general, no puede haber un nombre en la misma parte del cdigo que haga referencia a dos lugares diferentes en la memoria, esto ocasiona lo que en programacin se conoce como colisin de nombres. Hay ocasiones en que los nombres de las variables si se pueden repetir, pero esto sucede en lugares diferentes del cdigo. Cuando nos referimos a lugares diferentes o el mismo lugar, significa el mismo mbito de funcin o procedimiento o mtodo. Veamos el siguiente ejemplo, en donde hay colisin de nombres. Listing 6. Colisin de nombres 1

En este ejemplo (listado 6) en la lnea 7 es evidente que habr un problema, pues en

77

mailxmail - Cursos para compartir lo que sabes


En este ejemplo (listado 6) en la lnea 7 es evidente que habr un problema, pues en cada ocasin que se ejecute esta lnea, el lmite superior del ciclo se va a modificar y se generar un error de tipo lgico. Para corregir el error, seguramente el programador deber modificar alguna de las ys de la lnea 8. Listing 7. Colisin de nombres 2

78

mailxmail - Cursos para compartir lo que sabes

39. Datos. Tipos de datos (1/2)


C. Tipos de datos Hay solamente cuatro diferentes tipos de datos que consideramos ms simples o primitivos. Otros tipos de datos son tipos que representan datos ms complejos. Los tipos tienen que ver con la clase de dato, una variable puede alojar y determinar qu clase de operaciones se pueden desarrollar con el dato alojado en ella. En este texto, vamos a nombrar los tipos de datos en negritas. Los tipos de datos fundamentales son: Caracter. Frecuentemente se les conoce como Char, porque generalmente los lenguajes de programacin estn en ingls. Este tipo de dato representa a los caracteres simples, como 'm'. Un tipo de dato complejo que se deriva del tipo caracter, es aquel que rene ms de un caracter y forma palabras o frases, se llama tipo cadena o string. Ejemplo: la variable nombreEmploado de tipo string puede alojar el dato Juancho Perineo. Entero. Los enteros estn entre los tipos de datos ms utilizados en los lenguajes de programacin. Hay diferentes clases de nmeros enteros y difieren por el tamao de ellos, incluyendo enteros cortos y enteros largos. Por ejemplo, en Java, los enteros cortos se alojan en 8 bits, mientras que los enteros de tipo largo, ocupan hasta 64 bits de longitud. Los nmeros enteros son positivos y negativos, por ejemplo -2 y 11390. Notemos que no tienen punto decimal. Real. Los nmeros reales son nmeros con parte decimal, por ejemplo -2.0, 11390.0 y 12.45. Sin embrago, hay lenguajes de programacin como NetLogo, que no hacen diferencia entre nmeros enteros y reales cuando son exactos, como el caso de 1 y 1.0. Booleano. Los valores booleanos son valores lgicos y pueden ser falso o verdadero verdadero. En estos valores se indica el verdadero con el nmero 1 y el falso con el 0. Algunos lenguajes de programacin, como C, prefieren poner un 0 cuando es falso y cualquier otra cosa cuando es verdadero. En el lenguaje de programacin Scheme, los valores lgicos son #\t y #\f y no tienen significado numrico. El nombre que utilizan los lenguajes de programacin puede ser diferente, an cuando se trate del mismo conjunto de datos, por ejemplo, los nmeros reales, en Pascal se llaman real y en C de llaman float. Ejercicio: En general, las variables que se utilizan en una pieza de cdigo se deben declarar al inicio de ese cdigo, antes de que se utilicen en las expresiones. Cul de las siguientes informaciones crees que se debe proporcionar en las sentencias de declaracin de variables? 1 ) Su mbito 2 ) Su nombre 3 ) Su tipo 4 ) El nmero de veces que se debe utilizar 5 ) El espacio en memoria que van a ocupar Cuando se establecen las variables y las constantes, se debe proporcionar el nombre

79

mailxmail - Cursos para compartir lo que sabes


y el tipo de datos que van a contener. Cada lenguaje de programacin utiliza una sintaxis diferente para estas declaraciones. Por ejemplo, en Pascal, se utiliza la palabra reservada VAR para empezar el bloque de declaraciones de variables. Pascal utiliza el cdigo Para mostrar que la variable numeroEmpleado es de tipo Enteros. Y utiliza el cdigo Para indicar que la variable salarioEmpleado es de tipo Reales. La palabra reservada VAR (que puede estar en maysculas o minsculas), es una marca que indica el inicio del bloque de declaracin de variables, y no se requiere anteponer a la declaracin de cada variable. En el siguiente ejemplo, las variables numPersonas y temperatura se declararon al inicio del programa. Listing 8. Nombre del Programa

80

mailxmail - Cursos para compartir lo que sabes

40. Datos. Tipos de datos (2/2)


En el lenguaje C, para declarar el tipo de una variable, se debe mencionar primero el tipo y despus el identificador de la variable, como en int numPersonas; Para acceder a los datos alojados en las variables, se puede hacer de 2 modos diferentes en general: Por su nombre. Por su direccin Al declarar variables, el compilador obtiene toda la informacin que necesita para tener siempre presente cules y de qu tipo son las variables que existen. En algunos lenguajes de programacin como Fortran, se creaba una tabla de smbolos [8]. Por ejemplo, cuando se declaraba INT I, J, K, se creaba una tabla como la siguiente:

De modo que el compilador tena toda la informacin necesaria. Los compiladores actuales ofrecen muchas otras capacidades, como declarar variables en tiempo de ejecucin. Ejercicio: Qu tipo de dato se utiliza para almacenar letras individuales? 1 ) Entero 2 ) Caracter 3 ) Real 4 ) Cadena 5 ) Booleano En un lenguaje de pseudocdigo, podemos decir que el tipo adecuado para almacenar letras individuales es el tipo Caracter, con lo que podemos almacenar letras como a y Z. La opcin Entero es incorrecto, a pesar de que los caracteres tienen asociado un nmero entero que los identifica, porque la cantidad de nmeros enteros dedicados a los caracteres es menor que la cantidad de nmeros enteros. El tipo Real, tambin es incorrecto, pues el formato y el espacio dedicado para almacenar tales nmeros es diferente en los de tipo Caracter. El tipo Booleano almacena falso y verdadero, as que tambin es una respuesta incorrecta. El tipo Cadena, es un tipo de dato compuesto, que se crea a partir de muchos elementos de tipo Caracter. 1) Convenciones en el lenguaje de pseudocdigo: En el lenguaje de pseudocdigo que estamos utilizando, adoptaremos una propuesta similar a la del lenguaje Pascal para nombrar las variables y las constantes. Utilizaremos las palabras especiales VARIABLES y CONSTANTES al inicio, para establecer el tipo y valor de las variables y constantes. Por ejemplo, el listado 7 se debe reescribir como:

81

mailxmail - Cursos para compartir lo que sabes


debe reescribir como: Listing 9. Colisin de nombres 2, con variables y constantes.

82

mailxmail - Cursos para compartir lo que sabes

41. Expresiones y rdenes


VII. EXPRESIONES Y RDENES En esta seccin estudiaremos y aprenderemos a describir las expresiones y rdenes en la programacin, de modo que no exista confusin entre los operandos y operadores ni en la jerarqua de las operaciones. A. Principios bsicos Un operador es un smbolo que representa una accin especfica que se debe realizar en los datos. Ejercicio: Los operadores trabajan con los operandos. Cul crees que es la mejor definicin de operando? 1 ) Es cualquier cosa que no es un operador. 2 ) Es el valor que resulta despus de que se ha desarrollado una accin. 3 ) Son los valores con los que se efecta una accin especfica. 4 ) Es la direccin de memoria en donde se alojan los datos para que el operador funcione. Los valores con los que se efecta una accin especfica se conocen como operandos. Por ejemplo, en la expresin 3 + 5, los operandos son 3 y 5, mientras que el operador es el smbolo +. Cada operador se representa con un smbolo en particular, aunque el smbolo puede ser diferente en diferentes lenguajes de programacin. Por ejemplo, el smbolo utilizado para la operacin elevar a alguna potencia, en unos lenguajes se utiliza el ^ y en otros se utiliza **. Los operadores aritmticos ms frecuentes y que utilizaremos (ya hemos utilizado algunos) en nuestros algoritmos en pseudocdigo son:

AGRADECIMIENTOS El autor quiere agradecer a la Universidad Jurez Autnoma de Tabasco por las facilidades otorgadas en el uso de los recursos de infraestructura. REFERENCIAS [1] SkillSoft-Learning-Object, Getting Started with Programming. ACM Course on line, http://acm.skillport.com/, Revisado en 2007. [2] John Kopplin, "An ilustrated history of computers." Recurso web http://www.computersciencelab.com/ComputerHistory/ History.htm, visitado el 15 de agosto de 2007. Creado en 2002.

83

mailxmail - Cursos para compartir lo que sabes


[3] C. Bohm and G. Jacopini, "Flow Diagrams, Turing Machines and Languages with only two formation rules," communications of the ACM, vol. 9, pp. 366 - 371, May 1966. [4] P. D. Terry, Compilers and Compiler Generators: An introduction with C++. International Thompson (out of printer. Postcript edition at http://www.scifac.ru.ac.za/compilers), 1996. [5] T. AE. Mogensen, Basics of Compiler Design. DIKU University of Copenhagen, 2007 (First publishing 2000). [6] Wikipedia, "Algorithm - wikipedia, the free encyclopedia," 2007. [Online; accessed 13-September-2007]. [7] Wikipedia, "Top-down and bottom-up design - wikipedia, the free encyclopedia," 2007. [Online; accessed 14-September-2007]. [8] B. J. MacLennan, Principles of Programming Languages: Design, Evaluation, and Implementation. Oxford University Press, 1999. NOTA: Con este captulo hemos llegado al final del curso.

84