Informática. Desarrollo científico del ordenador

84
Informática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González 1 mailxmail - Cursos para compartir lo que sabes

Transcript of Informática. Desarrollo científico del ordenador

Page 1: Informática. Desarrollo científico del ordenador

Informática. Desarrollocientífico del ordenadorAutor: Abdiel Cáceres González

1

mailxmail - Cursos para compartir lo que sabes

Page 2: Informática. Desarrollo científico del ordenador

Presentación del curso

Ordenador, ciencia e informática son las claves de este curso. Conoce eldesarrollo científico que hay detrás de una computadora u ordenador de últimageneración; la evolución de las computadoras revelando la ciencia de lacomputación en torno a hardware, software, estructura, sistemas de numeración(binario, decimal), etc. Estudiaremos los principios de programación y el desarrollode programas: codificación, editores, compiladores, depuradores, errores de código,etc.

Veremos, también, diseño Top-Down y pseudocódigo de algoritmos; laconstrucción de algoritmos siguiendo la orden de GOTO y el teorema de laestructura, llegando al detalle de cómo definir un problema y cómo escribiralgoritmos. Asimismo estudiaremos las variables, constantes y tipos de datos,además de los principios básicos de las expresiones y órdenes.

2

mailxmail - Cursos para compartir lo que sabes

Page 3: Informática. Desarrollo científico del ordenador

1. Era de la información. Evolución de lascomputadoras (1/2)

INTRODUCCIÓN A LAS CIENCIAS COMPUTACIONALES

Resumen.- La carrera de ciencias computacionales ofrece una variedad deespecialidades de las cuales el alumno ira adquiriendo una línea de especialidaddesde los primeros semestres de la misma. En esta materia se mostraran estaslíneas de especialidad, así mismo se darán las bases para que el alumno empiece aresolver problemas mediante la computadora utilizando un lenguaje deprogramación.

El objetivo general de este curso es lograr que el alumno adquiera un panoramageneral de las ciencias computacionales y sirva de introducción hacia la carrera queestá cursando, permitiéndole así visualizar la línea en la que podría especializarse.

Palabras Clave.- Ciencias de la computación, Historia de las computadoras,Fundamentos teóricos de las ciencias computacionales, Sistemas numéricos,Arquitecturas de computadoras, Hardware y Software.

ACLARACIÓN

LAS notas de este curso siguen muy de cerca los apuntes de los cursos [1], y  sonpues una recopilación de diversas fuentes de información con algunas anotacionespropias, en las que pueden existir errores que deben atribuirse al autor del presentecurso, y no a las fuentes de información. Las figuras, esas si, fueron tomadaslibremente de algunos sitios de Internet, y a menos que se declare otra cosa, son dedominio público. Aclarado este asunto, empecemos con las notas del curso deIntroducción a las Ciencias Computacionales.

I. ERA DE LA INFORMACIÓN

A. La evolución de las computadoras

DESDE los inicios de la historia de la humanidad, muchas personas han intentadoconstruir mecanismos que sean capaces de hacer cálculos [2].

· Ábaco (500 A.C): Quizá fue el primer dispositivo mecánico que se utilizó parahacer cálculos numéricos.

Figura. 1. Ábaco antiguo

· Regla de cálculo (1625 D.C.): Inventada por John Napier, fue una herramienta de

3

mailxmail - Cursos para compartir lo que sabes

Page 4: Informática. Desarrollo científico del ordenador

cálculo sumamente útil, pues se utilizó hasta fines de 1960. Utilizaba las distanciasfísicas para multiplicar y restar.

Figura. 2. Regla de cálculo

4

mailxmail - Cursos para compartir lo que sabes

Page 5: Informática. Desarrollo científico del ordenador

2. Era de la información. Evolución de lascomputadoras (2/2)

· Pascalina (1642): Blas Pascal, cuando tenía 19 años de edad, construyó estedispositivo mecánico, compuesto de engranes, para ayudar a su padre que trabajabacomo cobrador de impuestos. La pascalina solamente podía sumar.

Figura. 3. Pascalina, construida en 1642

· Charles Babbage (1822): Ch. Babbage diseñó una máquina que funcionaba convapor y que llamó motor de diferencias, esta máquina era del tamaño de un cuarto yera capaz de calcular las tablas de multiplicar y las tablas de logaritmos.

Figura. 4. Máquina de diferencias construida por Charles Babbage en 1822.

· La ABC (1937): En 1847 George Bool desarrolló el álgebra bivalente, ahoraconocida como algebra booleana, y es la base matemática en la que residen todoslos cálculos que hacen las computadoras modernas, la primer computadora queutilizó este sistema se construyó en 1937, se llamó ABC, que son las iniciales deAtanasoff Berry Computer.

5

mailxmail - Cursos para compartir lo que sabes

Page 6: Informática. Desarrollo científico del ordenador

Figura. 5. Computadora ABC, hecha por Vincent Atanasoff y Clifford Berry en 1937.

Las primeras computadoras electrónicas se construyeron entre las décadas de 1920y 1930, lo que marcó la era de las computadoras electrónicas.

Las computadoras que se construyeron con componentes electrónicos han cambiadode acuerdo a la tecnología electrónica de sus componentes, esta es la primeraclasificación de los tipos de computadoras, cada clase se le conoce comogeneración.

6

mailxmail - Cursos para compartir lo que sabes

Page 7: Informática. Desarrollo científico del ordenador

3. Primera generación de computadoras

1) Primera generación de computadoras:

La primera generación de computadoras electrónicas ocurrió a partir de 1945 y duróaproximadamente hasta 1956. Una de las primeras computadoras que seconstruyeron fue la llamada ENIAC (Electronic Numeric Integrator And Calculator),construida en 1945 por la Universidad de Pensilvania, en los Estados Unidos deAmérica, y el propósito para su construcción fue realizar cálculos con fines bélicos,durante la segunda guerra mundial.

Las computadoras de la primera generación se caracterizaron por tener variosproblemas en común. Todos estos problemas tienen que ver con:

· Tamaño: Las computadoras de la primera generación eran enormes. La ENIACpesaba 30 toneladas y se requería todo un edificio para alojarla. Tenía 18,000bulbos, 70,000 resistencias y 5.000.000 soldaduras.

· Precio: Las computadoras de esta generación costaban tanto dinero que casi nadiepodía comprarlas, solamente las más grandes instituciones gubernamentales y unaspocas universidades, pues el costo estaba en el orden de los millones de dólares.

· Consumo de energía: Esta clase de computadoras gastaba muchísima energíaeléctrica, alrededor de 200 KW/h, de modo que cuando la ENIAC funcionaba, toda laciudad de Philadelphia se enteraba, porque bajaba la corriente eléctrica.

· Poca confiabilidad: Esto se debió principalmente a que los componenteselectrónicos con los que estaban construidas estas computadoras, fallaban enpromedio cada 7 minutos y medio, lo que obligaba a reiniciar los cálculos en cadaevento de esta naturaleza. En ocasiones la computadora arrojaba resultadosdiferentes en cada corrida, dependiendo de qué bulbo (o componente) estabadañado.

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 vonNeumann quien inventó los diagramas de flujo. Las principales líneas deinvestigación en la teoría de la programación fueron:

7

mailxmail - Cursos para compartir lo que sabes

Page 8: Informática. Desarrollo científico del ordenador

· Las instrucciones y los datos se almacenan en un lugar específico en lacomputadora, la memoria de lectura y escritura.

· El espacio en memoria era perfectamente distinguible por localidades únicas,nombradas por medio de una dirección.

· Los programas se ejecutaban en forma secuencial, y a su vez, las instrucciones delos programas también se hacían en forma secuencial.

8

mailxmail - Cursos para compartir lo que sabes

Page 9: Informática. Desarrollo científico del ordenador

4. Nuevas generaciones de computadoras

2) Siguientes generaciones de computadoras:

La segunda generación de computadoras empezó en 1958, cuando la compañíaBELL AT&T desarrolló el transistor. Los transistores eran más rápidos, más baratos,consumían menos energía eléctrica y como consecuencia eran más confiables quelos bulbos, que eran los componentes principales de las computadoras de la primerageneración.

Con la invención del circuito integrado se terminó la segunda generación decomputadoras, dando paso a la tercera generación de computadoras.

Los circuitos integrados (CI´s) agrupaban todos los componentes esenciales de lacomputadora dentro de una unidad encapsulada. Esto hizo que se eliminaran lasconexiones por cableado entre los componentes, lo que a su vez derivó en menosconsumo de energía y redundó en mayor confiabilidad.

La memoria de la computadora fue de los componentes que se vieron másbeneficiados, porque ahora es posible disponer de mayor capacidad dealmacenamiento que nunca antes

La cuarta generación de computadoras empezó a mediados de la década de 1970,cuando las primeras microcomputadoras ya estaban disponibles en el mercado.Notemos que hasta la tercera generación, las clases de computadoras estabandiferenciadas principalmente por la tecnología de sus componentes, a partir de lacuarta generación, la clasificación se volvió más ambigua, debido a que ahora unaspecto importante era la funcionalidad y el desempeño.

Figura. 7. La computadora Apple 1, de 1976, se vendió como un kit de "hágalousted mismo" en unos $600.0

El precio de las computadoras personales (PC´s), que son miles de veces máspoderosas que la ENIAC, es mucho menor. Los avances tecnológicos, como eldesarrollo de los CI´s y tecnología de superconductores hicieron posible que elcosto de producción disminuyera significativamente, y con esto, el costo de ventapara los usuarios finales.

Ahora ya hemos alcanzado la quinta generación de computadoras con lacaracterística de cómputo empotrado, cómputo vestible, cómputo molecular y lainteligencia artificial. En la actualidad hay computadoras hechas de moléculas deADN, aunque su funcionalidad aún no es de propósito general, se están lograndosignificativos avances en este aspecto.

9

mailxmail - Cursos para compartir lo que sabes

Page 10: Informática. Desarrollo científico del ordenador

Ejercicios:

1 ) Elabore un ensayo sobre la historia de los lenguajes de programación,considerando de manera particular las fechas de los eventos más importantes y lospersonajes más representativos.

2 ) Elabore una línea de tiempo sobre la historia de las computadoras y la historia delos lenguajes de programación.

3 ) Agregue a la línea del tiempo del ejercicio anterior, algunos de los eventos mássobresalientes en la historia universal.

1 0

mailxmail - Cursos para compartir lo que sabes

Page 11: Informática. Desarrollo científico del ordenador

5. Computador (ordenador). Características yfunciones básicas

B. Características y funciones básicas de las computadoras

En el principio de la era de la computación, el término computar significaba calcular,hacer cálculos numéricos. Sin embargo, actualmente este concepto ha ampliado sudefinición, abarcando ahora muchas otras actividades, además de hacer cálculosmatemáticos.

El término computar ahora significa, tomar datos, hacer un proceso con ellos yobtener como resultado información.

Para entender esto de los datos y la información, consideremos por ejemplo, elnúmero 42, este número por sí mismo no dice mucho, pero cuando un programaarroja este resultado, al hacer una consulta acerca de la temperatura corporal actualde un paciente, entonces ya se convierte en información, que implicaría hacer lasacciones que sean pertinentes para este caso.

La naturaleza de las computadoras es hacer cálculos. Las computadoras son muybuenas en hacer tareas repetitivas, aburridas y tareas que las personas sonpropensas a cometer errores. Estas tareas son por lo general las sumas,comparaciones, búsquedas y cálculos de muchas áreas del conocimiento humano.

Casi el único modo en que las computadoras puedan fallar en hacer los cálculos, esque exista un defecto en los componentes con los que está construido, porque lascomputadoras no se cansan ni se aburren en hacer esas tareas.

A partir de la década de 1930, se hicieron muchas especulaciones acerca de lasimilitud de la computadora con el cerebro humano. No era para menos, pues lacomputadora podía responder con mucha precisión a preguntas relacionadas concálculos; cosa que a las personas les costaba más trabajo. Esto hizo pensar aalgunas otras personas que la computadora era capaz de pensar y razonar como unhumano.

Alan M. Turing, matemático inglés, propuso una prueba, en la que se podríadeterminar, si una computadora podía razonar como lo hace una persona normal ytener inteligencia como una persona. Aunque esta prueba no estaba basada enformalismos (pero muchos otros estudios de Alan Turing sí), si había confianza en elresultado.

1 1

mailxmail - Cursos para compartir lo que sabes

Page 12: Informática. Desarrollo científico del ordenador

Figura. 8. Alan M. Turing propuso lo que conocemos como la "prueba de Turing", enla cual se determinaba si la computadora era capaz de confundirse con un serhumano.

La prueba de Turing se trataba de hacer un dialogo entre una computadora y unapersona, pero la persona no debería saber con quién estaba dialogando. Si lapersona era capaz de reconocer que su interlocutor no era una persona, entonces lacomputadora no pasaría la prueba; al contrario, si la persona no podía reconocerque se trataba de algo (no de alguien), entonces la computadora tendría elreconocimiento 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 dadoel caso de que una computadora ha vencido en el juego del ajedrez a campeonesmundiales de la especialidad, hay computadoras que hacen diagnósticos médicos,cirugías, evaluaciones y tomas de decisiones. Pero aunque estas tareas resultenasombrosas para las computadoras, hay aún cosas humanas que no pueden hacer,como desarrollar tareas impredecibles, como responder a preguntas que jamásantes habían conocido.

1 2

mailxmail - Cursos para compartir lo que sabes

Page 13: Informática. Desarrollo científico del ordenador

6. Computador(ordenador). Software y hardware

Las computadoras están compuestas, de manera muy general, en software yhardware.

Sin el software o el hardware, las computadoras sirven de muy poco, y de nada paralo que originalmente fueron concebidas.

1) El software:

El software de la computadora son los programas (las instrucciones) de lacomputadora, es decir, son los conjuntos de instrucciones que deben seguir demanera ordenada para llevar a cabo la tarea para la cual han sido programadas.

Las personas que se relacionan con el software de las computadoras, normalmentecaen en una de dos clases, o son programadores o son usuarios de programas. Losprogramadores son las personas que hacen los programas, implícitamente tambiénson usuarios de programas, por otro lado, los usuarios se limitan a usar losprogramas hechos por los programadores.

Las personas que se dedican a las ciencias computacionales, tienen que ver lacomputación como un objeto de estudio. Ya sea como programador o como usuario,los computólogos deben proponer nuevos y mejores maneras de hacercomputaciones, en cualquiera que sea el objeto del cómputo.

En ocasiones se debe garantizar que un procedimiento es posible realizarlo con lacomputadora y desde otro punto de vista, explicar porqué tal o cual procedimientoes imposible hacerlo en una computadora, esto es la computabilidad.

2) El hardware:

Conocemos como hardware a lo que es tangible en la computadora, como elmonitor, todos los circuitos electrónicos, mecánicos o eléctricos; los componentesde plástico 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 numéricos,alfanuméricos, visuales, textuales o de cualquier otra clase.

III) El hardware de salida:

Son los elementos constituyentes de la computadora que sirven para recibirinformación de ella.

1 3

mailxmail - Cursos para compartir lo que sabes

Page 14: Informática. Desarrollo científico del ordenador

7. Ordenador. Supercomputadoras. Mainframe

C. Tipos de computadoras

En general, podemos distinguir las computadoras en 5 categorías. Estas categoríasse han establecido para dar una idea general del poder de cómputo que estáimplícito al nombrar el tipo de computadora.

· Supercomputadoras. (Figura 9).

Las supercomputadoras normalmente son aquellas que son cientos de veces másrápidas que cualquier computadora de escritorio.

Las supercomputadoras normalmente están en cuartos muy fríos y se deben enfriarcon líquidos especiales para que la resistencia eléctrica sea mínima y garantice lamáxima velocidad. El software que se corre en las supercomputadoras normalmentees un software especializado, como la predicción del clima, la dinámica molecular(como el caso de la BlueGene/L de IBM que se muestra en la figura 9). De modo quela principal característica de las supercomputadoras es su velocidad de proceso, yno el número de procesos que puedan ejecutar al mismo tiempo.

Figura. 9. Supercomputadora BlueGene L, la mejor del mundo hasta ahora(sep/2007). Es una máquina de 360 TeraFLOPS (360 × 1012, o360.000.000.000.000)

· Mainframe. (Figura 10).

El significado del término mainframe dentro de la computación, ha cambiado variasveces. Al principio, mainframe era un término con el que se designaba a lascomputadoras que se alojaban en cuartos enormes, luego se utilizó para distinguirlas máquinas que compartían los recursos con muchas computadoras de menospoder de cómputo. Ahora, el término se refiere usualmente a las computadorascompatibles con el sistema IBM 360. Otras computadoras con las mismascapacidades se suelen llamar servidores. En general, nosotros entenderemos comomainframe, una computadora que es capaz de compartir los recursos con muchasotras computadoras de menor capacidad. Los mainframes se utilizan enuniversidades, bancos, etc. Una computadora mainframe acepta entradas de otrasterminales, u otros mainframes. Una terminal es una computadora con muy pocopoder de cómputo que requiere de los servicios que presta un mainframe,usualmente se les conoce como terminales tontas.

1 4

mailxmail - Cursos para compartir lo que sabes

Page 15: Informática. Desarrollo científico del ordenador

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

1 5

mailxmail - Cursos para compartir lo que sabes

Page 16: Informática. Desarrollo científico del ordenador

8. Computador personal. Servidores

· Computadoras personales. (Figura 11).

Son pequeñas y baratas. Generalmente solamente tienen un procesador, aunqueahora se está volviendo común tener computadoras personales con más de unprocesador. Al principio se les conocía como microcomputadoras, porque erancomputadoras completas construidas a pequeña escala y que fueron adquiridas porla mayoría de los negocios.

Figura. 11. Computadoras personales. Actualmente ya tienen mucho poder decómputo, son relativamente baratas y corren una amplia gama de aplicaciones.

Las computadoras personales pueden ejecutar una amplia gama de aplicaciones depropósito general, como procesadores de texto, hojas de cálculo, presentadores detransparencias, manejadores de bases de datos, entre otros.

También se conocen como terminales, o estaciones de trabajo. Pueden caberperfectamente en un escritorio, en conjunto con un monitor, un ratón y un teclado.La mayoría de los negocios hacen redes interconectando varias estaciones detrabajo. (Figura 12).

· Servidores de redes. (Figura 12).

Son similares a las PCs pero mucho más poderosas. Los servidores manejan laseguridad de la red, archivos compartidos e impresoras compartidas. Un servidor esuna computadora optimizada para proporcionar servicios a otras computadoras enuna red de computadoras. Los servidores generalmente tienen procesadorespoderosos y mucha memoria y discos duros de enorme capacidad.

1 6

mailxmail - Cursos para compartir lo que sabes

Page 17: Informática. Desarrollo científico del ordenador

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

1 7

mailxmail - Cursos para compartir lo que sabes

Page 18: Informática. Desarrollo científico del ordenador

9. PDAs. Computadoras vestibles

Por otro lado, ahora se están haciendo computadoras cada vez más pequeñas, y concada vez mayor capacidad de procesamiento y de almacenamiento de datos. Escomún ahora encontrar:

· Computadoras portátiles. (Figura 13)

También se les conoce por notebooks o laptops, son computadoras personales unpoco más caras que las computadoras personales de escritorio, porque la tecnologíaque se requiere para fabricarlas debe de caber en menos espacio y tener el mismopoder de cómputo y almacenamiento. La ventaja de una laptop sobre unacomputadora de escritorio es que es completamente portátil. Las energía principal laproporciona una batería, que debe de ser recargada en pocas horas, frecuentemente2 o 3 horas.

Figura. 13. Computadoras personales. Portátiles.

· PDAs. (Figura 14).

Los PDAs (Asistentes digitales personales) Son equipos de cómputo congeneralmente poco poder de cómputo, pero esto mejora a pasos agigantados.Frecuentemente son utilizados como asistentes personales, y las aplicaciones quecorren son teléfono móvil, agendas, editores de planes, listas de cosas por hacer,juegos, etc.

Caben en la palma de una mano, generalmente tienen una pantalla sensible al tactopara evitar el teclado. Utilizan una tecnología de reconocimiento de patrones que lespermite saber qué símbolo se dibuja con el lápiz sobre la pantalla.

Figura. 14. Computadoras personales. PDAs.

1 8

mailxmail - Cursos para compartir lo que sabes

Page 19: Informática. Desarrollo científico del ordenador

· Computadoras vestibles. (Figura 15).

La computación vestible aún se encuentra en desarrollo, pero se pretende crearcomputadoras tan pequeñas que se puedan incorporar en la vestimenta del usuario.Esto significaría una mejor conexión con el entorno. Por ejemplo, se podría detectarla identidad de un empleado y habilitar su entrada o negar el acceso sin tener queportar una credencial o detenerse a firmar; y muchas otras aplicaciones más.

Figura. 15. Las computadoras vestibles están en pleno desarrollo. En un futurocercano se podrán utilizar como ahora se utilizan los teléfonos celulares.

1 9

mailxmail - Cursos para compartir lo que sabes

Page 20: Informática. Desarrollo científico del ordenador

10. CPU. Organización o estructura. Memoria

D. Organización de la computadora

A pesar de la gran diversidad de formas de las computadoras, todas ellas tienen encomún que sirven para procesar datos y devolver información. Para entender cómose procesan los datos y cómo se devuelve la información, es útil considerar laorganización de la computadora.

Las computadoras personales actuales, tienen en común (al menos hasta hace pocotiempo), que tienen un procesador, memoria, una interfaz y dispositivos de entraday salida (figura 16). Sin embargo, las computadoras multiprocesadores se estánvolviendo más comunes cada vez. Aunque su organización es una generalización dela organización de las computadoras monoprocesador.

La unidad central de proceso (conocida como el procesador), la memoria y lainterfaz de entrada y salida, componen la unidad computacional.

Figura. 16. Organización básica de las computadoras.

Una computadora opera fundamentalmente en pasos de tiempo discreto. Lascomputadoras son dispositivos regidos por el tiempo, en donde los pasos deltiempo los proporciona de manera periódica un reloj central de acuerdo a sufrecuencia de operación. Cuando decimos: "... tengo una computadora de 1GHz...",significa que la computadora requiere 1 nanosegundo para realizar un tick. Unaoperación puede tomar varios ticks en realizarse. La velocidad de la computadora seexpresa en unidades de millones de instrucciones por segundo (MIPS). Nuestracomputadora de 1GHz (la velocidad del reloj) puede tener una velocidadcomputacional de 200 MIPS.

1) Memoria: La memoria de la computadora es un arreglo de circuitos electrónicoscapaces de mantener la polaridad de sus elementos por el tiempo que se encuentreencendida la computadora. Usualmente se le conoce como RAM (Memoria de accesoaleatorio).

En la memoria se alojan los programas que se están ejecutando y generalmente losdatos que deben utilizar esos programas. Dentro de los programas que debe

2 0

mailxmail - Cursos para compartir lo que sabes

Page 21: Informática. Desarrollo científico del ordenador

datos que deben utilizar esos programas. Dentro de los programas que debeejecutar la computadora, el principal de ellos es el sistema operativo.

El sistema operativo es un programa de computadora que se encarga de administrarlos recursos del sistema de cómputo. Otros programas son los compiladores,traductores, demonios (programas que se ejecutan sin que se entere el usuario yque constantemente están revisando una tarea específica), etcétera.

2) CPU: La Unidad Central de Procesos (CPU), se encarga de calcular y distribuir lastareas que se deben ejecutar. Entre sus funciones está la de hacer solicitudes a lamemoria para obtener todos los datos necesarios para realizar su computación;también está la de hacer gestiones a la interfaz de entrada y salida para permitir lalectura de los caracteres del teclado, los clicks del ratón, mostrar las ventanas en elmonitor, etc.

Frecuentemente, en las computadoras de un solo CPU, la velocidad de proceso se vefrenada por la capacidad de transmitir datos de un lado al otro, entre el CPU, lamemoria y la interfaz de E/S. Antiguamente, las computadoras podían transmitirdatos en conjuntos de 8 bits, ahora las computadoras pueden transmitir hasta 64bits en cada tick del reloj (aunque a la fecha hay equipos de cómputo de 128 bits,pero son dedicados a consolas de juegos).

2 1

mailxmail - Cursos para compartir lo que sabes

Page 22: Informática. Desarrollo científico del ordenador

11. Computadora. Interfaz y dispositivos de entraday salida

3) Interfaz E/S:

La interfaz de entrada y salida es una placa de circuitos integrados que manipulan ycontrolan los dispositivos que se conectan con el CPU. Los fabricantes de losdsipositivos de entrada de datos o de salida de datos, deben ajustarse a loslineamientos del procesador central.

Figura. 17. interfaz de entrada/salida de una computadora. Contiene circuitosintegrados que controlan los dispositivos de entrada y salida y establece unacomunicación con la unidad central de proceso.

Existen estándares para la transmisión de datos, tanto de entrada como de salida. Esel medio por el cual se envían o se reciben señales desde un sistema hacia otros.Los datos viajan por un bus de datos. Si el bus de datos es de poca capacidad y elprocesador es de mucha capacidad, por ejemplo, si el bus de datos puede transmitirhasta 16 bits en un tick, y el procesador trabaja con 32 bits en cada tick, es claroque el procesador puede esperar hasta 2 ticks para trabajar; si el bus fuera de 64bits y el procesador de 32 bits, entonces también 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 decomputación por medio de la interfaz de entrada/salida.

Hay dispositivos de entrada, como los teclados, los ratones, las tabletasdigitalizadoras, los micrófonos, etc.; y hay dispositivos de salida como losmonitores, las bocinas, y cualquier otro actuador.

Los dispositivos de E/S se conectan utilizando los puertos de la computadora.Antiguamente había dos puertos, el puerto serial y el puerto paralelo. Actualmenteestá en desuso el puerto paralelo y en su lugar hay otros puertos seriales de altavelocidad, el USB (Bus Serial Universal) que se utiliza para casi cualquier dispositivo yel FireWire que se prefiere para transmitir altas cantidades de datos o deinformación, como los videos.

2 2

mailxmail - Cursos para compartir lo que sabes

Page 23: Informática. Desarrollo científico del ordenador

2 3

mailxmail - Cursos para compartir lo que sabes

Page 24: Informática. Desarrollo científico del ordenador

12. Sistemas de numeración. Binario a decimal

E. Sistemas de numeración

Debido a la naturaleza eléctrica y electrónica de las computadoras, los dispositivosde los cuales se componen, se pueden presentar en uno de dos estados, encendidoso apagados.

Esto nos ha servido para modelar cada uno de esos estados con un 0 (apagado) o un1 (encendido). El conjunto de símbolos 1 y 0, los conoceremos como dígitosbinarios, porque son los dígitos que conforman el sistema de numeración binaria.El nombre más común es BIT que es una contracción de la palabra en inglésBInarydigiT.

1) Binario a decimal: La representación de los números en notación binaria, siguelas mismas reglas que la representación de los números en notación decimal, la queutilizamos cotidianamente; y también es la misma que la representación de losnúmeros en cualquier sistema numérico de otra base. Los números se representande manera posicional, con el dígito más significativo a la izquierda y el menossignificativo a la derecha.

Ejemplo 1: El número decimal 7632 tiene el dígito más significativo 7, y el menossignificativo el 2. El número binario 10011 tiene el dígito más significativo en elextremo izquierdo y el menos significativo al extremo derecho.

Cada posición representa las veces que la base debe ser considerada para expresarcorrectamente el número. En el ejemplo anterior, el número decimal 7632representa:

Los dígitos 7, 6, 3, 2, han sido ordenados de arriba hacia abajo en orden decrecientede acuerdo a su posición en el número 7632. De manera similar, el número binario(en base 2) del ejemplo 1, el número 10011 es representado por los dígitos de lasiguiente tabla:

Esto nos sirve para poder convertir cualquier número en binario a su expresiónnumérica en base decimal. Por ejemplo, el mismo número del ejemplo 1, el 10011se expresa en decimal como el resultado de:

2 4

mailxmail - Cursos para compartir lo que sabes

Page 25: Informática. Desarrollo científico del ordenador

Así, 100112 es equivalente al número 1910. El número en subíndice a la derecha,indica la base que rige la expresión numérica. Esta misma idea la podemos aplicar aexpresiones numéricas de cualquier otra base. Por ejemplo, el número 2013:

de modo que las expresiones numéricas 100112, 2013 y 1910 son equivalentes,cada una en su propio sistema numérico.

Ejercicios:

1) Encuentre las expresiones numéricas en sistema decimal equivalentes de lossiguientes números: a) 3368b) 3367c) 3369

2) ¿El número decimal 845 es equivalente a qué numero binario? a) 11010011012b) 11010111012c) 11010011002

2 5

mailxmail - Cursos para compartir lo que sabes

Page 26: Informática. Desarrollo científico del ordenador

13. Sistemas de numeración. Decimal a binario

2) Decimal a binario:

Para convertir un número en el sistema numérico decimal a otro sistema numéricode cualquier otra base hacemos divisiones, considerando los residuos para formar laexpresión numérica del resultado.

Ejemplo 2: Calcular la expresión numérica en binario del número 35610 (decimal).

Para realizar esta tarea, tenemos que dividir:

De modo que el número binario buscado es 101100100.

Una vez terminadas las divisiones, el resultado se obtiene escribiendo los residuosde izquierda a derecha en orden decreciente respecto a su significancia, es decir,primero el más significativo, hasta el bit menos significativo que se escribe en elextremo derecho.

Para convertir un número decimal a una expresión en otra base diferente que 2 sedebe considerar dividir entre la base deseada hasta que la parte entera de la divisiónsea 0, y escribir los residuos de izquierda a derecha en el orden de significancia.

Ejercicios:

1) Convierta los siguientes números en base 10 a base 2:

a) 11010b) 79010c) 1001110

2 6

mailxmail - Cursos para compartir lo que sabes

Page 27: Informática. Desarrollo científico del ordenador

14. Programación. Principios. Programación clásica( 1 / 2 )

II. PRINCIPIOS DE PROGRAMACIÓN

ESTA sección se trata de revisar y estudiar los principios que rigen el arte deprogramar computadoras. Veremos los conceptos fundamentales de laprogramación, comprenderemos las direcciones de estudio en la programación y losprincipios para tener buenos hábitos en la programación.

A. Programación clásica

Como las computadoras no pueden pensar (al menos hasta ahora), necesitamosdarle las instrucciones para que ellas hagan lo que queremos.

Un programa contiene un conjunto de instrucciones que la computadora puedeutilizar para hacer alguna tarea. Debido a la naturaleza eléctrica de prendido yapagado, las computadoras solamente entienden el lenguaje de 1s y 0s. Estelenguaje se llama lenguaje máquina. Una instrucción típica en lenguaje máquina es0000100000101111.

Como las computadoras utilizan millones de circuitos electrónicos, utilizan el 1 pararepresentar cuando tienen corriente y 0 para representar cuando no tienencorriente. Al principio, cuando se utilizaban las tarjetas perforadas, utilizaban elmismo 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 electrónicos de la computadora,posibilitan el uso del álgebra booleana, que fu´e inventada por el matemático inglésGeorge Boole. Los sistemas binarios operan de acuerdo con las reglas de la lógicabooleana. Estas reglas se utilizan para hacer cálculos con los datos.

Como las personas no se sentían cómodas con el lenguaje máquina, inventaron ellenguaje ensamblador en la década de 1950. El lenguaje ensamblador involucra latraducción de muchas combinaciones de números en lenguaje máquina ainstrucciones escritas con letras. Una instrucción típica en lenguaje ensamblador separece a Add A, B, que significa sumar el contenido de la variable A, con elcontenido de la variable B.

Cada tipo computadora tiene su propio tipo de lenguaje ensamblador. En la mayoríade los casos, el tipo lo determina la marca de la computadora, aunque diferentescomputadoras de la misma marca pueden tener diferentes lenguajes ensambladores.La cantidad de comandos que se utilizan en lenguaje ensamblador es la misma queen lenguaje máquina.

Las computadoras suelen tener un programa especial que se llama ensamblador,que traduce un programa en lenguaje ensamblador a un lenguaje máquina, de modoque la computadora pueda entenderlo y ejecutarlo.

Tanto el lenguaje ensamblador como el lenguaje máquina son lenguajes de bajonivel, y son dependientes del procesador. Ya que cada procesador tiene su propia

2 7

mailxmail - Cursos para compartir lo que sabes

Page 28: Informática. Desarrollo científico del ordenador

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

2 8

mailxmail - Cursos para compartir lo que sabes

Page 29: Informática. Desarrollo científico del ordenador

15. Programación. Principios. Programación clásica( 2 / 2 )

Los lenguajes de alto nivel incluyen lenguajes como:

· Fortran. FORTRAN es una contracción de FORmula TRANslation. Se utilizaprincipalmente en aplicaciones donde lo principal es el cálculo numérico enproblemas científicos. Fue el primer lenguaje de alto nivel y lo creó la compañía IBMen 1950.

· Pascal. Pascal fue creado en 1970 y se llamo así por el matemático Blaise Pascal.Se utilizó mucho en las universidades y centros educativos por su simplicidad yexcelente diseño estructurado.

· COBOL. COBOL también es un acrónimo que significa COmmon Business OrientedLanguage. Se creó en 1960, y podía procesar cálculos simples de grandescantidades de datos. Los programas escritos en COBOL eran más largos queaquellos que se escribían en otros lenguajes, pero a la vez, eran más fáciles deseguir. COBOL fue un lenguaje popular para las aplicaciones orientadas a losnegocios que corrían en computadoras grandes como los mainframes, aunque ahoraya no es tan común, aunque aún existe el compilador para este lenguaje.

· BASIC. También es un acrónimo, significa Beginner´s All/purpose SymbolicInstruction Code. Se desarrolló en 1964 y como su nombre lo sugiere, es unlenguaje fácil de aprender para los estudiantes y principiantes. Hasta hace algúntiempo, las computadoras tenían incluido un intérprete de BASIC en su software defábrica.

· C . C se creó en 1972 como un lenguaje para hacer aplicaciones en el sistemaoperativo UNIX. A partir de C, se han desarrollado otros lenguajes como C++, C#,C-objetivo, incluso Java, que son lenguajes actuales y ampliamente difundidos yutilizados.

Ejercicios:

1) Escribe una descripción corta de los siguientes lenguajes: LISP, PROLOG, ADA,OBERON, RUBY y SMALLTALK.

2) Elabora una tabla comparativa, que describa los nombres de las personas quecrearon el lenguaje y las fechas de creación de todos los lenguajes que semencionaron en el texto, incluyendo los del punto anterior.

3) Menciona, para cada lenguaje de los anteriores, qué tipo de aplicación esaconsejable hacer con cada lenguaje de computadora.

Los lenguajes de alto nivel se parecen más al lenguaje natural que los lenguajesensambladores, porque utilizan palabras como el lenguaje cotidiano (usualmente eninglés) como BEGIN, END o IF.

Los compiladores y los intérpretes se utilizan para convertir programas de altonivel a bajo nivel. Cada instrucción de alto nivel se traduce varias instrucciones de

2 9

mailxmail - Cursos para compartir lo que sabes

Page 30: Informática. Desarrollo científico del ordenador

nivel a bajo nivel. Cada instrucción de alto nivel se traduce varias instrucciones debajo nivel.

Los lenguajes de cuarta generación (4GLs) tienen comandos que se parecen muchomás a los lenguajes humanos. SQL (Structured Query Language) es un lenguaje decuarta generación. La mayoría de los lenguajes de cuarta generación se utilizan paramanipular bases de datos. Por ejemplo, un comando en SQL como el siguiente...

... se puede utilizar (junto con otros comandos) para obtener información de losempleados en una base de datos.

Los lenguajes de cuarta generación son más fáciles de aprender y de manipular,pero son más difíciles de interpretar por la computadora. La computadora requierede más recursos para traducir una instrucción en lenguaje de cuarta generación.

Cada lenguaje de programación tiene sus ventajas y desventajas. Por ejemplo,FORTRAN es muy bueno para hacer cálculos numéricos, pero es muy malo parahacer formatos de texto en la pantalla; mientras que COBOL es muy bueno para darformatos de texto en la pantalla, pero muy malo para hacer cómputo numérico.

Si queremos ser programadores profesionales, probablemente deberemos aprendervarios lenguajes de programación, porque actualmente los entornos deprogramación permiten mezclar código de diferentes lenguajes.

3 0

mailxmail - Cursos para compartir lo que sabes

Page 31: Informática. Desarrollo científico del ordenador

16. Programación. Tendencias. Programaciónestructurada (1/2)

B. Tendencias de la programación

En 1966, dos matemáticos publicaron un artículo donde se mostraba que eraposible hacer cualquier programa utilizando únicamente tres tipos de estructuras decontrol:

1) Secuencias2) Opcionales3) Repeticiones

El documento se tradujo del italiano (el idioma original del artículo) al inglés, y sepublicó en la revista Communications of the ACM, donde redujeron a dos las reglasde formación necesarias para crear cualquier algoritmo [3].............................................................Ejercicios: 1) ¿Cuáles son esas dos reglas de formación?............................................................

El artículo proporcionó una tendencia de programación que se conoce como programación estructurada.

1) Programación estructurada: En la programación estructurada, los programasgrandes son difíciles de comprender si tienen un solo inicio y siguen aplicandooperaciones tras operaciones hasta un solo final, de modo que la programaciónestructurada ofrece la alternativa de hacer módulos de programas más pequeños,que en conjunto puedan dar solución al problema.

De modo que la programación estructurada incluye

· Un desarrollo TOP-DOWN · Un diseño Modular

El desarrollo TOP-DOWN establece dividir el problema en componentes de tamañomás manejable, resultando en programas más precisos y confiables.

El diseño modular agrupa las tareas que desarrollan la misma función.

Por ejemplo. Un cálculo de interés general podría ocupar un módulo en unprograma; cualquier otra parte del programa puede utilizar ese módulo, así que sepuede llamar en varias ocasiones por otros módulos.

El diseño modular de un programa se complementa con el desarrollo top-downporque los subpasos en el proceso del desarrollo en realidad es hacer más módulosen el programa(Figura 18).

3 1

mailxmail - Cursos para compartir lo que sabes

Page 32: Informática. Desarrollo científico del ordenador

Figura. 18. Diseño modular con filosofía Top-Down para el desarrollo del Software.

3 2

mailxmail - Cursos para compartir lo que sabes

Page 33: Informática. Desarrollo científico del ordenador

17. Programación. Tendencias. Programaciónestructurada (2/2)

Los lenguajes de tercera generación, como Pascal, C y BASIC, siguen la filosofía de laprogramación estructurada, porque son lenguajes procedurales que necesitan hacerinstrucciones paso por paso para llegar al resultado deseado.

Los lenguajes de cuarta generación se desarrollaron desde finales de la década de1970. Cada una de sus instrucciones genera aproximadamente unas 50instrucciones en lenguaje máquina. Los programas escritos utilizando esoslenguajes también se pueden corregir rápidamente. Esta clase de lenguajes (4GL) noson procedurales, porque el programador solicita un resultado sin proporcionar lospasos necesarios para obtenerlo.

Por ejemplo, esta solicitud de SQL despliega los Productos de la base de datosInventario.

GET Productos FROM Inventario

Figura. 19. Sistema de Base de Datos

La mayoría de los lenguajes de cuarta generación se utilizan para acceder a lasbases de datos, quienes utilizan los siguientes componentes (figura 19):

· Sistema manejador de Bases de Datos. (DBMS) El manejador de la base de datosse asegura que se pueda leer de la base de datos y escribir en la base de datos demanera adecuada y sin confusiones.· Lenguaje de consulta de la Bases de Datos. El lenguaje de consulta de la basede datos permite los usuarios especificar precisamente qué información desean dela base de datos.· Generador de pantallas. El generador de pantallas proporciona una interfaz

3 3

mailxmail - Cursos para compartir lo que sabes

Page 34: Informática. Desarrollo científico del ordenador

gráfica que rápidamente genera tanto las entradas del usuario como las salidas parael usuario.· Generador de reportes. El generador de reportes crea reportes personalizados ensegundos. Los reportes se deben mostrar haciendo énfasis en la informaciónnecesaria y solicitada por el usuario.

Los lenguajes de cuarta generación son orientados al usuario final, en otraspalabras, tienen una interfaz con el usuario muy amigable, de modo que laspersonas con pocos o nulos conocimientos en lenguajes de programación puedaaprenderlos fácilmente. Como la principal aplicación de los lenguajes de cuartageneración es la interacción con las bases de datos, son buenos para extraer datos ypresentarlos en un formato específico; sin embargo, tienen compiladores que sonmuy grandes y lentos, comparados con los compiladores de los lenguajes de tercerageneración.

Como ejemplos de los sistemas manejadores de bases de datos (DBMSs) que utilizanlenguajes de cuarta generación incluyen:

· Informix. Proporciona sistemas manejadores de bases de datos relacionales quecorren en diversas plataformas UNix. Las bases de datos relacionales almacenan losdatos en forma de tablas relacionadas. Son muy poderosas, porque los datos sepueden ver de diversas maneras, siempre atendiendo las necesidades específicas decada clase de usuario.

· Oracle. Las bases de datos Oracle incluyeron el primer sistema manejador debases de datos que incorporaron el lenguaje SQL y que se utilizaron en una ampliagama de plataformas. El lenguaje SQL (Structured Query Language) es el lenguaje deprogramación estándar de la industria, y se utiliza para extraer información de lasbases de datos que son alojadas en el sistema. Oracle ofrece una variedad deherramientas de desarrollo de aplicaciones que incluyen aplicaciones para serejecutadas en redes de computadoras.

3 4

mailxmail - Cursos para compartir lo que sabes

Page 35: Informática. Desarrollo científico del ordenador

18. Programación orientada a objetos - OOP

2) Programación orientada a objetos: La programación orientada a objetos (OOP)se convirtió en la alternativa para la programación estructurada a finales de ladécada de 1980. La OOP crea abstracciones de los objetos del mundo real en lacomputadora.

Figura. 20. Esquema de un objeto. Tiene al interior las propiedades (atributos) ypara acceder a ellos se hace por medio de las operaciones (métodos).

Cada objeto tiene un conjunto de propiedades y operaciones - o métodos -asociados con él (figura 20. Por ejemplo, el objeto reloj puede tener laspropiedades: horas, minutos, segundos y los métodos poneTiempo, tiempoActual.Las propiedades horas, minutos y segundos se pueden manipular solo por medio delos métodos.

Los programas orientados a objetos son modulares. Los programas modulares sonfáciles de corregir. La tendencia actual es la programación orientada a objetos,considerandoalgunas extensiones a esta filosofía de programación.

Como ejemplos de lenguajes orientados a objetos, incluyen:

· Smaltalk. Smaltalk fue el primer lenguaje de programación orientado a objetos,ofrece muchas libertades a los programadores, de modo que los programadoresdeben tener mucho cuidado al manejar la memoria del sistema.

· Java. Fue creado por la compañía Sun Microsystems, Java es un lenguaje orientadoa objetos similar a C++ pero han mejorado el lenguaje con características que evitanerrores de programación comunes, como el manejo de la memoria, donde laresponsabilidad recae en un subsistema que se llama recolector de basura.

· C + + . C + + es un superconjunto del lenguaje C. Generalmente es considerado unode los mejores lenguajes para hacer aplicaciones a gran escala.

· C#. Fue desarrollado por Microsoft. C# (que se pronuncia C-sharp) es un híbridode C y C++ que fue desarrollado para competir con Java y con el objetivo de mejorarla productividad en el desarrollo de aplicaciones WEB, manteniendo la flexibilidad yel poder de C y C++.

3 5

mailxmail - Cursos para compartir lo que sabes

Page 36: Informática. Desarrollo científico del ordenador

Los lenguajes de alto nivel tienen algunas ventajas sobre los lenguajes de bajo nivel[4]:

1) Son más legibles: Un buen lenguaje de alto nivel, permitirá que los programas seescriban de manera que recuerden descripciones tipo-idioma-común, muyparecidos a los pseudocódigos. Si se programa cuidadosamente, se puede generaruna documentación autocontenida, que es una propiedad deseable cuando seconsidera que los programas se documentan para que otras personas lean ycomprendan lo que se ha escrito.

2) Son más portables: Actualmente, los lenguajes de programación de alto nivel seestán volviendo más capaces de ser utilizados en arquitecturas de computadorasdiferentes, con ningún cambio; o bien al proporcionar el código fuente y serrecompilado sin modificaciones.

3) Tienen estructura y orientación de objetos: Este es un acuerdo general queempezó con la programación estructurada desde la década de 1960 yposteriormente con el movimiento a la programación orientada a objetos en ladécada de 1990, de lo que resultó una gran mejora en la calidad y confiabilidad delcódigo. Los lenguajes de alto nivel se pueden diseñar para reforzar esos paradigmas.

4) Tienen mayor generalidad: La mayoría de los lenguajes de alto nivel permiten laescritura de una amplia variedad de programas, para permitir al programadormezclar código de diversos lenguajes para que su aplicación sea mejor.

5) Brevedad: Los programas expresados en lenguajes de alto nivel usualmente sonconsiderablemente más cortos (en términos del número de líneas de código fuente)que los hechos en lenguajes de programación de bajo nivel.

6) Verificación de tipos: Siendo humano, un programador probablemente cometamuchos errores en el desarrollo de un programa de computadora. Muchos lenguajesde alto nivel - o al menos sus implementaciones - pueden, y deben, verificar loserrores tanto en tiempo de compilación como en tiempo de ejecución.

3 6

mailxmail - Cursos para compartir lo que sabes

Page 37: Informática. Desarrollo científico del ordenador

19. Principios de una buena programación

C. Principios de una buena programación

Los programas de computadoras son útiles cuando se usan, a pesar de lo trivial quepueda sonar esta frase, involucra cuatro características importantes que deben tenerlos programas para que sean buenos programas y se puedan utilizar. Un buenprograma 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 quepudieran encontrar los usuarios. Sin embargo, debe haber un balance entre el costode probar y la necesidad de manipular los errores. Generalmente no es posibleprobar un sistema para encontrar todas las fallas y hacer un programa quereaccione a cada una de estas fallas.

· Eficiente. Los programas deben usar de manera correcta los recursos del sistemaen el cual se están ejecutando. En un avión, por ejemplo, el tamaño y el peso de unacomputadora es limitado. De modo que el software utilizado en esos sistemas debeestar restringido a la capacidad de memoria y a la velocidad del procesadorutilizado. Los programas que desperdician memora y recursos del sistema,usualmente no sirven, porque cuando aumenta el volumen de datos, esosprogramas pueden ocasionar errores fatales. Un error fatal es aquel que hacedetener la normal ejecución de un programa, ocasionando en ciertos casos que sedeba reiniciar el sistema completo.

· Utilizable. Los programas utilizables son aquellos que el usuario final encuentrafáciles de operar. La utilizabilidad depende de algunos factores, como las formaspara introducir los datos a la computadora, el diseño de los menús de opciones y lapresentación de la información. Los mensajes informativos y los archivos de ayudamejoran la utilizabilidad. La documentación del usuario offline como los manualesimpresos, deben ser fáciles de leer y de seguir en la operación del sistema;asimismo, la ayuda en-línea se debe distribuir y buscar más fácilmente.

· Mantenible. Un programa mantenible involucra hacer cambios a un programadespués de haber sido implementado. Es posible que después de un tiempo, elusuario ya no esté completamente satisfecho con el sistema, entonces se debemodificar. La facilidad con que se puedan hacer esos cambios es lo que hace a unsistema mantenible. Un programador debe, entonces, estar familiarizado con lasintaxis del lenguaje de programación enque fue creado el sistema.

Una excelente recomendación que es muy simple de aplicar para que nuestrosprogramas seas claros y fáciles de seguir, es utilizar identación en la escritura delcódigo. Como ejemplo, notemos la diferencia entre estos dos segmentos de código.

3 7

mailxmail - Cursos para compartir lo que sabes

Page 38: Informática. Desarrollo científico del ordenador

Cuando los programas tienen cientos o miles de líneas de código, la identación - ola falta de ella - afectarán significativamente la legibilidad del programa. Tambiénlos comentarios incrementan la legibilidad de un programa. Todos los lenguajes deprogramación tienen un modo de insertar texto que no se ejecuta como parte delprograma, por ejemplo, C trata cualquier texto entre /* */ como un comentario.

Un esfuerzo que deberíamos practicar, es escribir variables con un significado quenos haga recordar fácilmente el porqué existe tal variable. Los nombres para lasvariables, generalmente empiezan con una letra y pueden continuar con más letras ocon números, y a veces también se permiten los guiones y muy pocos símbolosespeciales. Estas reglas son muy generales y se permiten nombres como a23 para elnombre de una variable.Comparemos los siguientes dos fragmentos de código en Pascal y notemos lalegibilidad en cada uno de ellos.

Cualquier persona que lea este último fragmento de código, no sabría lo que

3 8

mailxmail - Cursos para compartir lo que sabes

Page 39: Informática. Desarrollo científico del ordenador

significan los símbolos m, n s y e. Pero los ejemplos del código con las variables consignificado dan una mejor idea de lo que queremos expresar en el código. A pesarde la recomendación de elegir nombres con significado para las variables, seprefieren nombres cortos para las variables, veamos; el nombre de la variablesalarioDeEmpleadosMensual es menos preferible que salarioMensual.

3 9

mailxmail - Cursos para compartir lo que sabes

Page 40: Informática. Desarrollo científico del ordenador

20. Software. Ciclo de vida

D. Fases del ciclo de vida del software

El software varía en complejidad dependiendo de lo que se requiere hacer. Lamayoría de los paquetes de software consisten de muchos módulos, cada módulo esresponsable de ciertas tareas específicas. Para simplificar el desarrollo del software,se sigue una serie de pasos que se llaman el ciclo de vida del software, y que sonseguidos durante el tiempo que un software existe (figura 21).

Figura. 21. Fases del desarrollo del software. Una vez que se concluye,prácticamente se inicia nuevamente al entender las modificaciones que debenhacerse.

1) Introducción al ciclo de vida del software: Regularmente hay cinco pasos en elciclo de vida del software:

a) Entender el problema. En la primera fase del ciclo de vida del software, seenlistan las tareas que el software debe desarrollar, los problemas a ser resueltos, yen esta fase se estudian sus causas y efectos.

La tarea específica que se requiere del programa se deriva del establecimiento delproblema, que es una descripción concisa del problema en cuestión. El softwaredebe proporcionar una solución utilizable a este problema.

b) Diseñar el programa. En la fase de diseño, el objetivo es conocer las relacionesentre los módulos del programa, y garantizar que se cumplen cabalmente losrequerimientos solicitados de una manera eficiente, lógica y completa.

Los diseñadores de software consideran los recursos de hardware y softwaredisponibles para poder alcanzar su objetivo. Si se llega a la conclusión de que no esposible utilizar algún hardware o software, se planea utilizar una estrategia diferente.

Primero se diseña la estructura general del programa. Entonces el problema sedivide en subproblemas en tareas más y más pequeñas hasta que tengan un tamañomanejable.

c) Codificar el programa. Durante la fase de codificación, el programa se escribe enun lenguaje de programación. Hay muchos lenguajes de programación, cada uno deellos es especialista en algún tipo de problemas. Por ejemplo, FORTRAN esespecialista en cálculos numéricos, mientras que LISP es especialista en problemasde inteligencia artificial y procesamiento simbólico. El código del programa debe

4 0

mailxmail - Cursos para compartir lo que sabes

Page 41: Informática. Desarrollo científico del ordenador

desarrollar la tarea solicitada, y debe ser legible de modo que otros programadoreslo puedan mantener. Los programas se escriben usualmente en módulos separados,cada módulo desarrolla alguna tarea específica y debe funcionarindependientemente y en relación con el resto del programa.

d) Probar el programa. Durante la fase de pruebas, el programa se ejecuta y serevisa. Las tareas deben ejecutarse sin errores en los resultados y también sinerrores fatales. Los defectos en los programas se llaman bugs.

Se examinan primero los módulos de manera individual, en formaindependientemente, luego, se prueba todo el programa para encontrar bugs quepuedan ocurrir en la interacción de los módulos. Cuando se encuentra un bug, seaísla la causa y se resuelve. Este proceso se llama depuración. El programador sedebe asegurar de al resolver un bug, no se crean otros más en alguna otra parte delprograma.

e) Mantener el programa. Durante la fase de mantenimiento, de determina cualquiererror y deficiencia en el programa, y se realizan cualquier acción para resolverla,mientras se preserva la integridad del programa. El uso de notas de diseño, códigobien documentado y variables entendibles, pueden ayudar al mantenimiento futurodel programa.

4 1

mailxmail - Cursos para compartir lo que sabes

Page 42: Informática. Desarrollo científico del ordenador

21. Software. Desarrollo

2) Roles en el desarrollo del software: Una persona por sí sola puede llevar odesarrollar los programas en cada etapa del desarrollo del software, perousualmente esto es una excepción, la mayoría de los programas son grandes ycomplejos.

Figura. 22. Roles de las personas que trabajan en el desarrollo del software.

Una compañía de software emplea, frecuentemente, diversos equipos, cada uno deellos es responsable de una fase diferente en el desarrollo del software (figura 22).

Un equipo de desarrollo de software, típicamente está compuesto por varios programadoresprogramadores, al menos un programador analista y al menos un analista desistemas.

Los programadores asistentes usualmente son programadores con poca experiencia.Estos no escriben nuevos programas, en lugar de esto, se dedican a desarrollartrabajos de mantenimiento acerca de otros programas.

Cuando los programadores han adquirido más experiencia, pueden hacer nuevosprogramas. Las especificaciones de esos programas ya deben estar analizadas yautorizadas.

Los programadores experimentados Senior programmer dan las especificaciones delprograma y escriben nuevos programas. Ellos no hacen tareas de mantenimiento,s´olo se dedican a generar nuevo código.

Un programador analista trabaja muy de cerca con los diseñadores del programa.Además de programar nuevo código, los programadores analistas empiezan aaprender las técnicas y los lineamientos del diseño 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). Losanalistas traducen esos requerimientos en diseños de programas y se lo comunicana los programadores, quienes hacen de hecho, la programación.

4 2

mailxmail - Cursos para compartir lo que sabes

Page 43: Informática. Desarrollo científico del ordenador

Figura. 23. En la fase de análisis de requerimientos, los clientes y los analistasdefinen el propósito y capacidades del software.

4 3

mailxmail - Cursos para compartir lo que sabes

Page 44: Informática. Desarrollo científico del ordenador

22. Programas. Desarrollo. Codificar un programa

III. DESARROLLO DE PROGRAMAS

AL final de esta sección, seremos capaces de describir cómo hace la computadorapara poder ejecutar los programas, y cómo debemos escribirlos de modo quecometamos menos errores y al mismo tiempo que nuestros programas sean máslegibles 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 lascolumnas de los pasos en el orden adecuado.

Al escribir un programa, el programador debe completar satisfactoriamente cadauno de estos pasos:

1) Entender las especificaciones del programa. El programador debe entendercuáles son las entradas y cuáles son las salidas que se requieren del programa,además del proceso lógico de los datos.

2) Diseñar el programa. Los diseñadores de programas, utilizan herramientas dediseño, como el pseudocódigo o un diagrama de flujos estructurados. Estasherramientas detallan las tareas lógicas que el programa debe realizar. Elprogramador debe analizar rigurosamente el diseño, para asegurarse de que haentendido bien el resultado correcto esperado.

3) Codificar el programa. Un programador codifica el programa escribiendo en unlenguaje de programación en particular. El código se puede escribir primero enpapel - como una recomendación para los programadores principiantes - o sepuede escribir en la computadora utilizando un editor. El programador revisa lalógica del código y la sintaxis, para asegurarse de que todo está correcto. Esto lopueden hacer manualmente, en lo que se conoce como prueba de escritorio. Unaprueba de escritorio hace que se descubran algunos errores que se pueden corregirantes de que el código sea compilado.

Algunas veces, los programadores revisan el código de otros programadores. Estoes una buena práctica de programación y ocasiona que se revise el código al menosdos veces en busca de posibles errores.

4 4

mailxmail - Cursos para compartir lo que sabes

Page 45: Informática. Desarrollo científico del ordenador

4) Compilar el programa. Las computadoras pueden ejecutar programas en códigomáquina únicamente. El proceso de traducir un código hecho en un lenguaje de altonivel en código en lenguaje máquina se llama compilar, o interpretar el programa.Los programas que se encargan de compilar o de interpretar programas se llamancompiladores o intérpretes. Los compiladores se utilizan más frecuentemente quelos intérpretes. El código que tiene errores no se puede compilar. El compiladorgenera un mensaje que nos indica que existe un error en el código, y elprogramador 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 serejecutado. Un programa que es interpretado, se ejecuta línea por línea hasta llegaral final del programa o hasta que se encuentre un error.

6) Depurar el programa. El programador revisa las salidas del programa paraasegurarse de que son correctas. Puede ocurrir, sin embargo, que aún cuando noexistan errores de sintaxis, si existan errores en la lógica del programa, lo quepodría ocasionar errores en la salida del programa, o errores que se encuentran almomento de estarse ejecutando el programa. Hay diferentes tipos de errores que sepueden cometer al escribir programas, desde los más simples que se comenten alescribir mal algunas palabras, hasta los más difíciles de encontrar, que son aquellosen que tiene que ver un mal diseño del programa o errores en tiempo de ejecución.

4 5

mailxmail - Cursos para compartir lo que sabes

Page 46: Informática. Desarrollo científico del ordenador

23. Desarrollo de programas. Editores

B. Editores

Los editores son aplicaciones de software que permiten a los programadores escribirel texto de los programas en la computadora. A diferencia de los procesadores depalabras, los editores no permiten algunas características de formato, es decir, nopermiten justificar, centrar texto, ni tipos de letras ni otras características deformato de texto.

En general hay dos tipos de editores:

1) Editores de líneas. Esta clase de editores fueron los precursores de los editoresde pantalla completa. Permitían al programador editar una sola línea a la vez. Elprogramador debe especificar qué línea se debe editar.

Hay aún dos editores de líneas que son populares:

· v i Es una abreviación para visual. vi es un editor basado en UNIX.

· Edlin Es una contracción de Edit lines. Edlin se puede utilizar en una plataformade MS-DOS.

2) Editores de pantalla completa. Los editores de pantalla completa son másfáciles de usar que los editores de líneas, porque los programadores editancualquier línea en cualquier momento. Los editores de pantalla completa puedenproporcionar varias herramientas útiles para los programadores, por ejemplo:

· Menús de cortina. En los editores de pantalla completa pueden haber comandospara hacer alguna tarea específica, estos comandos suelen ordenarse y agruparseen menús que se despliegan hacia abajo (como una cortina), de modo que elprogramador no tiene que aprenderlos de memoria.

· Integración con compiladores e intérpretes. La integración de los programascompiladores e intérpretes con editores, ofrece muchas ventajas para losprogramadores. Esto significa que el código puede ser escrito, editado, compilado ointerpretado, y ejecutado desde el mismo programa. Esto difiere de los editores delíneas, donde un programa por separado desarrolla cada función.

· Texto coloreado. Algunos editores pueden mostrar palabras específicas en uncolor particular para distinguirlas del resto del código. Estas palabras se llamanpalabras reservadas, por ejemplo begin en Pascal. Así mismo, otro texto se puedecolorear, por ejemplo los números, las cadenas de caracteres y los comentarios,frecuentemente se identifican con otro color.

· Números de línea y de columna. Para los programadores es muy útil saber elnúmero de línea y de columna en cada momento de la edición, porque cuando elcódigo es revisado por el compilador, este devuelve una lista de errores (si loshubiera, y frecuentemente los hay) junto con el número de línea en que se hadetectado.

4 6

mailxmail - Cursos para compartir lo que sabes

Page 47: Informática. Desarrollo científico del ordenador

· Texto autocompletado. Es una característica que permite al programadorempezar a escribir un comando, y el editor "se da cuenta" de qué comando sepretende escribir, entonces completa el comando y lo muestra marcado. Porejemplo, si el programador escribe be, el editor puede completarlo con begin. Si lapalabra no es el comando requerido, el programador sigue escribiendo sobre lazona marcada.

Ejercicio:

1 ) ¿Cuál de los siguientes formatos crees que debes utilizar para grabar el código deun programa, que se ha escrito en un procesador de palabras?

a) Word97b) RTF (Rich Text Format)c) Text only (ASCII)d) PDF (Portable Document File)

4 7

mailxmail - Cursos para compartir lo que sabes

Page 48: Informática. Desarrollo científico del ordenador

24. Compiladores e intérpretes de programas

C. Compiladores e intérpretes

Un archivo fuente es el que contiene el texto del código del programa que ha sidoescrito por el equipo de programadores. Las computadoras solamente puedenejecutar instrucciones que estén en código máquina, así que los programas encódigo fuente no se pueden ejecutar directamente en la computadora. Un compilador debe, en primer lugar, convertir el archivo fuente en un archivointermedio que se llama archivo objeto o archivo código objeto (figura 24). Elarchivo objeto contiene una traducción del código del programa en lenguajemáquina, pero aún no se considera un programa ejecutable.

Una división común para describir los compiladores, como menciona TorbenAEgidius Mogensen en [5], es como se describe enseguida, aunque el orden puedecambiar, algunas fases se pueden combinar o dividir en otras fases o aún otras fasesse pueden insertar, pero en general, los compiladores siguen estas tareas:

· Análisis léxico. Es la parte inicial de leer y analizar el código fuente. El texto esleído y dividido en tokens, cada uno de los cuales corresponde a un símbolo en ellenguaje de programación, por ejemplo, el nombre de una variable, una palabrareservada o un número.

· Análisis sintáctico. En esta fase se toma una lista de tokens producida por elanálisis léxico y los acomoda en una estructura de árbol llamada árbol sintáctico querefleja la estructura del programa. Esta fase también se llama parsing.

· Verificación de tipos. En esta parte se analiza el árbol sintáctico para determinarsi el programa viola ciertos requerimientos de consistencia, es decir, si una variablese utiliza pero no se declara, o si se usa en un contexto que no tiene sentido por eltipo de variable, tal como un string para utilizar un valor booleano como unafunción apuntador.

· Generación de código intermedio. El programa se traduce a un lenguaje simpleindependiente de la máquina.

· Ubicación de registros. Los nombres simbólicos de las variables utilizadas en elcódigo intermedio se traducen a números, cada uno de ellos corresponde a unregistro en el código máquina objetivo (de la máquina que va a ejecutar finalmenteel programa).

· Generación de código máquina. El lenguaje intermedio se traduce al lenguajeensamblador (una representación textual de código máquina) para una arquitecturade máquina específica.

· Ensamblado y Enlazado. El código en lenguaje ensamblador se traduce a unarepresentación binaria y se determina la dirección real de las variables, funciones,etc.

4 8

mailxmail - Cursos para compartir lo que sabes

Page 49: Informática. Desarrollo científico del ordenador

Figura. 24. Historia de la compilación de un programa, desde el código fuente hastael código ejecutable.

Un programa linker (enlazador), combina todos los módulos en el archivo objetopara formar un archivo ejecutable (figura 24). Un archivo ejecutable sí es unprograma completo en sí mismo, es decir, no requiere hacer referencia al códigofuente original. Esto significa que correrá más rápidamente, comparado con laejecución del mismo programa cuando aún no es ejecutable.

Un intérprete traduce un código fuente en lenguaje máquina también. El intérpretedifiere del compilador en que ejecuta cada orden una vez que se traduce. Esteproceso puede hacer más lenta la ejecución del programa, así que los intérpretes seutilizan menos que los compiladores. Un intérprete es otra manera de implementarun lenguaje de programación. La interpretación comparte muchos aspectos con elcompilador. Los análisis léxico, sintáctico y verificación de tipos son exactamentelos mismos que en un compilador.

Pero en lugar de generar código del árbol sintáctico, el árbol sintáctico se procesadirectamente para evaluar expresiones y ejecutar sentencias, y así hasta terminar.Un intérprete puede necesitar evaluar la misma parte del árbol sintáctico variasveces (por ejemplo cuando se hacen ciclos), por eso la interpretación puede ser máslenta que la ejecución de un programa compilado. Pero escribir un intérprete es másfácil de mover a una máquina diferente, así que para aplicaciones donde la velocidadno importa, lo mejor es utilizar un intérprete.

Es muy útil sabe cómo se hace un intérprete o un compilador, porque esto permite alos programadores tener una idea de lo que hacen los programas de alto nivel, loque a su vez, ayudará a los programadores para crear código más eficiente. Otrasrazones. Los errores que devuelven los compiladores proporcionan una manera fácilde entender el código fuente; además, se conoce la diferencia entre errores léxicos,sintácticos, errores de tipos, y así.

4 9

mailxmail - Cursos para compartir lo que sabes

Page 50: Informática. Desarrollo científico del ordenador

5 0

mailxmail - Cursos para compartir lo que sabes

Page 51: Informática. Desarrollo científico del ordenador

25. Depuradores de programas. Errores de código ycomentarios

D. Depuradores, errores de código y comentarios

Depurar el código significa quitar los errores. Todos los errores deben sereliminados antes de que se diga que se ha terminado de hacer un programa.

Los dos tipos principales de errores son sintácticos y lógicos.

· Errores de sintaxis. Los errores de sintaxis, o sintácticos, ocurren cuando elprogramador escribe código que no va de acuerdo a las reglas de escritura dellenguaje de programación. Son como los errores gramaticales en el lenguaje común.Hasta que un código fuente no tenga errores de sintaxis, no se puede traducir encódigo máquina.

· Errores lógicos. Los errores lógicos ocurren a causa de un mal diseño delprograma. Puede ocurrir que una línea de código observe todas las reglas sintácticasdel lenguaje, pero el código tenga una lógica equivocada.

Los errores lógicos son menos obvios que los errores sintácticos, de modo que losprogramas pueden ser compilados o interpretados sin reportar este tipo de error.Los errores se descubren usualmente cuando el programa está siendo ejecutado y seestudia la salida.

Un debugger ejecuta un programa línea por línea para que el programador puedaexaminar paso a paso, la ejecución de su programa, con el fin de encontrar loserrores lógicos (figura 25).

Figura. 25. Un debugger auxilia al programador para encontrar errores lógicos en elcódigo fuente.

El código debe ser legible y entendible, para que pueda ser mantenido. Loscomentarios se pueden escribir en el código para asegurarse que cumple estosrequisitos.

Los comentarios se usan para proporcionar notas explicatorias para el programador

5 1

mailxmail - Cursos para compartir lo que sabes

Page 52: Informática. Desarrollo científico del ordenador

acerca de lo que hace alguna función en particular, o bien para especificar lautilidad de alguna parte del código, o especificar el tipo y función de las variablesutilizadas.

Cada lenguaje de programación codifica los comentarios de un modo en particular,hay básicamente dos clases de comentarios:

· Los comentarios de una sola línea. Esta clase de comentarios requieren una marcaespecial para que el compilador o el intérprete sepa que lo que sigue después de lamarca y hasta el final de la línea no debe tomarse en cuenta para efectos decompilación. En el lenguaje FORTRAN, los comentarios de una sola línea empiezancon una letra C, solamente si se escribe en la primera columna del texto, en otrasversiones la marca es un !. En C, podemos escribir un comentario de una sola líneacon \ \ .

· Los comentarios de bloque. Permiten escribir más de una línea en forma decomentario, esto es útil cuando deseamos dar una breve explicación del uso dealguna parte del código sin tener que comentar cada línea. En C, es posible crear unbloque de código empezando con la marca \* y terminando el bloque con la marca *\

5 2

mailxmail - Cursos para compartir lo que sabes

Page 53: Informática. Desarrollo científico del ordenador

26. Algoritmo. Instrucciones precisas

IV. INTRODUCCIÓN A LOS ALGORITMOS

UN algoritmo es una secuencia finita de pasos bien determinados que sirven pararesolver un problema [6]. Los algoritmos toman datos de entrada, los procesan deacuerdo al conjunto de instrucciones, y generan una salida. Se dice que la palabraalgoritmo proviene del nombre del matemático persa Muhammad ibn Músáal-Khwárizmí (figura 26), quien escribió un tratado llamado Sobre cálculos connumerales hindús.

Figura. 26. Muhammad ibn Músá al-Khwárizmí. 780 D.C. - 850 D.C. aprox.

A. Los algoritmos deben contener instrucciones precisas

En ocasiones se suele mostrar cómo funciona un algoritmo con la idea del procesopara crear un pastel, en términos generales si es correcto, pero en términosespecíficos no lo es porque generalmente, una receta involucra pasos que no sonbien determinados. Una receta para crear un pastel puede considerarse unalgoritmo porque es un conjunto de pasos (aunque no necesariamente son biendeterminados), donde hay algunos elementos de entrada, que son los ingredientes,un procedimiento que es la manera de hacerlo según la receta y un producto desalida, que es el pastel mismo.

El problema define la salida deseada, que a su vez, determina las entradas y lasinstrucciones. Por ejemplo, al decidir qué tipo de pastel queremos, debemosdeterminar qué ingredientes necesitamos y las instrucciones a seguir. Supongamosque decidimos escribir un algoritmo para hervir agua. La entrada es la cantidad deagua a cualquier temperatura por debajo del punto de ebullición y la salida es elagua hirviendo. Un algoritmo debe proporcionar la salida correcta para cualquiercondición de los datos de entrada.

Ejercicio: Ordene los siguientes pasos en orden de prioridad para resolver elproblema de hervir agua.

5 3

mailxmail - Cursos para compartir lo que sabes

Page 54: Informática. Desarrollo científico del ordenador

Sin duda, podemos escribir los algoritmos en español. Para producir resultadosconsistentes, el lenguaje que usemos debe estar libre de ambigüedades. Si decimosalgo como: Verificar que la olla tenga suficiente agua, es una frase ambigua, porquepara 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 sucapacidad de agua, porque se define qué es lo que significa suficiente. En estesiguiente ejemplo debemos incluir un paso para llenar la olla con agua bajocondiciones específicas.

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

-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 entradasea procesada y la salida deseada se alcance, el proceso termine. Agregaremosentonces la instrucción final para terminar el algoritmo

-Cuando el agua este hirviendo, apagar la estufa.

5 4

mailxmail - Cursos para compartir lo que sabes

Page 55: Informática. Desarrollo científico del ordenador

27. Diseño Top-Down

B. Diseño Top-Down

El diseño Top-Down fue promovido en la década de 1970 por el investigador de IBMHarlan Mills y Nickaus Wirth. Mills desarrolló conceptos de programaciónestructurada para utilizarlos y probarlos en un proyecto de 1969 que tenía comoobjetivo automatizar algunos procedimientos del periódico New York Times. Eldesarrollo de este proyecto hizo que se dispersara y se ampliara la idea de hacer losprogramas con esta filosofía 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 programación Pascal, escribió un artículo muyimportante acerca del Desarrollo de programas por medio de refinamiento de pasos.Esta idea de diseñar programas permaneció como principal corriente de desarrollohasta fines de la década de 1980, cuando fue desplazada por la programaciónorientada a objetos, sin embargo continúa siendo una muy importante ayuda para eldesarrollo de los métodos en los la programación orientada a objetos [7].

Figura. 27. Niclaus Wirth (izq.) y Harlan D. Mills (der.) fueron los primerospromotores del diseño Top-Down en la década de 1970.

La solución a los problemas computacionales puede llegar a se muy complicada ycompleja. Cuando los programas son de miles de líneas, o componerse de diversosarchivos de código, es imposible mantener todos los detalles del programa enmente cuando se desarrolla un algoritmo.

El diseño top-down es una herramienta que presenta en primer lugar una solución aun problema general utilizando tres o cuatro pasos solamente. Cada uno de esospasos en la primera solución se dividen en otros subpasos. Este proceso se repitevarias veces, en cada iteración se produce una solución más detallada al problemaoriginal. Cuando los pasos ya no se pueden subdividir, el algoritmo ha terminado. Eldiseño top-down también se conoce como descomposición funcional orefinamiento de pasos.

Ejercicio: De la siguiente lista de actividades, ¿cuál crees que está orientada aldiseño Top-down?1) Empezar con los detalles2) Empezar con el problema en general3) Considerar el problema general y los detalles al mismo tiempo

El diseño top-down automáticamente produce módulos en un algoritmo.

5 5

mailxmail - Cursos para compartir lo que sabes

Page 56: Informática. Desarrollo científico del ordenador

Recordemos que los módulos son grupos de instrucciones que desarrollan funcionesespecíficas. Supongamos que queremos escribir un algoritmo que imprima facturas,en primer lugar vamos a identificar esa tarea en la primera iteración den diseñotop-down. El paso calcular el monto total de la factura lo podemos redefinir como.

Lo que nos ayuda a definir los módulos de nuestro algoritmo en:

Módulo 1. Obtener detalles del clienteMódulo 2. Obtener detalles de todas las ´ordenes de ese clienteMódulo 3. Calcular el monto total de las facturas del clienteMódulo 4. Agregar el 5% de interés a las facturas de hace 1 mesMódulo 5. Agregar el 10% de interés a las facturas anteriores a 1 mesMódulo 6. Sumar el monto de las facturas con el total de los interesesMódulo 7. Imprimir el monto total

Cada módulo debe ser tratado en la misma manera que el problema general, eldiseño top-down, hace que el problema general se convierta en problemas másespecíficos y en general más fáciles de resolver.

5 6

mailxmail - Cursos para compartir lo que sabes

Page 57: Informática. Desarrollo científico del ordenador

28. Algoritmo. Pseudocódigo

C. Pseudocódigo

Ejercicio: El pseudocódigo es útil cuando queremos escribir algoritmos de unamanera definida y consistente. ¿Cuál de las siguientes aseveraciones crees que esverdadera para los pseudocódigos?

1) Pueden correr como un programa por sí mismos2) Se deben sujetar a estándares predefinidos3) No existe un estándar absoluto para los pseudocódigos

En realidad no existe un estándar para los pseudocódigos, pero podemos seguir lassiguientes recomendaciones.

· Utilizar español simple.· Escribir cada instrucción en una línea separada.· Utilizar identación donde sea apropiado.· Proporcionar solamente un punto de entrada y un punto de salida para unalgoritmo.· Agrupar las instrucciones en módulos.

Podemos hacer que nuestros pseudocódigos sean claros y concisos utilizandopalabras comunes en español. La sentencia Encontrar la diferencia entre losnúmeros A y B, se puede expresar de manera más clara como Diferencia:= A - B.

Cuando tengamos múltiples instrucciones en una sola línea, ocasiona que nuestroalgoritmo sea más difícil de seguir.

Pero si escribimos una sentencia en cada línea, el código va a ser más legible.

Si la secuencia que llevan las instrucciones se desarrolla dentro de una estructura decontrol como el estatuto SI-ENTONCES, debemos identarlo para tener mayor claridad.

Cuando la ejecución de la secuencia de instrucciones dentro del bloque de laestructura de control termina, la identación también termina, y vuelve a tener elnivel anterior.

5 7

mailxmail - Cursos para compartir lo que sabes

Page 58: Informática. Desarrollo científico del ordenador

En algunas ocasiones, un bloque de instrucciones se debe ejecutar varias veces endiferentes puntos en el algoritmo, en este caso, las instrucciones se deben agruparen un módulo con su propio nombre.

Si deseamos reutilizar el código que hemos escrito, para poder ejecutar lasinstrucciones que están en ese segmento de código tantas veces como seanecesario, debemos poner esas instrucciones en un módulo por separado y llamarlocuando se requiera.

El pseudocódigo no es un lenguaje de programación - no puede se ejecutado.Solamente es una herramienta de diseño de programas que es muy útil para planearnuestro código.

5 8

mailxmail - Cursos para compartir lo que sabes

Page 59: Informática. Desarrollo científico del ordenador

29. Algoritmo. Trabajando con las entradas

D. Trabajando con las entradas

Para hacer las operaciones básicas en la computadora, es necesario conocer algunasconvenciones específicas del lenguaje para codificar programas.

Ejercicio: Las computadoras pueden recibir los datos de entrada de diferentesfuentes tales como un archivo o un módem. ¿Cuáles de las siguientes sentenciaspiensas que se deberían utilizar para codificar la entrada de datos?1 ) obtener2 ) enviar3 ) leer4 ) 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 información y desplegarlaen el monitor, o escribirla en un archivo o hacia cualquier otro dispositivo de salidade datos.

Para indicar que un dato se debe desplegar en la pantalla del monitor, podemosutilizar sentencias como poner, desplegar o salida, pero preferimos desplegar. Yutilizaremos la sentencia escribir para almacenar datos en un archivo que se va agrabar en el disco duro.

En las sentencias de los pseudocódigos, un sustantivo se utiliza para establecer undato de entrada o de salida.

Para asignar valores, podemos utilizar palabras como inicializar, guardar oalmacenar, pero vamos a utilizar SEA

Por ejemplo, el comando SEA total EN 10, que nos indica que debemos considerarque 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 elusuario teclee en su teclado y lo debe asignar a la variable total.

Una vez procesado el dato, podemos conocer el resultado en la salida delpseudocódigo, con una orden como imprimir total, que mostrará el valor de salidaque ha sido almacenado en la variable total , y lo mandará a la impresora, al monitoro hacia algún dispositivo de salida para su impresión.

Una convención muy útil es encerrar texto entre comillas simples, lo que nosindicará que la secuencia de símbolos que están entre comillas simples, se debeconsiderar como una palabra y no como una variable o palabra reservada. Por

5 9

mailxmail - Cursos para compartir lo que sabes

Page 60: Informática. Desarrollo científico del ordenador

ejemplo, con el código imprimir ´total´ debemos entender que la impresora debe imprimir la palabra total, y no algún valor asignado a alguna variable total.

Las operaciones aritméticas son muy importantes en las operaciones de lacomputadora. En pseudocódigo, podemos utilizar los símbolos convencionales paradescribir las operaciones aritméticas.

6 0

mailxmail - Cursos para compartir lo que sabes

Page 61: Informática. Desarrollo científico del ordenador

30. Igualdad y asignación de algoritmo

1) Igualdad y asignación: Haremos una mención especial al símbolo =, porque enmuchos lenguajes de programación es importante hacer diferencia entre elsignificado del símbolo.

Empezaremos por poner un ejemplo para ver el problema que encierra estesímbolo. Supongamos que en el código del programa tenemos las siguientes líneas.

En la línea 2, el valor asignado a la variable a es 1, de modo que en adelante, sepuede sustituir la ocurrencia de la variable a por la constante 1, a menos que existaotra orden que señale lo contrario.

El problema se presenta de inmediato, porque en la línea 3 hay una pregunta, quesolicita el valor de a, pero como hemos utilizado el símbolo = para asignar valores avariables, en realidad, lo que debemos pensar es que en la línea 3 del pseudocódigo,estamos asignando el nuevo valor 5 a la variable a, lo que ocasionará errores lógicosen la ejecución del programa.

Es por esta razón que utilizaremos diferentes símbolos para describir las diferentessituaciones respecto a la igualdad.

Si se trata de una igualdad de tipo asignación de valores, utilizaremos :=, como envariable := nuevoValor.

Si se trata de una igualdad lógica, en la que se puede obtener un valor que seaverdadero o falso, entonces debemos escribirlo como =, como en variable =valorComparado. Así, el pseudocódigo anterior puede ser reescrito como:

Es importante aclarar que lo expuesto anteriormente acerca del pseudocódigo, son convencionalismosconvencionalismos que no se deben tomar como un estándar ni mucho menos,

6 1

mailxmail - Cursos para compartir lo que sabes

Page 62: Informática. Desarrollo científico del ordenador

convencionalismos que no se deben tomar como un estándar ni mucho menos,simplemente es una manera un poco más organizada de plasmar las ideas, con elfin de causar menos confusiones al desarrollar programas de computadora.

6 2

mailxmail - Cursos para compartir lo que sabes

Page 63: Informática. Desarrollo científico del ordenador

31. Algoritmo. Construcción. La orden de GOTO (1/2)

V. CONSTRUCCIÓN DE UN ALGORITMO

En esta sección aprenderemos a describir la orden GOTO, el teorema de laEstructura, y cómo escribir un algoritmo.

A. La orden GOTO

En el diseño de los lenguajes de programación, la orden GOTO ha sido quizá la queha causado más discusiones.

Antes de que la programación estructurada fuera desarrollada a finales de la décadade 1960, los programadores utilizaban la orden GOTO para transferir el control deuna parte del programa a otra, en lugar de que el control continúe en la siguientelínea de código.

A pesar de la llegada de la programación estructurada, en lenguajes como Pascal, seconservó la orden GOTO, posiblemente por motivos históricos, o para permitir quelos programadores "de la vieja guardia" pudieran hacer la transición de su forma deprogramar de una manera más suave.

Para utilizar la orden GOTO, veamos el siguiente segmento de programa, enpseudocódigo.

Listing 1. Segmento de código utilizando la orden GOTO.

La figura 28 muestra de manera esquemática el flujo del control del programa.Vemos que en la línea 103 ocasiona que el control se transfiera a la línea 107,ocasionando un posible error lógico.

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

6 3

mailxmail - Cursos para compartir lo que sabes

Page 64: Informática. Desarrollo científico del ordenador

El problema con la orden GOTO, es que puede ocasionar que el programa transfierael control a direcciones más adelante y más hacia atrás sin ninguna restricción, ycomo frecuentemente sucede, la lectura y entendimiento del programa se complicaa medida que el código crece. Esta característica del flujo del control se conocecomo código espagueti.

6 4

mailxmail - Cursos para compartir lo que sabes

Page 65: Informática. Desarrollo científico del ordenador

32. Algoritmo. Construcción. La orden de GOTO (2/2)

Supongamos que queremos hacer un programa donde el usuario proporcione suedad, y el sistema imprima un cierto mensaje que debe ser leído sólo por laspersonas mayores de 18 años, de modo que si el usuario ingresa su edad y esmenor o igual a 18, entonces debe aparecer el mensaje de advertencia y terminar elprograma; si el usuario ingresa una edad mayor de 18, entonces el programaimprime 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 código. Se trata del mismo problema, pero desde unpunto de vista estructurado, sin la orden GOTO.

Figura. 29. Esquema del flujo de instrucciones utilizando GOTO, basado en elejemplo del listado 3. Los esquemas (a) y (b) describen el mismo flujo de órdenes, esclaro que la forma (b) es más entendible que (a).

Listing 3. Ejemplo de la orden si-entonces-enOtroCaso desde un punto de vistaestructurado.

6 5

mailxmail - Cursos para compartir lo que sabes

Page 66: Informática. Desarrollo científico del ordenador

Aunque el código 3 tiene más líneas que el código 2, es más legible y se entiendemejor. La lógica y el resultado de ambos programas es el mismo (figura 29), pero enel punto de vista estructurado es más fácil seguir la lógica del programa.

6 6

mailxmail - Cursos para compartir lo que sabes

Page 67: Informática. Desarrollo científico del ordenador

33. Teorema de la estructura. Construcción (1/2)

B. Introducción al Teorema de la Estructura

En 1966, los matemáticos Böhm y Jacopini publicaron un artículo donde semencionó lo que ahora conocemos como el Teorema de la Estructura [3].

El Teorema de la Estructura muestra cómo cualquier programa se puede escribirutilizando tres estructuras de control:

· Secuencias. Un programa de computadora ejecuta una lista de instrucciones unasola vez. Las instrucciones se ejecutan en la secuencia en la que aparecen, y elprograma no salta a ningún lado ni se repite ninguna de las instrucciones.

· Selección. La selección implica que es posible elegir entre algunas opciones, quedependen del valor de una condición especificada por el programador.

· Repetición. La repetición ejecuta por varias veces una sección de código mientrasque cierta condición permanece siendo verdadera.

Posteriormente, los mismos autores, mencionan que es posible utilizar solamentedos tipos de estructuras para hacer cualquier otro programa, y es que unacombinación de secuencias y selección, puede crear una repetición.

En muchos lenguajes de programación hay estructuras de selección, en particular laestructura SI-ENTONCES-ENOTROCASO, que corresponde a la estructuraif-then-else en el lenguaje Pascal, o IFELSE en lenguaje de NetLogo, o alguna similaren otros lenguajes.

También, en la mayoría de los lenguajes estructurados, el ámbito de las estructurasde control está restringido por símbolos o palabras clave, por ejemplo el uso dellaves en lenguajes como C ´{´ y ´}´, o palabras reservadas como Begin y END. En ellenguaje de pseudocódigo que estamos utilizando vamos a emplear varios pares depalabras, como ENTONCES-FINENTONCES, ENOTROCASO-FINENOTROCASO oEMPIEZA-TERMINA.

Ejercicio: En este ejemplo, la selección se hace en términos del valor que puedatener la variable edad. De acuerdo al siguiente código, ¿qué mensaje de textopiensas que se debe imprimir si el valor de la variable edad es igual a 18?

1) Se van a imprimir ambos mensajes

6 7

mailxmail - Cursos para compartir lo que sabes

Page 68: Informática. Desarrollo científico del ordenador

2) Ninguno de los mensajes3) El primer mensaje4) El segundo mensaje

En una orden de opción con la estructura SI-ENTONCES-ENOTROCASO, cuando lacondición de decisión adquiere un valor falso, se ejecuta la segunda parte de lacondición, es decir, la parte ENOTROCASO.

6 8

mailxmail - Cursos para compartir lo que sabes

Page 69: Informática. Desarrollo científico del ordenador

34. Teorema de la estructura. Construcción (2/2)

1) Acerca de la estructura de repetición: Una repetición ejecuta un segmento decódigo por más de una ocasión, si se cumplen las condiciones requeridas. Podemoscrear una orden de repetición utilizando la sentencia Mientras... FINMIENTRAS. Laorden MIENTRAS se utiliza para empezar un bloque que debe ser repetido. El bloquetermina con la marca FINMIENTRAS. Veamos el siguiente ejemplo.

Listing 4. Ejemplo de la orden mientras, se ejecuta un segmento de código mientrasuna condición sea verdadera.

Figura. 30. Diagrama que muestra el flujo del control del programa con unaestructura IENTRAS...FINMIENTRAS.

El listado 4 muestra un ejemplo de una repetición que (entre otras cosas) imprime elnúmero de boleto que se ha vendido, pensando en que el programa puede serutilizado en cualquier clase de taquilla que venda boletos y tenga un tope de 100boletos para vender.

Es importante mencionar que para entrar a un ciclo como el del ejemplo del listado4, es necesario tener el control de cuándo se descumplirá la condición. En esteejemplo, se inicializa una variable tope-vendidos en 100, antes de entrar al ciclo. Siomitimos esta orden, dependiendo del lenguaje de implementación pueden sucederdos cosas:

1 ) El sistema inicializa automáticamente la variable en 0, de modo que el ciclo nuncava a terminar, pues siempre la variable b-vendido será igual o mayor que 0, peronunca menor que 0.

2 ) El sistema trata de interpretar el contenido actual de la memoria alojado en esavariable en ese momento. Esto puede ocasionar resultados inesperados,ocasionando errores lógicos.

También es importante que en alguna parte del segmento que será repetido,

6 9

mailxmail - Cursos para compartir lo que sabes

Page 70: Informática. Desarrollo científico del ordenador

actualicemos alguna variable, de modo que eventualmente la condición evaluada encada ciclo resulte en un valor falso.

En el caso del listado 4, la variable que se actualiza en cada ciclo se encuentra en lalínea 207.

7 0

mailxmail - Cursos para compartir lo que sabes

Page 71: Informática. Desarrollo científico del ordenador

35. Algoritmo. Construcción. Definir un problema

C. Cómo definir un problema

Antes de escribir el código de un programa para resolver un problema, debemosentender perfectamente el problema que se pretende resolver. Un problemanormalmente se presenta en forma de requerimientos o de órdenes.

Ejercicio: Marca los tres elementos de un algoritmo

1) [ ] Datos de entrada2) [ ] Preguntas3) [ ] Datos de salida4) [ ] Procesos5) [ ] Requerimientos

Las opciones 1,3 y 4 son correctas. Los algoritmos se componen de entrada dedatos, los cuales se procesan y se obtienen datos de salida. Los requerimientos seutilizan para diseñar el programa, y las preguntas son una manera de puntualizarlos 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 yadverbios.

Una vez que hemos identificado todos los elementos de un problema, normalmentedescribirnos las entradas y las salidas utilizando una tabla de definiciones o tablaentrada-procesosalida. La tabla tiene tres columnas - Entrada, Proceso y Salida.

Podemos utilizar la tabla de definiciones para escribir un algoritmo - sus procesosson 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 página 22, la línea 204, el verbo es obtener y el objeto es datos-de-cliente.datos-de-cliente.

Ejercicio: Deseamos hacer un programa para calcular la velocidad a la cual debemanejar un piloto de rally para cubrir cierta distancia dada en un tiempo requerido.Identifica los elementos de entrada del problema.

1) [ ] El sustantivo tiempo.2) [ ] El sustantivo velocidad.3) [ ] El sustantivo distancia.4) [ ] El verbo calcular.

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

7 1

mailxmail - Cursos para compartir lo que sabes

Page 72: Informática. Desarrollo científico del ordenador

tiempo solicitados.

Para cualquier elemento de entrada en el problema, debe haber una orden como obtenerobtener o leer, por ejemplo en leer distancia.

El elemento final de salida se debe presentar al usuario utilizando una orden queenvíe el dato al dispositivo de salida adecuado, puede ser entonces imprimir, desplegar o escribir, como en imprimir velocidad. 

7 2

mailxmail - Cursos para compartir lo que sabes

Page 73: Informática. Desarrollo científico del ordenador

36. Algoritmo. Construcción. Escribir algoritmos

D. Cómo escribir algoritmos

Una vez que ya hemos comprendido adecuadamente el problema, podemos escribirel algoritmo. Probablemente necesitaremos reescribir el algoritmo varias veces paramejorarlo. Los algoritmos tienen ciertas características. Cada algoritmo empieza conun nombre que describe la función que realiza. Usualmente empieza con un verbo ytermina 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 másinstrucciones de pseudocódigo. Los elementos en las columnas de entradas ysalidas son los argumentos de las instrucciones.

Ejercicio: Supongamos que queremos escribir un programa que convierta unadistancia en kilómetros a una distancia en millas. En cada kilómetro hay 0.625millas. Coloca cada opción en su lugar correcto en la tabla de definiciones.1 ) kilómetros2 ) millas

¡Claro! los kilómetros van en la columna de entrada y las millas van en la columnade salida.

Para transformar los kilómetros en millas necesitamos un proceso. El verbo convertirconvertir en el enunciado del problema indica el proceso que necesitamos. Así quetenemos que calcular el número de millas que es equivalente al número dekilómetros dado. Y necesitamos un proceso que muestre las millas calculadas.

Podemos utilizar nuestra tabla para escribir nuestro algoritmo en pseudocódigo.

Listing 5. ALGORITMO para convertir kilómetros en millas.

7 3

mailxmail - Cursos para compartir lo que sabes

Page 74: Informática. Desarrollo científico del ordenador

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

7 4

mailxmail - Cursos para compartir lo que sabes

Page 75: Informática. Desarrollo científico del ordenador

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 opermanecer con el mismo valor durante la ejecución del programa. ¿Cuál de lossiguientes términos se refieren a los datos que se establecen al inicio y permanecensin cambio durante la ejecución de todo el programa?

1 ) Variable2 ) Constante3 ) Operador 4 ) Procedimiento

El término variable describe a los datos que pueden cambiar de valor mientras elprograma está en ejecución, mientras que el término constante describe a los datoscuyo valor se establece al inicio del programa y permanecen sin cambio durantetoda la ejecución.

Aunque las variables pueden cambiar de valor mientras el programa está enejecución, hay algunas ocasiones en que el valor de inicio se establece por losprogramadores para permitir a las variables que se utilicen con un valor conocido.Esto se conoce como inicializar la variable.

B. Cómo nombrar las variables y las constantes

Las variables y las constantes se alojan en alguna dirección particular de la memoria.Aunque el valor de las variables puede modificarse, la dirección de la memoria queocupan, permanece siendo la misma.

Las direcciones de la memoria se pueden identificar con números enteros en basehexadecimal, como AD56 o F0FF. Sin embargo, para que los programadores puedanrecordar más fácilmente la dirección de memoria que aloja el valor deseado, se lespone un nombre.

Ejercicio: Los lenguajes de programación tienen reglas que establecen la manera encómo se deben nombrar las variables y las constantes. ¿Cuál de las siguientes reglascrees que se aplican al nombrar las variables y las constantes?

1 ) Los nombres de las variables y las constantes no deben tener el mismo nombreque alguna palabra reservada en un lenguaje de programación.2 ) Los nombres no deben empezar con un dígito.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 mínima de 8 bytes o caracteres.

Algunos lenguajes de programación no permiten el uso de ciertos caracteres en losnombres de las variables y las constantes. Es posible que los nombres no empiecencon dígitos y no deben tener el mismo nombre que las palabras reservadas en el

7 5

mailxmail - Cursos para compartir lo que sabes

Page 76: Informática. Desarrollo científico del ordenador

lenguaje de programación.

Ciertos lenguajes no permiten el uso de caracteres específicos, como BASIC porejemplo, no permite el uso de * (asterisco), + (signo mas) y () (paréntesis).

Otra restricción común, aunque no es general, es que los nombres de las variables yconstantes no deben empezar con un dígito; así que las variables 2enero o 12mesesposiblemente no sean aceptadas como nombres válidos, pero enero2 y meses12 silo serán.

7 6

mailxmail - Cursos para compartir lo que sabes

Page 77: Informática. Desarrollo científico del ordenador

38. Variables y constantes (2/2)

Las palabras reservadas que se utilizan en los lenguajes de programación no sedeben utilizar como nombres de variables y de constantes. Por ejemplo, FOR es unapalabra reservada en BASIC, y VAR es una palabra reservada en Pascal. Ninguna deestas palabras se debe utilizar como nombres de variables ni de constantes en susrespectivos lenguajes.

Generalmente, el nombre de las variables y de las constantes tiene un límitemáximo para la longitud, dependiendo del lenguaje y de la versión del lenguaje quese esté utilizando.En unas versiones de Pascal, el nombre de las variables no puede exceder los 32caracteres.

Ejercicio: Para entender el propósito de una variable en particular, es importantedarle un nombre apropiado y con significado. ¿Cuáles de las siguientesconvenciones para los nombres crees que son apropiadas?1 ) El nombre o constante debe ser transparente para describir suficientemente bienel dato que representa 2 ) El número de caracteres en cada constante debe de ser 5 o menos3 ) Cada nombre debe ser único dentro de la parte del programa que se utiliza4 ) Cada variable debe de empezar con el prefijo `vari´

El nombre de una variable o constante debe ser lo suficientemente claro paradescribir el dato que representa, y cada nombre debe ser único dentro de la seccióndel programa que se utilice. Una variable que se refiera al tamaño de la población decierta especie, podría llamarse tamPoblacion. Una variable llamada tp0 podríareferirse al mismo dato, pero es más difícil de recordar y de entender, debido a quees 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 código que hagareferencia a dos lugares diferentes en la memoria, esto ocasiona lo que enprogramación se conoce como colisión de nombres.

Hay ocasiones en que los nombres de las variables si se pueden repetir, pero estosucede en lugares diferentes del código. Cuando nos referimos a lugares diferenteso el mismo lugar, significa el mismo ámbito de función o procedimiento o método.Veamos el siguiente ejemplo, en donde hay colisión de nombres.

Listing 6. Colisión de nombres 1

En este ejemplo (listado 6) en la línea 7 es evidente que habrá un problema, pues en

7 7

mailxmail - Cursos para compartir lo que sabes

Page 78: Informática. Desarrollo científico del ordenador

En este ejemplo (listado 6) en la línea 7 es evidente que habrá un problema, pues encada ocasión que se ejecute esta línea, el límite superior del ciclo se va a modificar yse generará un error de tipo lógico. Para corregir el error, seguramente elprogramador deberá modificar alguna de las y´s de la línea 8.

Listing 7. Colisión de nombres 2

7 8

mailxmail - Cursos para compartir lo que sabes

Page 79: Informática. Desarrollo científico del ordenador

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

C. Tipos de datos

Hay solamente cuatro diferentes tipos de datos que consideramos más simples oprimitivos. Otros tipos de datos son tipos que representan datos más complejos.Los tipos tienen que ver con la clase de dato, una variable puede alojar y determinarqué clase de operaciones se pueden desarrollar con el dato alojado en ella. En estetexto, vamos a nombrar los tipos de datos en negritas. Los tipos de datosfundamentales son:

· Caracter. Frecuentemente se les conoce como Char, porque generalmente loslenguajes de programación están en inglés. Este tipo de dato representa a loscaracteres simples, como 'm'. Un tipo de dato complejo que se deriva del tipocaracter, es aquel que reúne más de un caracter y forma palabras o frases, se llamatipo cadena o string. Ejemplo: la variable nombreEmploado de tipo string puedealojar el dato ´Juancho Perineo´.

· Entero. Los enteros están entre los tipos de datos más utilizados en los lenguajesde programación. Hay diferentes clases de números enteros y difieren por el tamañode ellos, incluyendo enteros cortos y enteros largos. Por ejemplo, en Java, losenteros cortos se alojan en 8 bits, mientras que los enteros de tipo largo, ocupanhasta 64 bits de longitud. Los números enteros son positivos y negativos, porejemplo -2 y 11390. Notemos que no tienen punto decimal.

· Real. Los números reales son números con parte decimal, por ejemplo -2.0,11390.0 y 12.45. Sin embrago, hay lenguajes de programación como NetLogo, queno hacen diferencia entre números enteros y reales cuando son exactos, como elcaso de 1 y 1.0.

· Booleano. Los valores booleanos son valores lógicos y pueden ser falso o verdaderoverdadero. En estos valores se indica el verdadero con el número 1 y el falso con el0. Algunos lenguajes de programación, como C, prefieren poner un 0 cuando esfalso y cualquier otra cosa cuando es verdadero. En el lenguaje de programaciónScheme, los valores lógicos son #\t y #\f y no tienen significado numérico.

El nombre que utilizan los lenguajes de programación puede ser diferente, aúncuando se trate del mismo conjunto de datos, por ejemplo, los números reales, enPascal se llaman real y en C de llaman float.

Ejercicio: En general, las variables que se utilizan en una pieza de código se debendeclarar al inicio de ese código, antes de que se utilicen en las expresiones. ¿Cuál delas siguientes informaciones crees que se debe proporcionar en las sentencias dedeclaración de variables?1 ) Su ámbito2 ) Su nombre3 ) Su tipo4 ) El número de veces que se debe utilizar5 ) El espacio en memoria que van a ocupar

Cuando se establecen las variables y las constantes, se debe proporcionar el nombre

7 9

mailxmail - Cursos para compartir lo que sabes

Page 80: Informática. Desarrollo científico del ordenador

y el tipo de datos que van a contener. Cada lenguaje de programación utiliza unasintaxis diferente para estas declaraciones. Por ejemplo, en Pascal, se utiliza lapalabra reservada VAR para empezar el bloque de declaraciones de variables. Pascalutiliza el código

Para mostrar que la variable numeroEmpleado es de tipo Enteros. Y utiliza el código

Para indicar que la variable salarioEmpleado es de tipo Reales.

La palabra reservada VAR (que puede estar en mayúsculas o minúsculas), es unamarca que indica el inicio del bloque de declaración de variables, y no se requiereanteponer a la declaración de cada variable. En el siguiente ejemplo, las variablesnumPersonas y temperatura se declararon al inicio del programa.

Listing 8. Nombre del Programa

8 0

mailxmail - Cursos para compartir lo que sabes

Page 81: Informática. Desarrollo científico del ordenador

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

En el lenguaje C, para declarar el tipo de una variable, se debe mencionar primero eltipo y después el identificador de la variable, como en int numPersonas;

Para acceder a los datos alojados en las variables, se puede hacer de 2 modosdiferentes en general: · Por su nombre. · Por su dirección

Al declarar variables, el compilador obtiene toda la información que necesita paratener siempre presente cuáles y de qué tipo son las variables que existen. Enalgunos lenguajes de programación como Fortran, se creaba una tabla de símbolos[8]. Por ejemplo, cuando se declaraba INT I, J, K, se creaba una tabla como lasiguiente:

De modo que el compilador tenía toda la información necesaria. Los compiladoresactuales ofrecen muchas otras capacidades, como declarar variables en tiempo deejecución.

Ejercicio: ¿Qué tipo de dato se utiliza para almacenar letras individuales?1 ) Entero2 ) Caracter3 ) Real4 ) Cadena5 ) Booleano

En un lenguaje de pseudocódigo, podemos decir que el tipo adecuado paraalmacenar letras individuales es el tipo Caracter, con lo que podemos almacenarletras como ´a´ y ´Z´. La opción Entero es incorrecto, a pesar de que los caracterestienen asociado un número entero que los identifica, porque la cantidad de númerosenteros dedicados a los caracteres es menor que la cantidad de números enteros.

El tipo Real, también es incorrecto, pues el formato y el espacio dedicado paraalmacenar tales números es diferente en los de tipo Caracter. El tipo Booleanoalmacena falso y verdadero, así que también es una respuesta incorrecta. El tipoCadena, es un tipo de dato compuesto, que se crea a partir de muchos elementosde tipo Caracter.

1) Convenciones en el lenguaje de pseudocódigo: En el lenguaje de pseudocódigoque estamos utilizando, adoptaremos una propuesta similar a la del lenguaje Pascalpara nombrar las variables y las constantes.

Utilizaremos las palabras especiales VARIABLES y CONSTANTES al inicio, paraestablecer el tipo y valor de las variables y constantes. Por ejemplo, el listado 7 sedebe reescribir como:

8 1

mailxmail - Cursos para compartir lo que sabes

Page 82: Informática. Desarrollo científico del ordenador

debe reescribir como:

Listing 9. Colisión de nombres 2, con variables y constantes.

8 2

mailxmail - Cursos para compartir lo que sabes

Page 83: Informática. Desarrollo científico del ordenador

41. Expresiones y órdenes

VII. EXPRESIONES Y ÓRDENES

En esta sección estudiaremos y aprenderemos a describir las expresiones y órdenesen la programación, de modo que no exista confusión entre los operandos yoperadores ni en la jerarquía de las operaciones.

A. Principios básicos

Un operador es un símbolo que representa una acción específica que se deberealizar en los datos.

Ejercicio: Los operadores trabajan con los operandos. ¿Cuál crees que es la mejordefinición de operando?

1 ) Es cualquier cosa que no es un operador.2 ) Es el valor que resulta después de que se ha desarrollado una acción.3 ) Son los valores con los que se efectúa una acción específica.4 ) Es la dirección de memoria en donde se alojan los datos para que el operadorfuncione.

Los valores con los que se efectúa una acción específica se conocen como operandos. Por ejemplo, en la expresión 3 + 5, los operandos son 3 y 5, mientrasque el operador es el símbolo +.

Cada operador se representa con un símbolo en particular, aunque el símbolo puedeser diferente en diferentes lenguajes de programación. Por ejemplo, el símboloutilizado para la operación elevar a alguna potencia, en unos lenguajes se utiliza el ^y en otros se utiliza **.

Los operadores aritméticos más frecuentes y que utilizaremos (ya hemos utilizadoalgunos) en nuestros algoritmos en pseudocódigo son:

AGRADECIMIENTOS

El autor quiere agradecer a la Universidad Juárez Autónoma de Tabasco por lasfacilidades otorgadas en el uso de los recursos de infraestructura.

REFERENCIAS [1] SkillSoft-Learning-Object, Getting Started with Programming. ACM Course online, http://acm.skillport.com/, Revisado en 2007.[2] John Kopplin, "An ilustrated history of computers." Recurso webhttp://www.computersciencelab.com/ComputerHistory/ History.htm, visitado el 15de agosto de 2007. Creado en 2002.

8 3

mailxmail - Cursos para compartir lo que sabes

Page 84: Informática. Desarrollo científico del ordenador

[3] C. Bohm and G. Jacopini, "Flow Diagrams, Turing Machines and Languages withonly two formation rules," communications of the ACM, vol. 9, pp. 366 - 371, May1966.[4] P. D. Terry, Compilers and Compiler Generators: An introduction with C++.International Thompson (out of printer. Postcript edition athttp://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 capítulo hemos llegado al final del curso.

8 4

mailxmail - Cursos para compartir lo que sabes