Informática. Desarrollo científico del ordenador · PDF fileInformática....

62
Informática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [ http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo] Descubre miles de cursos como éste en www.mailxmail.com 1 mailxmail - Cursos para compartir lo que sabes

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

Page 1: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

Informática. Desarrollo científicodel ordenadorAutor: Abdiel Cáceres González[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo]

Descubre miles de cursos como éste en www.mailxmail.com 1

mailxmail - Cursos para compartir lo que sabes

Page 2: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

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.

Visita más cursos como este en mailxmail:[http://www.mailxmail.com/cursos-informatica][http://www.mailxmail.com/cursos-hardware]

¡Tu opinión cuenta! Lee todas las opiniones de este curso y déjanos la tuya:[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/opiniones]

Descubre miles de cursos como éste en www.mailxmail.com 2

mailxmail - Cursos para compartir lo que sabes

Page 3: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

1. Era de la información. Evolución de las computadoras (1/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/era-informacion-evolucion-computadoras-1-2]

INTRODUCCIÓN A LAS CIENCIAS COMPUTACIONALES

Resumen.- La carrera de ciencias computacionales ofrece una variedad de especialidades de las cuales el alumnoira adquiriendo una línea de especialidad desde los primeros semestres de la misma. En esta materia semostraran estas líneas de especialidad, así mismo se darán las bases para que el alumno empiece a resolverproblemas mediante la computadora utilizando un lenguaje de programación.

El objetivo general de este curso es lograr que el alumno adquiera un panorama general de las cienciascomputacionales y sirva de introducción hacia la carrera que está cursando, permitiéndole así visualizar la líneaen la que podría especializarse.

Palabras Clave.- Ciencias de la computación, Historia de las computadoras, Fundamentos teóricos de las cienciascomputacionales, 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  son pues una recopilación dediversas fuentes de información con algunas anotaciones propias, en las que pueden existir errores que debenatribuirse al autor del presente curso, 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 de dominio público. Aclaradoeste asunto, empecemos con las notas del curso de Introducció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 intentado construir mecanismos que seancapaces de hacer cálculos [2].

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

Figura. 1. Ábaco antiguo

· Regla de cálculo (1625 D.C.): Inventada por John Napier, fue una herramienta de cálculo sumamente útil, puesse utilizó hasta fines de 1960. Utilizaba las distancias físicas para multiplicar y restar.

Figura. 2. Regla de cálculo

Descubre miles de cursos como éste en www.mailxmail.com 3

mailxmail - Cursos para compartir lo que sabes

Page 4: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

2. Era de la información. Evolución de las computadoras (2/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/era-informacion-evolucion-computadoras-2-2]

· Pascalina (1642): Blas Pascal, cuando tenía 19 años de edad, construyó este dispositivo mecánico, compuestode engranes, para ayudar a su padre que trabajaba como cobrador de impuestos. La pascalina solamente podíasumar.

Figura. 3. Pascalina, construida en 1642

· Charles Babbage (1822): Ch. Babbage diseñó una máquina que funcionaba con vapor y que llamó motor dediferencias, esta máquina era del tamaño de un cuarto y era capaz de calcular las tablas de multiplicar y lastablas 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, ahora conocida como algebra booleana, yes la base matemática en la que residen todos los cálculos que hacen las computadoras modernas, la primercomputadora que utilizó este sistema se construyó en 1937, se llamó ABC, que son las iniciales de Atanasoff BerryComputer.

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 1920 y 1930, lo que marcó la erade las computadoras electrónicas.

Las computadoras que se construyeron con componentes electrónicos han cambiado de acuerdo a la tecnologíaelectrónica de sus componentes, esta es la primera clasificación de los tipos de computadoras, cada clase se leconoce como generación.

Descubre miles de cursos como éste en www.mailxmail.com 4

mailxmail - Cursos para compartir lo que sabes

Page 5: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

3. Primera generación de computadoras[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/primera-generacion-computadoras]

1) Primera generación de computadoras:

La primera generación de computadoras electrónicas ocurrió a partir de 1945 y duró aproximadamentehasta 1956. Una de las primeras computadoras que se construyeron fue la llamada ENIAC (ElectronicNumeric Integrator And Calculator), construida en 1945 por la Universidad de Pensilvania, en losEstados Unidos de Amé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 varios problemas en común.Todos estos problemas tienen que ver con:

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

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

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

· Poca confiabilidad: Esto se debió principalmente a que los componentes electrónicos con los queestaban construidas estas computadoras, fallaban en promedio cada 7 minutos y medio, lo queobligaba a reiniciar los cálculos en cada evento de esta naturaleza. En ocasiones la computadoraarrojaba resultados diferentes 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 hizosignificativos aportes al desarrollo del software, de hecho, fue von Neumann quien inventó losdiagramas de flujo. Las principales líneas de investigación en la teoría de la programación fueron:

· Las instrucciones y los datos se almacenan en un lugar específico en la computadora, la memoria delectura y escritura.

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

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

Descubre miles de cursos como éste en www.mailxmail.com 5

mailxmail - Cursos para compartir lo que sabes

Page 6: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

4. Nuevas generaciones de computadoras[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/nuevas-generaciones-computadoras]

2) Siguientes generaciones de computadoras:

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

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

Los circuitos integrados (CI´s) agrupaban todos los componentes esenciales de la computadora dentrode una unidad encapsulada. Esto hizo que se eliminaran las conexiones por cableado entre loscomponentes, lo que a su vez derivó en menos consumo de energía y redundó en mayor confiabilidad.

La memoria de la computadora fue de los componentes que se vieron más beneficiados, porque ahora esposible disponer de mayor capacidad de almacenamiento que nunca antes

La cuarta generación de computadoras empezó a mediados de la década de 1970, cuando las primerasmicrocomputadoras ya estaban disponibles en el mercado. Notemos que hasta la tercera generación, lasclases de computadoras estaban diferenciadas principalmente por la tecnología de sus componentes, apartir de la cuarta generación, la clasificación se volvió más ambigua, debido a que ahora un aspectoimportante era la funcionalidad y el desempeño.

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

El precio de las computadoras personales (PC´s), que son miles de veces más poderosas que la ENIAC, esmucho menor. Los avances tecnológicos, como el desarrollo de los CI´s y tecnología desuperconductores hicieron posible que el costo de producción disminuyera significativamente, y con esto,el costo de venta para los usuarios finales.

Ahora ya hemos alcanzado la quinta generación de computadoras con la característica de cómputoempotrado, cómputo vestible, cómputo molecular y la inteligencia artificial. En la actualidad haycomputadoras hechas de moléculas de ADN, aunque su funcionalidad aún no es de propósito general, seestán logrando significativos avances en este aspecto.

Ejercicios:

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

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

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

Descubre miles de cursos como éste en www.mailxmail.com 6

mailxmail - Cursos para compartir lo que sabes

Page 7: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

5. Computador (ordenador). Características y funciones básicas[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/computador-ordenador-caracteristicas-funciones-basicas]

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 su definició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 y obtener como resultado información.

Para entender esto de los datos y la información, consideremos por ejemplo, el número 42, este número por sí mismo no dicemucho, pero cuando un programa arroja este resultado, al hacer una consulta acerca de la temperatura corporal actual de unpaciente, entonces ya se convierte en información, que implicaría hacer las acciones que sean pertinentes para este caso.

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

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

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

Alan M. Turing, matemático inglés, propuso una prueba, en la que se podría determinar, si una computadora podía razonarcomo lo hace una persona normal y tener inteligencia como una persona. Aunque esta prueba no estaba basada en formalismos(pero muchos otros estudios de Alan Turing sí), si había confianza en el resultado.

Figura. 8. Alan M. Turing propuso lo que conocemos como la "prueba de Turing", en la cual se determinaba si la computadoraera capaz de confundirse con un ser humano.

La prueba de Turing se trataba de hacer un dialogo entre una computadora y una persona, pero la persona no debería saber conquién estaba dialogando. Si la persona era capaz de reconocer que su interlocutor no era una persona, entonces la computadorano pasaría la prueba; al contrario, si la persona no podía reconocer que se trataba de algo (no de alguien), entonces lacomputadora tendría el reconocimiento de tener inteligencia como la humana.

Hasta ahora, ninguna computadora ha sido capaz de vencer en la prueba de Turing, aunque los avances en este sentido hansido asombrosos. Por ejemplo, se ha dado el 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 resulten asombrosas para las computadoras, hay aún cosas humanas que no pueden hacer, comodesarrollar tareas impredecibles, como responder a preguntas que jamás antes habían conocido.

Descubre miles de cursos como éste en www.mailxmail.com 7

mailxmail - Cursos para compartir lo que sabes

Page 8: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

6. Computador(ordenador). Software y hardware[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/hardware-computador-ordenador-software]

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

Sin el software o el hardware, las computadoras sirven de muy poco, y de nada para lo que originalmente fueronconcebidas.

1) El software:

El software de la computadora son los programas (las instrucciones) de la computadora, es decir, son losconjuntos de instrucciones que deben seguir de manera ordenada para llevar a cabo la tarea para la cual han sidoprogramadas.

Las personas que se relacionan con el software de las computadoras, normalmente caen en una de dos clases, oson programadores o son usuarios de programas. Los programadores son las personas que hacen losprogramas, implícitamente también son 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 la computación como un objeto deestudio. Ya sea como programador o como usuario, los computólogos deben proponer nuevos y mejoresmaneras de hacer computaciones, en cualquiera que sea el objeto del cómputo.

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

2) El hardware:

Conocemos como hardware a lo que es tangible en la computadora, como el monitor, todos los circuitoselectrónicos, mecánicos o eléctricos; los componentes de 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 recibir información de ella.

Descubre miles de cursos como éste en www.mailxmail.com 8

mailxmail - Cursos para compartir lo que sabes

Page 9: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

7. Ordenador. Supercomputadoras. Mainframe[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/ordenador-supercomputadoras-mainframe]

C. Tipos de computadoras

En general, podemos distinguir las computadoras en 5 categorías. Estas categorías se han establecido para daruna 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ás rápidas que cualquiercomputadora de escritorio.

Las supercomputadoras normalmente están en cuartos muy fríos y se deben enfriar con líquidos especiales paraque la resistencia eléctrica sea mínima y garantice la máxima velocidad. El software que se corre en lassupercomputadoras normalmente es un software especializado, como la predicción del clima, la dinámicamolecular (como el caso de la BlueGene/L de IBM que se muestra en la figura 9). De modo que la principalcaracterística de las supercomputadoras es su velocidad de proceso, y no el número de procesos que puedanejecutar al mismo tiempo.

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

· Mainframe. (Figura 10).

El significado del término mainframe dentro de la computación, ha cambiado varias veces. Al principio,mainframe era un término con el que se designaba a las computadoras que se alojaban en cuartos enormes,luego se utilizó para distinguir las máquinas que compartían los recursos con muchas computadoras de menospoder de cómputo. Ahora, el término se refiere usualmente a las computadoras compatibles con el sistema IBM360. Otras computadoras con las mismas capacidades se suelen llamar servidores. En general, nosotrosentenderemos como mainframe, una computadora que es capaz de compartir los recursos con muchas otrascomputadoras de menor capacidad. Los mainframes se utilizan en universidades, bancos, etc. Una computadoramainframe acepta entradas de otras terminales, u otros mainframes. Una terminal es una computadora con muypoco poder de cómputo que requiere de los servicios que presta un mainframe, usualmente se les conoce comoterminales tontas.

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

Descubre miles de cursos como éste en www.mailxmail.com 9

mailxmail - Cursos para compartir lo que sabes

Page 10: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

8. Computador personal. Servidores[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/computador-personal-servidores]

· Computadoras personales. (Figura 11).

Son pequeñas y baratas. Generalmente solamente tienen un procesador, aunque ahora se estávolviendo común tener computadoras personales con más de un procesador. Al principio se lesconocía como microcomputadoras, porque eran computadoras completas construidas a pequeñaescala y que fueron adquiridas por la mayoría de los negocios.

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

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

También se conocen como terminales, o estaciones de trabajo. Pueden caber perfectamente en unescritorio, en conjunto con un monitor, un ratón y un teclado. La mayoría de los negocios hacen redesinterconectando varias estaciones de trabajo. (Figura 12).

· Servidores de redes. (Figura 12).

Son similares a las PCs pero mucho más poderosas. Los servidores manejan la seguridad de la red,archivos compartidos e impresoras compartidas. Un servidor es una computadora optimizada paraproporcionar servicios a otras computadoras en una red de computadoras. Los servidoresgeneralmente tienen procesadores poderosos y mucha memoria y discos duros de enorme capacidad.

Figura. 12. Computadoras personales. Frecuentemente se utilizan computadoras personales para

Descubre miles de cursos como éste en www.mailxmail.com 10

mailxmail - Cursos para compartir lo que sabes

Page 11: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

conectarlas y hacer una red de computadoras.

Descubre miles de cursos como éste en www.mailxmail.com 11

mailxmail - Cursos para compartir lo que sabes

Page 12: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

9. PDAs. Computadoras vestibles[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/pdas-computadoras-vestibles]

Por otro lado, ahora se están haciendo computadoras cada vez más pequeñas, y con cada vez mayorcapacidad de procesamiento y de almacenamiento de datos. Es común ahora encontrar:

· Computadoras portátiles. (Figura 13)

También se les conoce por notebooks o laptops, son computadoras personales un poco más carasque las computadoras personales de escritorio, porque la tecnología que se requiere para fabricarlasdebe de caber en menos espacio y tener el mismo poder de cómputo y almacenamiento. La ventaja deuna laptop sobre una computadora de escritorio es que es completamente portátil. Las energíaprincipal la proporciona una batería, que debe de ser recargada en pocas horas, frecuentemente 2 o 3horas.

Figura. 13. Computadoras personales. Portátiles.

· PDAs. (Figura 14).

Los PDAs (Asistentes digitales personales) Son equipos de cómputo con generalmente poco poder decómputo, pero esto mejora a pasos agigantados. Frecuentemente son utilizados como asistentespersonales, y las aplicaciones que corren son teléfono móvil, agendas, editores de planes, listas decosas por hacer, juegos, etc.

Caben en la palma de una mano, generalmente tienen una pantalla sensible al tacto para evitar elteclado. Utilizan una tecnología de reconocimiento de patrones que les permite saber qué símbolo sedibuja con el lápiz sobre la pantalla.

Figura. 14. Computadoras personales. PDAs.

· Computadoras vestibles. (Figura 15).

La computación vestible aún se encuentra en desarrollo, pero se pretende crear computadoras tanpequeñas que se puedan incorporar en la vestimenta del usuario. Esto significaría una mejor conexióncon el entorno. Por ejemplo, se podría detectar la identidad de un empleado y habilitar su entrada onegar el acceso sin tener que portar una credencial o detenerse a firmar; y muchas otras aplicacionesmás.

Descubre miles de cursos como éste en www.mailxmail.com 12

mailxmail - Cursos para compartir lo que sabes

Page 13: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

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

Descubre miles de cursos como éste en www.mailxmail.com 13

mailxmail - Cursos para compartir lo que sabes

Page 14: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

10. CPU. Organización o estructura. Memoria[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/cpu-organizacion-estructura-memoria]

D. Organización de la computadora

A pesar de la gran diversidad de formas de las computadoras, todas ellas tienen en común que sirvenpara procesar datos y devolver información. Para entender cómo se procesan los datos y cómo sedevuelve la información, es útil considerar la organización de la computadora.

Las computadoras personales actuales, tienen en común (al menos hasta hace poco tiempo), quetienen un procesador, memoria, una interfaz y dispositivos de entrada y salida (figura 16). Sinembargo, las computadoras multiprocesadores se están volviendo más comunes cada vez. Aunque suorganización es una generalización de la organización de las computadoras monoprocesador.

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

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

Una computadora opera fundamentalmente en pasos de tiempo discreto. Las computadoras sondispositivos regidos por el tiempo, en donde los pasos del tiempo los proporciona de maneraperiódica un reloj central de acuerdo a su frecuencia de operación. Cuando decimos: "... tengo unacomputadora de 1GHz...", significa que la computadora requiere 1 nanosegundo para realizar un tick.Una operación puede tomar varios ticks en realizarse. La velocidad de la computadora se expresa enunidades de millones de instrucciones por segundo (MIPS). Nuestra computadora de 1GHz (lavelocidad del reloj) puede tener una velocidad computacional de 200 MIPS.

1) Memoria: La memoria de la computadora es un arreglo de circuitos electrónicos capaces demantener la polaridad de sus elementos por el tiempo que se encuentre encendida la computadora.Usualmente se le conoce como RAM (Memoria de acceso aleatorio).

En la memoria se alojan los programas que se están ejecutando y generalmente los datos que debenutilizar esos programas. Dentro de los programas que debe ejecutar la computadora, el principal deellos es el sistema operativo.

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

2) CPU: La Unidad Central de Procesos (CPU), se encarga de calcular y distribuir las tareas que sedeben ejecutar. Entre sus funciones está la de hacer solicitudes a la memoria para obtener todos losdatos necesarios para realizar su computación; también está la de hacer gestiones a la interfaz deentrada y salida para permitir la lectura de los caracteres del teclado, los clicks del ratón, mostrar lasventanas en el monitor, etc.

Frecuentemente, en las computadoras de un solo CPU, la velocidad de proceso se ve frenada por la

Descubre miles de cursos como éste en www.mailxmail.com 14

mailxmail - Cursos para compartir lo que sabes

Page 15: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

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

Descubre miles de cursos como éste en www.mailxmail.com 15

mailxmail - Cursos para compartir lo que sabes

Page 16: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

11. Computadora. Interfaz y dispositivos de entrada y salida[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/computadora-interfaz-dispositivos-entrada-salida]

3) Interfaz E/S:

La interfaz de entrada y salida es una placa de circuitos integrados que manipulan y controlan los dispositivos quese conectan con el CPU. Los fabricantes de los dsipositivos de entrada de datos o de salida de datos, debenajustarse a los lineamientos del procesador central.

Figura. 17. interfaz de entrada/salida de una computadora. Contiene circuitos integrados que controlan losdispositivos de entrada y salida y establece una comunicación con la unidad central de proceso.

Existen estándares para la transmisión de datos, tanto de entrada como de salida. Es el medio por el cual se envían ose reciben señales desde un sistema hacia otros. Los datos viajan por un bus de datos. Si el bus de datos es de pocacapacidad y el procesador es de mucha capacidad, por ejemplo, si el bus de datos puede transmitir hasta 16 bits enun tick, y el procesador trabaja con 32 bits en cada tick, es claro que el procesador puede esperar hasta 2 ticks paratrabajar; si el bus fuera de 64 bits 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 de computación por medio de lainterfaz de entrada/salida.

Hay dispositivos de entrada, como los teclados, los ratones, las tabletas digitalizadoras, los micrófonos, etc.; y haydispositivos de salida como los monitores, las bocinas, y cualquier otro actuador.

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

Descubre miles de cursos como éste en www.mailxmail.com 16

mailxmail - Cursos para compartir lo que sabes

Page 17: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

12. Sistemas de numeración. Binario a decimal[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/sistemas-numeracion-binario-decimal]

E. Sistemas de numeración

Debido a la naturaleza eléctrica y electrónica de las computadoras, los dispositivos de los cuales secomponen, se pueden presentar en uno de dos estados, encendidos o apagados.

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

1) Binario a decimal: La representación de los números en notación binaria, sigue las mismas reglasque la representación de los números en notación decimal, la que utilizamos cotidianamente; ytambién es la misma que la representación de los números en cualquier sistema numérico de otrabase. Los números se representan de manera posicional, con el dígito más significativo a la izquierday el menos significativo a la derecha.

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

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

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

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

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

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

Ejercicios:

1) Encuentre las expresiones numéricas en sistema decimal equivalentes de los siguientesnúmeros:

Descubre miles de cursos como éste en www.mailxmail.com 17

mailxmail - Cursos para compartir lo que sabes

Page 18: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

números: a) 3368b) 3367c) 3369

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

Descubre miles de cursos como éste en www.mailxmail.com 18

mailxmail - Cursos para compartir lo que sabes

Page 19: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

13. Sistemas de numeración. Decimal a binario[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/sistemas-numeracion-decimal-binario]

2) Decimal a binario:

Para convertir un número en el sistema numérico decimal a otro sistema numérico de cualquier otrabase hacemos divisiones, considerando los residuos para formar la expresió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 residuos de izquierda aderecha en orden decreciente respecto a su significancia, es decir, primero el más significativo, hastael bit menos significativo que se escribe en el extremo derecho.

Para convertir un número decimal a una expresión en otra base diferente que 2 se debe considerardividir entre la base deseada hasta que la parte entera de la división sea 0, y escribir los residuos deizquierda a derecha en el orden de significancia.

Ejercicios:

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

a) 11010b) 79010c) 1001110

Descubre miles de cursos como éste en www.mailxmail.com 19

mailxmail - Cursos para compartir lo que sabes

Page 20: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

14. Programación. Principios. Programación clásica (1/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/programacion-principios-programacion-clasica-1-2]

II. PRINCIPIOS DE PROGRAMACIÓN

ESTA sección se trata de revisar y estudiar los principios que rigen el arte de programar computadoras. Veremos losconceptos fundamentales de la programació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), necesitamos darle las instrucciones para que ellashagan lo que queremos.

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

Como las computadoras utilizan millones de circuitos electrónicos, utilizan el 1 para representar cuando tienencorriente y 0 para representar cuando no tienen corriente. Al principio, cuando se utilizaban las tarjetas perforadas,utilizaban el mismo principio. Un orificio se representaba con 1 y un no-orificio (no hay hueco) se representaba por un0.

Los estados prendido y apagado de los circuitos electrónicos de la computadora, posibilitan el uso del álgebrabooleana, que fu´e inventada por el matemático inglés George Boole. Los sistemas binarios operan de acuerdo con lasreglas de la lógica booleana. 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 el lenguaje ensamblador en la décadade 1950. El lenguaje ensamblador involucra la traducción de muchas combinaciones de números en lenguajemáquina a instrucciones escritas con letras. Una instrucción típica en lenguaje ensamblador se parece a Add A, B, quesignifica sumar el contenido de la variable A, con el contenido de la variable B.

Cada tipo computadora tiene su propio tipo de lenguaje ensamblador. En la mayoría de los casos, el tipo lo determinala marca de la computadora, aunque diferentes computadoras de la misma marca pueden tener diferentes lenguajesensambladores. La cantidad de comandos que se utilizan en lenguaje ensamblador es la misma que en lenguajemáquina.

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

Tanto el lenguaje ensamblador como el lenguaje máquina son lenguajes de bajo nivel, y son dependientes delprocesador. Ya que cada procesador tiene su propia arquitectura, un programa en lenguaje ensamblador escrito paraun procesador puede no funcionar en una computadora con un procesador diferente.

Descubre miles de cursos como éste en www.mailxmail.com 20

mailxmail - Cursos para compartir lo que sabes

Page 21: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

15. Programación. Principios. Programación clásica (2/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/programacion-principios-programacion-clasica-2-2]

Los lenguajes de alto nivel incluyen lenguajes como:

· Fortran. FORTRAN es una contracción de FORmula TRANslation. Se utiliza principalmente en aplicaciones donde loprincipal es el cálculo numérico en problemas 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 lasuniversidades y centros educativos por su simplicidad y excelente diseño estructurado.

· COBOL. COBOL también es un acrónimo que significa COmmon Business Oriented Language. Se creó en 1960, ypodía procesar cálculos simples de grandes cantidades de datos. Los programas escritos en COBOL eran más largosque aquellos que se escribían en otros lenguajes, pero a la vez, eran más fáciles de seguir. COBOL fue un lenguajepopular para las aplicaciones orientadas a los negocios que corrían en computadoras grandes como los mainframes,aunque ahora ya 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 Symbolic Instruction Code. Se desarrolló en 1964y como su nombre lo sugiere, es un lenguaje 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 de fábrica.

· C . C se creó en 1972 como un lenguaje para hacer aplicaciones en el sistema operativo UNIX. A partir de C, se handesarrollado otros lenguajes como C++, C#, C-objetivo, incluso Java, que son lenguajes actuales y ampliamentedifundidos y utilizados.

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 que crearon el lenguaje y las fechas decreación de todos los lenguajes que se mencionaron en el texto, incluyendo los del punto anterior.

3) Menciona, para cada lenguaje de los anteriores, qué tipo de aplicación es aconsejable hacer con cada lenguaje decomputadora.

Los lenguajes de alto nivel se parecen más al lenguaje natural que los lenguajes ensambladores, porque utilizanpalabras como el lenguaje cotidiano (usualmente en inglés) como BEGIN, END o IF.

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

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

... se puede utilizar (junto con otros comandos) para obtener información de los empleados 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 interpretarpor la computadora. La computadora requiere de más recursos para traducir una instrucción en lenguaje de cuartageneración.

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

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

Descubre miles de cursos como éste en www.mailxmail.com 21

mailxmail - Cursos para compartir lo que sabes

Page 22: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

16. Programación. Tendencias. Programación estructurada (1/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/programacion-tendencias-programacion-estructurada-1-2]

B. Tendencias de la programación

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

1) Secuencias2) Opcionales3) Repeticiones

El documento se tradujo del italiano (el idioma original del artículo) al inglés, y se publicó en la revista Communications of theACM, donde redujeron a dos las reglas de 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 programas grandes son difíciles de comprender si tienenun solo inicio y siguen aplicando operaciones tras operaciones hasta un solo final, de modo que la programación estructuradaofrece 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ño más manejable, resultando en programasmá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 un programa; cualquier otra parte del programa puedeutilizar ese módulo, así que se puede llamar en varias ocasiones por otros módulos.

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

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

Descubre miles de cursos como éste en www.mailxmail.com 22

mailxmail - Cursos para compartir lo que sabes

Page 23: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

17. Programación. Tendencias. Programación estructurada (2/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/programacion-tendencias-programacion-estructurada-2-2]

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

Los lenguajes de cuarta generación se desarrollaron desde finales de la década de 1970. Cada una de sus instrucciones generaaproximadamente unas 50 instrucciones en lenguaje máquina. Los programas escritos utilizando esos lenguajes también sepueden corregir rápidamente. Esta clase de lenguajes (4GL) no son procedurales, porque el programador solicita un resultadosin proporcionar los pasos necesarios para obtenerlo.

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

GET Productos FROM Inventario

Figura. 19. Sistema de Base de Datos

La mayoría de los lenguajes de cuarta generación se utilizan para acceder a las bases de datos, quienes utilizan los siguientescomponentes (figura 19):

· Sistema manejador de Bases de Datos. (DBMS) El manejador de la base de datos se asegura que se pueda leer de la base dedatos y escribir en la base de datos de manera adecuada y sin confusiones.· Lenguaje de consulta de la Bases de Datos. El lenguaje de consulta de la base de datos permite los usuarios especificarprecisamente qué información desean de la base de datos.· Generador de pantallas. El generador de pantallas proporciona una interfaz gráfica que rápidamente genera tanto lasentradas del usuario como las salidas para el usuario.· Generador de reportes. El generador de reportes crea reportes personalizados en segundos. Los reportes se deben mostrarhaciendo énfasis en la información necesaria y solicitada por el usuario.

Los lenguajes de cuarta generación son orientados al usuario final, en otras palabras, tienen una interfaz con el usuario muyamigable, de modo que las personas con pocos o nulos conocimientos en lenguajes de programación pueda aprenderlosfácilmente. Como la principal aplicación de los lenguajes de cuarta generación es la interacción con las bases de datos, sonbuenos para extraer datos y presentarlos en un formato específico; sin embargo, tienen compiladores que son muy grandes ylentos, comparados con los compiladores de los lenguajes de tercera generación.

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

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

· Oracle. Las bases de datos Oracle incluyeron el primer sistema manejador de bases de datos que incorporaron el lenguaje SQLy que se utilizaron en una amplia gama 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 las bases de datos que son alojadas en elsistema. Oracle ofrece una variedad de herramientas de desarrollo de aplicaciones que incluyen aplicaciones para serejecutadas en redes de computadoras.

Descubre miles de cursos como éste en www.mailxmail.com 23

mailxmail - Cursos para compartir lo que sabes

Page 24: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

18. Programación orientada a objetos - OOP[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/objetos-oop-programacion-orientada]

2) Programación orientada a objetos: La programación orientada a objetos (OOP) se convirtió en laalternativa para la programación estructurada a finales de la década de 1980. La OOP creaabstracciones de los objetos del mundo real en la computadora.

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

Cada objeto tiene un conjunto de propiedades y operaciones - o métodos - asociados con él (figura20. Por ejemplo, el objeto reloj puede tener las propiedades: horas, minutos, segundos y los métodosponeTiempo, tiempoActual. Las propiedades horas, minutos y segundos se pueden manipular solopor medio de los métodos.

Los programas orientados a objetos son modulares. Los programas modulares son fá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 muchaslibertades a los programadores, de modo que los programadores deben tener mucho cuidado almanejar la memoria del sistema.

· Java. Fue creado por la compañía Sun Microsystems, Java es un lenguaje orientado a objetos similara C++ pero han mejorado el lenguaje con características que evitan errores de programacióncomunes, como el manejo de la memoria, donde la responsabilidad recae en un subsistema que sellama recolector de basura.

· C + + . C + + es un superconjunto del lenguaje C. Generalmente es considerado uno de los mejoreslenguajes para hacer aplicaciones a gran escala.

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

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 se escriban demanera que recuerden descripciones tipo-idioma-común, muy parecidos a los pseudocódigos. Si seprograma cuidadosamente, se puede generar una documentación autocontenida, que es unapropiedad deseable cuando se considera que los programas se documentan para que otras personaslean y comprendan lo que se ha escrito.

2) Son más portables: Actualmente, los lenguajes de programación de alto nivel se están volviendomás capaces de ser utilizados en arquitecturas de computadoras diferentes, con ningún cambio; obien al proporcionar el código fuente y ser recompilado sin modificaciones.

3) Tienen estructura y orientación de objetos: Este es un acuerdo general que empezó con la

Descubre miles de cursos como éste en www.mailxmail.com 24

mailxmail - Cursos para compartir lo que sabes

Page 25: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

programación estructurada desde la década de 1960 y posteriormente con el movimiento a laprogramación orientada a objetos en la década de 1990, de lo que resultó una gran mejora en lacalidad y confiabilidad del código. Los lenguajes de alto nivel se pueden diseñar para reforzar esosparadigmas.

4) Tienen mayor generalidad: La mayoría de los lenguajes de alto nivel permiten la escritura de unaamplia variedad de programas, para permitir al programador mezclar código de diversos lenguajespara 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 enlenguajes de programación de bajo nivel.

6) Verificación de tipos: Siendo humano, un programador probablemente cometa muchos errores enel desarrollo de un programa de computadora. Muchos lenguajes de alto nivel - o al menos susimplementaciones - pueden, y deben, verificar los errores tanto en tiempo de compilación como entiempo de ejecución.

Descubre miles de cursos como éste en www.mailxmail.com 25

mailxmail - Cursos para compartir lo que sabes

Page 26: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

19. Principios de una buena programación[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/principios-buena-programacion]

C. Principios de una buena programación

Los programas de computadoras son útiles cuando se usan, a pesar de lo trivial que pueda sonar estafrase, involucra cuatro características importantes que deben tener los programas para que seanbuenos programas y se puedan utilizar. Un buen programa es robusto, eficiente, utilizable ymantenible.

· Robusto. Decimos que un programa es robusto cuando es tolerante a las fallas. Podemos probarnuestro programa extensivamente para indicar las fallas que pudieran encontrar los usuarios. Sinembargo, debe haber un balance entre el costo de probar y la necesidad de manipular los errores.Generalmente no es posible probar un sistema para encontrar todas las fallas y hacer un programaque reaccione a cada una de estas fallas.

· Eficiente. Los programas deben usar de manera correcta los recursos del sistema en el cual se estánejecutando. En un avión, por ejemplo, el tamaño y el peso de una computadora es limitado. De modoque el software utilizado en esos sistemas debe estar restringido a la capacidad de memoria y a lavelocidad del procesador utilizado. Los programas que desperdician memora y recursos del sistema,usualmente no sirven, porque cuando aumenta el volumen de datos, esos programas puedenocasionar errores fatales. Un error fatal es aquel que hace detener la normal ejecución de unprograma, ocasionando en ciertos casos que se deba reiniciar el sistema completo.

· Utilizable. Los programas utilizables son aquellos que el usuario final encuentra fáciles de operar.La utilizabilidad depende de algunos factores, como las formas para introducir los datos a lacomputadora, el diseño de los menús de opciones y la presentación de la información. Los mensajesinformativos y los archivos de ayuda mejoran la utilizabilidad. La documentación del usuario offlinecomo los manuales impresos, 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 programa después de habersido implementado. Es posible que después de un tiempo, el usuario ya no esté completamentesatisfecho con el sistema, entonces se debe modificar. La facilidad con que se puedan hacer esoscambios es lo que hace a un sistema mantenible. Un programador debe, entonces, estar familiarizadocon la sintaxis del lenguaje de programación enque fue creado el sistema.

Una excelente recomendación que es muy simple de aplicar para que nuestros programas seas clarosy fáciles de seguir, es utilizar identación en la escritura del código. Como ejemplo, notemos ladiferencia entre estos dos segmentos de código.

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

Descubre miles de cursos como éste en www.mailxmail.com 26

mailxmail - Cursos para compartir lo que sabes

Page 27: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

Un esfuerzo que deberíamos practicar, es escribir variables con un significado que nos haga recordarfácilmente el porqué existe tal variable. Los nombres para las variables, generalmente empiezan conuna letra y pueden continuar con más letras o con números, y a veces también se permiten losguiones y muy pocos símbolos especiales. Estas reglas son muy generales y se permiten nombrescomo a23 para el nombre de una variable.Comparemos los siguientes dos fragmentos de código en Pascal y notemos la legibilidad en cada unode ellos.

Cualquier persona que lea este último fragmento de código, no sabría lo que significan los símbolosm, n s y e. Pero los ejemplos del código con las variables con significado dan una mejor idea de lo quequeremos expresar en el código. A pesar de la recomendación de elegir nombres con significado paralas variables, se prefieren nombres cortos para las variables, veamos; el nombre de la variablesalarioDeEmpleadosMensual es menos preferible que salarioMensual.

Descubre miles de cursos como éste en www.mailxmail.com 27

mailxmail - Cursos para compartir lo que sabes

Page 28: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

20. Software. Ciclo de vida[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/software-ciclo-vida]

D. Fases del ciclo de vida del software

El software varía en complejidad dependiendo de lo que se requiere hacer. La mayoría de lospaquetes de software consisten de muchos módulos, cada módulo es responsable de ciertastareas específicas. Para simplificar el desarrollo del software, se sigue una serie de pasosque se llaman el ciclo de vida del software, y que son seguidos durante el tiempo que unsoftware existe (figura 21).

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

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

a) Entender el problema. En la primera fase del ciclo de vida del software, se enlistan lastareas que el software debe desarrollar, los problemas a ser resueltos, y en esta fase seestudian sus causas y efectos.

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

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

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

Primero se diseña la estructura general del programa. Entonces el problema se divide ensubproblemas en tareas más y más pequeñas hasta que tengan un tamaño manejable.

c) Codificar el programa. Durante la fase de codificación, el programa se escribe en unlenguaje de programación. Hay muchos lenguajes de programación, cada uno de ellos esespecialista en algún tipo de problemas. Por ejemplo, FORTRAN es especialista en cálculosnuméricos, mientras que LISP es especialista en problemas de inteligencia artificial yprocesamiento simbólico. El código del programa debe desarrollar la tarea solicitada, y debeser legible de modo que otros programadores lo puedan mantener. Los programas seescriben usualmente en módulos separados, cada módulo desarrolla alguna tarea específicay debe funcionar independientemente y en relación con el resto del programa.

d) Probar el programa. Durante la fase de pruebas, el programa se ejecuta y se revisa. Las

Descubre miles de cursos como éste en www.mailxmail.com 28

mailxmail - Cursos para compartir lo que sabes

Page 29: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

d) Probar el programa. Durante la fase de pruebas, el programa se ejecuta y se revisa. Lastareas deben ejecutarse sin errores en los resultados y también sin errores fatales. Losdefectos en los programas se llaman bugs.

Se examinan primero los módulos de manera individual, en forma independientemente,luego, se prueba todo el programa para encontrar bugs que puedan ocurrir en la interacciónde los módulos. Cuando se encuentra un bug, se aísla la causa y se resuelve. Este procesose llama depuración. El programador se debe asegurar de al resolver un bug, no se creanotros más en alguna otra parte del programa.

e) Mantener el programa. Durante la fase de mantenimiento, de determina cualquier error ydeficiencia en el programa, y se realizan cualquier acción para resolverla, mientras sepreserva la integridad del programa. El uso de notas de diseño, código bien documentado yvariables entendibles, pueden ayudar al mantenimiento futuro del programa.

Descubre miles de cursos como éste en www.mailxmail.com 29

mailxmail - Cursos para compartir lo que sabes

Page 30: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

21. Software. Desarrollo[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/software-desarrollo]

2) Roles en el desarrollo del software: Una persona por sí sola puede llevar o desarrollarlos programas en cada etapa del desarrollo del software, pero usualmente esto es unaexcepción, la mayoría de los programas son grandes y complejos.

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

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

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

Los programadores asistentes usualmente son programadores con poca experiencia. Estosno escriben nuevos programas, en lugar de esto, se dedican a desarrollar trabajos demantenimiento acerca de otros programas.

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

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

Un programador analista trabaja muy de cerca con los diseñadores del programa. Ademásde programar nuevo código, los programadores analistas empiezan a aprender las técnicasy 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 comunican a losprogramadores, quienes hacen de hecho, la programación.

Descubre miles de cursos como éste en www.mailxmail.com 30

mailxmail - Cursos para compartir lo que sabes

Page 31: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

Figura. 23. En la fase de análisis de requerimientos, los clientes y los analistas definen elpropósito y capacidades del software.

Descubre miles de cursos como éste en www.mailxmail.com 31

mailxmail - Cursos para compartir lo que sabes

Page 32: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

22. Programas. Desarrollo. Codificar un programa[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/programas-desarrollo-codificar-programa]

III. DESARROLLO DE PROGRAMAS

AL final de esta sección, seremos capaces de describir cómo hace la computadora para poder ejecutar losprogramas, y cómo debemos escribirlos de modo que cometamos menos errores y al mismo tiempo quenuestros programas sean más legibles y entendibles.

A. Codificar un programa

Escribir un programa involucra una serie de procesos separados.

Ejercicio:

1 ) El proceso de escribir un programa involucra seis (6) pasos. Relaciona las columnas de los pasos en el ordenadecuado.

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

1) Entender las especificaciones del programa. El programador debe entender cuáles son las entradas y cuálesson 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 de diseño, como el pseudocódigoo un diagrama de flujos estructurados. Estas herramientas detallan las tareas lógicas que el programa deberealizar. El programador debe analizar rigurosamente el diseño, para asegurarse de que ha entendido bien elresultado correcto esperado.

3) Codificar el programa. Un programador codifica el programa escribiendo en un lenguaje de programación enparticular. El código se puede escribir primero en papel - como una recomendación para los programadoresprincipiantes - o se puede escribir en la computadora utilizando un editor. El programador revisa la lógica delcódigo y la sintaxis, para asegurarse de que todo está correcto. Esto lo pueden hacer manualmente, en lo que seconoce como prueba de escritorio. Una prueba de escritorio hace que se descubran algunos errores que sepueden corregir antes de que el código sea compilado.

Algunas veces, los programadores revisan el código de otros programadores. Esto es una buena práctica deprogramación y ocasiona que se revise el código al menos dos veces en busca de posibles errores.

4) Compilar el programa. Las computadoras pueden ejecutar programas en código máquina únicamente. Elproceso de traducir un código hecho en un lenguaje de alto nivel en código en lenguaje máquina se llamacompilar, o interpretar el programa. Los programas que se encargan de compilar o de interpretar programas sellaman compiladores o intérpretes. Los compiladores se utilizan más frecuentemente que los intérpretes. Elcódigo que tiene errores no se puede compilar. El compilador genera un mensaje que nos indica que existe unerror en el código, y el programador debe arreglar ese error antes de tratar compilar el programa de nuevo.

5) Ejecutar el programa. Una vez que el programa no tiene errores puede ser ejecutado. Un programa que esinterpretado, se ejecuta línea por línea hasta llegar al final del programa o hasta que se encuentre un error.

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

Descubre miles de cursos como éste en www.mailxmail.com 32

mailxmail - Cursos para compartir lo que sabes

Page 33: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

23. Desarrollo de programas. Editores[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/desarrollo-programas-editores]

B. Editores

Los editores son aplicaciones de software que permiten a los programadores escribir el texto de losprogramas en la computadora. A diferencia de los procesadores de palabras, los editores no permitenalgunas características de formato, es decir, no permiten justificar, centrar texto, ni tipos de letras niotras características de formato de texto.

En general hay dos tipos de editores:

1) Editores de líneas. Esta clase de editores fueron los precursores de los editores de pantallacompleta. Permitían al programador editar una sola línea a la vez. El programador debe especificarqué 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 plataforma de MS-DOS.

2) Editores de pantalla completa. Los editores de pantalla completa son más fáciles de usar que loseditores de líneas, porque los programadores editan cualquier línea en cualquier momento. Loseditores de pantalla completa pueden proporcionar varias herramientas útiles para losprogramadores, por ejemplo:

· Menús de cortina. En los editores de pantalla completa pueden haber comandos para hacer algunatarea específica, estos comandos suelen ordenarse y agruparse en menús que se despliegan haciaabajo (como una cortina), de modo que el programador no tiene que aprenderlos de memoria.

· Integración con compiladores e intérpretes. La integración de los programas compiladores eintérpretes con editores, ofrece muchas ventajas para los programadores. Esto significa que el códigopuede ser escrito, editado, compilado o interpretado, y ejecutado desde el mismo programa. Estodifiere de los editores de líneas, donde un programa por separado desarrolla cada función.

· Texto coloreado. Algunos editores pueden mostrar palabras específicas en un color particular paradistinguirlas del resto del código. Estas palabras se llaman palabras reservadas, por ejemplo begin enPascal. Así mismo, otro texto se puede colorear, por ejemplo los números, las cadenas de caracteres ylos comentarios, frecuentemente se identifican con otro color.

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

· Texto autocompletado. Es una característica que permite al programador empezar a escribir uncomando, y el editor "se da cuenta" de qué comando se pretende escribir, entonces completa elcomando y lo muestra marcado. Por ejemplo, si el programador escribe be, el editor puedecompletarlo con begin. Si la palabra no es el comando requerido, el programador sigue escribiendosobre la zona marcada.

Ejercicio:

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

a) Word97b) RTF (Rich Text Format)c) Text only (ASCII)

Descubre miles de cursos como éste en www.mailxmail.com 33

mailxmail - Cursos para compartir lo que sabes

Page 34: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

d) PDF (Portable Document File)

Descubre miles de cursos como éste en www.mailxmail.com 34

mailxmail - Cursos para compartir lo que sabes

Page 35: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

24. Compiladores e intérpretes de programas[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/compiladores-interpretes-programas]

C. Compiladores e intérpretes

Un archivo fuente es el que contiene el texto del código del programa que ha sido escrito por elequipo de programadores. Las computadoras solamente pueden ejecutar instrucciones que estén encódigo máquina, así que los programas en código fuente no se pueden ejecutar directamente en lacomputadora. 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). El archivo objetocontiene una traducción del código del programa en lenguaje máquina, pero aún no se considera unprograma ejecutable.

Una división común para describir los compiladores, como menciona Torben AEgidius Mogensen en[5], es como se describe enseguida, aunque el orden puede cambiar, algunas fases se puedencombinar o dividir en otras fases o aún otras fases se pueden insertar, pero en general, loscompiladores siguen estas tareas:

· Análisis léxico. Es la parte inicial de leer y analizar el código fuente. El texto es leído y dividido entokens, cada uno de los cuales corresponde a un símbolo en el lenguaje de programación, porejemplo, el nombre de una variable, una palabra reservada o un número.

· Análisis sintáctico. En esta fase se toma una lista de tokens producida por el análisis léxico y losacomoda en una estructura de árbol llamada árbol sintáctico que refleja 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 determinar si el programaviola ciertos requerimientos de consistencia, es decir, si una variable se utiliza pero no se declara, o sise usa en un contexto que no tiene sentido por el tipo de variable, tal como un string para utilizar unvalor booleano como una función apuntador.

· Generación de código intermedio. El programa se traduce a un lenguaje simple independiente dela máquina.

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

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

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

Descubre miles de cursos como éste en www.mailxmail.com 35

mailxmail - Cursos para compartir lo que sabes

Page 36: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

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

Un programa linker (enlazador), combina todos los módulos en el archivo objeto para formar unarchivo ejecutable (figura 24). Un archivo ejecutable sí es un programa completo en sí mismo, esdecir, no requiere hacer referencia al código fuente original. Esto significa que correrá másrápidamente, comparado con la ejecució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érprete difiere delcompilador en que ejecuta cada orden una vez que se traduce. Este proceso puede hacer más lenta laejecución del programa, así que los intérpretes se utilizan menos que los compiladores. Un intérpretees otra manera de implementar un lenguaje de programación. La interpretación comparte muchosaspectos con el compilador. Los análisis léxico, sintáctico y verificación de tipos son exactamente losmismos que en un compilador.

Pero en lugar de generar código del árbol sintáctico, el árbol sintáctico se procesa directamente paraevaluar expresiones y ejecutar sentencias, y así hasta terminar. Un intérprete puede necesitar evaluarla misma parte del árbol sintáctico varias veces (por ejemplo cuando se hacen ciclos), por eso lainterpretación puede ser más lenta que la ejecución de un programa compilado. Pero escribir unintérprete es más fácil de mover a una máquina diferente, así que para aplicaciones donde lavelocidad no 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 a losprogramadores tener una idea de lo que hacen los programas de alto nivel, lo que a su vez, ayudará alos programadores para crear código más eficiente. Otras razones. Los errores que devuelven loscompiladores proporcionan una manera fácil de entender el código fuente; además, se conoce ladiferencia entre errores léxicos, sintácticos, errores de tipos, y así.

Descubre miles de cursos como éste en www.mailxmail.com 36

mailxmail - Cursos para compartir lo que sabes

Page 37: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

25. Depuradores de programas. Errores de código y comentarios[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/depuradores-programas-errores-codigo-comentarios]

D. Depuradores, errores de código y comentarios

Depurar el código significa quitar los errores. Todos los errores deben ser eliminados antes de que se diga que seha 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 el programador escribe código queno va de acuerdo a las reglas de escritura del lenguaje de programación. Son como los errores gramaticales en ellenguaje común. Hasta que un código fuente no tenga errores de sintaxis, no se puede traducir en códigomáquina.

· Errores lógicos. Los errores lógicos ocurren a causa de un mal diseño del programa. Puede ocurrir que unalínea de código observe todas las reglas sintácticas del 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 los programas pueden sercompilados o interpretados sin reportar este tipo de error. Los errores se descubren usualmente cuando elprograma está siendo ejecutado y se estudia la salida.

Un debugger ejecuta un programa línea por línea para que el programador pueda examinar paso a paso, laejecución de su programa, con el fin de encontrar los errores lógicos (figura 25).

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

El código debe ser legible y entendible, para que pueda ser mantenido. Los comentarios se pueden escribir en elcódigo para asegurarse que cumple estos requisitos.

Los comentarios se usan para proporcionar notas explicatorias para el programador acerca de lo que hace algunafunción en particular, o bien para especificar la utilidad de alguna parte del código, o especificar el tipo y funciónde las variables utilizadas.

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

· Los comentarios de una sola línea. Esta clase de comentarios requieren una marca especial para que elcompilador o el intérprete sepa que lo que sigue después de la marca y hasta el final de la línea no debetomarse en cuenta para efectos de compilación. En el lenguaje FORTRAN, los comentarios de una sola líneaempiezan con una letra C, solamente si se escribe en la primera columna del texto, en otras versiones la marca esun !. En C, podemos escribir un comentario de una sola línea con \\.

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

Descubre miles de cursos como éste en www.mailxmail.com 37

mailxmail - Cursos para compartir lo que sabes

Page 38: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

26. Algoritmo. Instrucciones precisas[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/algoritmo-instrucciones-precisas]

IV. INTRODUCCIÓN A LOS ALGORITMOS

UN algoritmo es una secuencia finita de pasos bien determinados que sirven para resolver unproblema [6]. Los algoritmos toman datos de entrada, los procesan de acuerdo al conjunto deinstrucciones, y generan una salida. Se dice que la palabra algoritmo proviene del nombre delmatemático persa Muhammad ibn Músá al-Khwárizmí (figura 26), quien escribió un tratado llamadoSobre cálculos con numerales 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 proceso para crear unpastel, en términos generales si es correcto, pero en términos específicos no lo es porquegeneralmente, una receta involucra pasos que no son bien determinados. Una receta para crear unpastel puede considerarse un algoritmo porque es un conjunto de pasos (aunque no necesariamenteson bien determinados), donde hay algunos elementos de entrada, que son los ingredientes, unprocedimiento que es la manera de hacerlo según la receta y un producto de salida, que es el pastelmismo.

El problema define la salida deseada, que a su vez, determina las entradas y las instrucciones. Porejemplo, al decidir qué tipo de pastel queremos, debemos determinar qué ingredientes necesitamos ylas instrucciones a seguir. Supongamos que decidimos escribir un algoritmo para hervir agua. Laentrada es la cantidad de agua a cualquier temperatura por debajo del punto de ebullición y la salidaes el agua hirviendo. Un algoritmo debe proporcionar la salida correcta para cualquier condición delos datos de entrada.

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

Sin duda, podemos escribir los algoritmos en español. Para producir resultados consistentes, ellenguaje que usemos debe estar libre de ambigüedades. Si decimos algo como: Verificar que la ollatenga suficiente agua, es una frase ambigua, porque para diferentes personas puede significar cosasdiferentes la frase suficiente agua. Es preferible decir algo como: Verificar que la olla tenga al menosun cuarto de su capacidad de agua, porque se define qué es lo que significa suficiente. En este

Descubre miles de cursos como éste en www.mailxmail.com 38

mailxmail - Cursos para compartir lo que sabes

Page 39: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

un cuarto de su capacidad de agua, porque se define qué es lo que significa suficiente. En estesiguiente ejemplo debemos incluir un paso para llenar la olla con agua bajo condiciones 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 la estufa.

-Poner la olla en la hornilla de la estufa-Encender la hornilla de la estufa

Un algoritmo debe tener bien claro un punto final, de modo que cuando la entrada sea procesada y lasalida deseada se alcance, el proceso termine. Agregaremos entonces la instrucción final paraterminar el algoritmo

-Cuando el agua este hirviendo, apagar la estufa.

Descubre miles de cursos como éste en www.mailxmail.com 39

mailxmail - Cursos para compartir lo que sabes

Page 40: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

27. Diseño Top-Down[http://www.mailxmail.com/curso-informatica-ordenador-cientif ico-desarrollo/diseno-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

Descubre miles de cursos como éste en www.mailxmail.com 40

mailxmail - Cursos para compartir lo que sabes

Page 41: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

El diseño top-down automáticamente produce módulos en un algoritmo.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.

Descubre miles de cursos como éste en www.mailxmail.com 41

mailxmail - Cursos para compartir lo que sabes

Page 42: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

28. Algoritmo. Pseudocódigo[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/algoritmo-pseudocodigo]

C. Pseudocódigo

Ejercicio: El pseudocódigo es útil cuando queremos escribir algoritmos de una maneradefinida y consistente. ¿Cuál de las siguientes aseveraciones crees que es verdadera para lospseudocó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 un algoritmo.· Agrupar las instrucciones en módulos.

Podemos hacer que nuestros pseudocódigos sean claros y concisos utilizando palabrascomunes en español. La sentencia Encontrar la diferencia entre los números A y B, se puedeexpresar de manera más clara como Diferencia:= A - B.

Cuando tengamos múltiples instrucciones en una sola línea, ocasiona que nuestro algoritmosea 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 de controlcomo el estatuto SI-ENTONCES, debemos identarlo para tener mayor claridad.

Cuando la ejecución de la secuencia de instrucciones dentro del bloque de la estructura decontrol termina, la identación también termina, y vuelve a tener el nivel anterior.

En algunas ocasiones, un bloque de instrucciones se debe ejecutar varias veces en diferentespuntos en el algoritmo, en este caso, las instrucciones se deben agrupar en un módulo consu propio nombre.

Si deseamos reutilizar el código que hemos escrito, para poder ejecutar las instruccionesque están en ese segmento de código tantas veces como sea necesario, debemos poner esas

Descubre miles de cursos como éste en www.mailxmail.com 42

mailxmail - Cursos para compartir lo que sabes

Page 43: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

que están en ese segmento de código tantas veces como sea necesario, debemos poner esasinstrucciones en un módulo por separado y llamarlo cuando se requiera.

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

Descubre miles de cursos como éste en www.mailxmail.com 43

mailxmail - Cursos para compartir lo que sabes

Page 44: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

29. Algoritmo. Trabajando con las entradas[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/algoritmo-trabajando-entradas]

D. Trabajando con las entradas

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

Ejercicio: Las computadoras pueden recibir los datos de entrada de diferentes fuentes tales como unarchivo o un módem. ¿Cuáles de las siguientes sentencias piensas que se deberían utilizar paracodificar 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 lopreferimos utilizar para leer datos de cualquier otra fuente, como un archivo almacenado en el discoduro.

De manera similar, las computadoras pueden devolver la información y desplegarla en el monitor, oescribirla en un archivo o hacia cualquier otro dispositivo de salida de datos.

Para indicar que un dato se debe desplegar en la pantalla del monitor, podemos utilizar sentenciascomo poner, desplegar o salida, pero preferimos desplegar. Y utilizaremos la sentencia escribirpara almacenar datos en un archivo que se va a grabar en el disco duro.

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

Para asignar valores, podemos utilizar palabras como inicializar, guardar o almacenar, pero vamos autilizar SEA

Por ejemplo, el comando SEA total EN 10, que nos indica que debemos considerar que el identificadortotal debe tener el valor inicial de 10.

Podemos utilizar una variable para almacenar un dato de entrada. Para hacer esto, usualmenteutilizamos una orden como obtener total, que asignará el valor que el usuario teclee en su teclado y lodebe asignar a la variable total.

Una vez procesado el dato, podemos conocer el resultado en la salida del pseudocódigo, con unaorden como imprimir total, que mostrará el valor de salida que ha sido almacenado en la variabletotal , y lo mandará a la impresora, al monitor o hacia algún dispositivo de salida para su impresión.

Una convención muy útil es encerrar texto entre comillas simples, lo que nos indicará que lasecuencia de símbolos que están entre comillas simples, se debe considerar como una palabra y nocomo una variable o palabra reservada. Por ejemplo, con el código imprimir ´total´ debemos entenderque 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 la computadora. Enpseudocódigo, podemos utilizar los símbolos convencionales para describir las operacionesaritméticas.

Descubre miles de cursos como éste en www.mailxmail.com 44

mailxmail - Cursos para compartir lo que sabes

Page 45: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

Descubre miles de cursos como éste en www.mailxmail.com 45

mailxmail - Cursos para compartir lo que sabes

Page 46: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

30. Igualdad y asignación de algoritmo[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/igualdad-asignacion-algoritmo]

1) Igualdad y asignación: Haremos una mención especial al símbolo =, porque en muchos lenguajesde programación es importante hacer diferencia entre el significado del símbolo.

Empezaremos por poner un ejemplo para ver el problema que encierra este símbolo. Supongamosque 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, se puede sustituir laocurrencia de la variable a por la constante 1, a menos que exista otra orden que señale lo contrario.

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

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

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

Si se trata de una igualdad lógica, en la que se puede obtener un valor que sea verdadero o falso,entonces debemos escribirlo como =, como en variable = valorComparado. Así, el pseudocódigoanterior 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, simplemente es unamanera un poco más organizada de plasmar las ideas, con el fin de causar menos confusiones aldesarrollar programas de computadora.

Descubre miles de cursos como éste en www.mailxmail.com 46

mailxmail - Cursos para compartir lo que sabes

Page 47: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

31. Algoritmo. Construcción. La orden de GOTO (1/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/algoritmo-construccion-orden-goto]

V. CONSTRUCCIÓN DE UN ALGORITMO

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

A. La orden GOTO

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

Antes de que la programación estructurada fuera desarrollada a finales de la década de 1960, losprogramadores utilizaban la orden GOTO para transferir el control de una parte del programa a otra, enlugar de que el control continúe en la siguiente línea de código.

A pesar de la llegada de la programación estructurada, en lenguajes como Pascal, se conservó la ordenGOTO, posiblemente por motivos históricos, o para permitir que los programadores "de la vieja guardia"pudieran hacer la transición de su forma de programar de una manera más suave.

Para utilizar la orden GOTO, veamos el siguiente segmento de programa, en pseudocó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ínea103 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 el ejemplo del listado 1

El problema con la orden GOTO, es que puede ocasionar que el programa transfiera el control adirecciones más adelante y más hacia atrás sin ninguna restricción, y como frecuentemente sucede, lalectura y entendimiento del programa se complica a medida que el código crece. Esta característica delflujo del control se conoce como código espagueti.

Descubre miles de cursos como éste en www.mailxmail.com 47

mailxmail - Cursos para compartir lo que sabes

Page 48: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

32. Algoritmo. Construcción. La orden de GOTO (2/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/orden-goto-algoritmo-construccion]

Supongamos que queremos hacer un programa donde el usuario proporcione su edad, y el sistemaimprima un cierto mensaje que debe ser leído sólo por las personas mayores de 18 años, de modo quesi el usuario ingresa su edad y es menor o igual a 18, entonces debe aparecer el mensaje de advertenciay terminar el programa; si el usuario ingresa una edad mayor de 18, entonces el programa imprime otromensaje 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 un punto de vistaestructurado, sin la orden GOTO.

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

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

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

Descubre miles de cursos como éste en www.mailxmail.com 48

mailxmail - Cursos para compartir lo que sabes

Page 49: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

33. Teorema de la estructura. Construcción (1/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/teorema-estructura-construccion]

B. Introducción al Teorema de la Estructura

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

El Teorema de la Estructura muestra cómo cualquier programa se puede escribir utilizando tresestructuras de control:

· Secuencias. Un programa de computadora ejecuta una lista de instrucciones una sola vez. Lasinstrucciones se ejecutan en la secuencia en la que aparecen, y el programa no salta a ningún lado nise repite ninguna de las instrucciones.

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

· Repetición. La repetición ejecuta por varias veces una sección de código mientras que ciertacondición permanece siendo verdadera.

Posteriormente, los mismos autores, mencionan que es posible utilizar solamente dos tipos deestructuras para hacer cualquier otro programa, y es que una combinación de secuencias y selección,puede crear una repetición.

En muchos lenguajes de programación hay estructuras de selección, en particular la estructuraSI-ENTONCES-ENOTROCASO, que corresponde a la estructura if-then-else en el lenguaje Pascal, oIFELSE en lenguaje de NetLogo, o alguna similar en otros lenguajes.

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

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

1) Se van a imprimir ambos mensajes2) Ninguno de los mensajes3) El primer mensaje4) El segundo mensaje

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

Descubre miles de cursos como éste en www.mailxmail.com 49

mailxmail - Cursos para compartir lo que sabes

Page 50: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

34. Teorema de la estructura. Construcción (2/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/construccion-teorema-estructura]

1) Acerca de la estructura de repetición: Una repetición ejecuta un segmento de código por más deuna ocasión, si se cumplen las condiciones requeridas. Podemos crear una orden de repeticiónutilizando la sentencia Mientras... FINMIENTRAS. La orden MIENTRAS se utiliza para empezar unbloque que debe ser repetido. El bloque termina con la marca FINMIENTRAS. Veamos el siguienteejemplo.

Listing 4. Ejemplo de la orden mientras, se ejecuta un segmento de código mientras una condición seaverdadera.

Figura. 30. Diagrama que muestra el flujo del control del programa con una estructuraIENTRAS...FINMIENTRAS.

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

Es importante mencionar que para entrar a un ciclo como el del ejemplo del listado 4, es necesariotener el control de cuándo se descumplirá la condición. En este ejemplo, se inicializa una variabletope-vendidos en 100, antes de entrar al ciclo. Si omitimos esta orden, dependiendo del lenguaje deimplementación pueden suceder dos cosas:

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

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

También es importante que en alguna parte del segmento que será repetido, actualicemos algunavariable, de modo que eventualmente la condición evaluada en cada ciclo resulte en un valor falso.

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

Descubre miles de cursos como éste en www.mailxmail.com 50

mailxmail - Cursos para compartir lo que sabes

Page 51: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

35. Algoritmo. Construcción. Definir un problema[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/algoritmo-construccion-definir-problema]

C. Cómo definir un problema

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

Ejercicio: Marca los tres elementos de un algoritmo

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

Las opciones 1,3 y 4 son correctas. Los algoritmos se componen de entrada de datos, los cuales se procesan y seobtienen datos de salida. Los requerimientos se utilizan para diseñar el programa, y las preguntas son unamanera de puntualizar los requerimientos, o bien de especificar qué clase de datos de entrada se requieren.

Las órdenes se dan en forma verbal, como calcular, ordenar, encontrar, imprimir. Estas órdenes se utilizan paratransformar los datos de entrada en datos de salida.

Para identificar los datos de entrada o de salida, utilizamos sustantivos, adjetivos y adverbios.

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

Podemos utilizar la tabla de definiciones para escribir un algoritmo - sus procesos son las órdenes en elalgoritmo.

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.

Ejercicio: Deseamos hacer un programa para calcular la velocidad a la cual debe manejar un piloto de rally paracubrir 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, el sustantivo velocidad es elelemento de salida del problema, y el verbo calcular es el proceso del problema que calcula el valor de lavelocidad en base a la distancia y al tiempo solicitados.

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

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

Descubre miles de cursos como éste en www.mailxmail.com 51

mailxmail - Cursos para compartir lo que sabes

Page 52: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

36. Algoritmo. Construcción. Escribir algoritmos[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/algoritmo-construccion-escribir-algoritmos]

D. Cómo escribir algoritmos

Una vez que ya hemos comprendido adecuadamente el problema, podemos escribir el algoritmo. Probablementenecesitaremos reescribir el algoritmo varias veces para mejorarlo. Los algoritmos tienen ciertas características.Cada algoritmo empieza con un 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ás instrucciones de pseudocódigo.Los elementos en las columnas de entradas y salidas son los argumentos de las instrucciones.

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

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

Para transformar los kilómetros en millas necesitamos un proceso. El verbo convertir en el enunciado delproblema indica el proceso que necesitamos. Así que tenemos que calcular el número de millas que esequivalente al número de kiló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.

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

Descubre miles de cursos como éste en www.mailxmail.com 52

mailxmail - Cursos para compartir lo que sabes

Page 53: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

37. Variables y constantes (1/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/variables-constantes]

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 los siguientestérminos se refieren a los datos que se establecen al inicio y permanecen sin cambiodurante 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 el programaestá en ejecución, mientras que el término constante describe a los datos cuyo valor seestablece al inicio del programa y permanecen sin cambio durante toda la ejecución.

Aunque las variables pueden cambiar de valor mientras el programa está en ejecución, hayalgunas ocasiones en que el valor de inicio se establece por los programadores para permitira las variables que se utilicen con un valor conocido. Esto se conoce como inicializar lavariable.

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 que ocupan,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 les pone unnombre.

Ejercicio: Los lenguajes de programación tienen reglas que establecen la manera en cómose deben nombrar las variables y las constantes. ¿Cuál de las siguientes reglas crees que seaplican al nombrar las variables y las constantes?

1 ) Los nombres de las variables y las constantes no deben tener el mismo nombre quealguna 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 empiecen condígitos y no deben tener el mismo nombre que las palabras reservadas en el lenguaje deprogramación.

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

Descubre miles de cursos como éste en www.mailxmail.com 53

mailxmail - Cursos para compartir lo que sabes

Page 54: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

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 si lo serán.

Descubre miles de cursos como éste en www.mailxmail.com 54

mailxmail - Cursos para compartir lo que sabes

Page 55: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

38. Variables y constantes (2/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/constantes-variables]

Las palabras reservadas que se utilizan en los lenguajes de programación no se debenutilizar como nombres de variables y de constantes. Por ejemplo, FOR es una palabrareservada en BASIC, y VAR es una palabra reservada en Pascal. Ninguna de estas palabras sedebe utilizar como nombres de variables ni de constantes en sus respectivos lenguajes.

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

Ejercicio: Para entender el propósito de una variable en particular, es importante darle unnombre apropiado y con significado. ¿Cuáles de las siguientes convenciones para losnombres crees que son apropiadas?1 ) El nombre o constante debe ser transparente para describir suficientemente bien el datoque 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 para describir eldato que representa, y cada nombre debe ser único dentro de la sección del programa quese utilice. Una variable que se refiera al tamaño de la población de cierta especie, podríallamarse tamPoblacion. Una variable llamada tp0 podría referirse al mismo dato, pero esmás difícil de recordar y de entender, debido a que es menos significativa.

Los nombres que se ocupen para alguna variable o constante, no se pueden repetir, engeneral, no puede haber un nombre en la misma parte del código que haga referencia a doslugares diferentes en la memoria, esto ocasiona lo que en programación se conoce comocolisión de nombres.

Hay ocasiones en que los nombres de las variables si se pueden repetir, pero esto sucede enlugares diferentes del código. Cuando nos referimos a lugares diferentes o el mismo lugar,significa el mismo ámbito de función o procedimiento o método. Veamos el siguienteejemplo, 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 cadaocasión que se ejecute esta línea, el límite superior del ciclo se va a modificar y se generaráun error de tipo lógico. Para corregir el error, seguramente el programador deberá modificaralguna de las y´s de la línea 8.

Listing 7. Colisión de nombres 2

Descubre miles de cursos como éste en www.mailxmail.com 55

mailxmail - Cursos para compartir lo que sabes

Page 56: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

Descubre miles de cursos como éste en www.mailxmail.com 56

mailxmail - Cursos para compartir lo que sabes

Page 57: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

39. Datos. Tipos de datos (1/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/datos-tipos-datos]

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

Descubre miles de cursos como éste en www.mailxmail.com 57

mailxmail - Cursos para compartir lo que sabes

Page 58: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

Cuando se establecen las variables y las constantes, se debe proporcionar el nombrey 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

Descubre miles de cursos como éste en www.mailxmail.com 58

mailxmail - Cursos para compartir lo que sabes

Page 59: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

40. Datos. Tipos de datos (2/2)[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/datos-tipos]

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, para

Descubre miles de cursos como éste en www.mailxmail.com 59

mailxmail - Cursos para compartir lo que sabes

Page 60: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

establecer el tipo y valor de las variables y constantes. Por ejemplo, el listado 7 sedebe reescribir como:

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

Descubre miles de cursos como éste en www.mailxmail.com 60

mailxmail - Cursos para compartir lo que sabes

Page 61: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

41. Expresiones y órdenes[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/expresiones-ordenes]

VII. EXPRESIONES Y ÓRDENES

En esta sección estudiaremos y aprenderemos a describir las expresiones y órdenes en laprogramación, de modo que no exista confusión entre los operandos y operadores ni en lajerarquía de las operaciones.

A. Principios básicos

Un operador es un símbolo que representa una acción específica que se debe realizar en losdatos.

Ejercicio: Los operadores trabajan con los operandos. ¿Cuál crees que es la mejor definiciónde 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 operador funcione.

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

Cada operador se representa con un símbolo en particular, aunque el símbolo puede serdiferente en diferentes lenguajes de programación. Por ejemplo, el símbolo utilizado para laoperació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 utilizado algunos)en nuestros algoritmos en pseudocódigo son:

AGRADECIMIENTOS

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

REFERENCIAS [1] SkillSoft-Learning-Object, Getting Started with Programming. ACM Course on line,http://acm.skillport.com/, Revisado en 2007.[2] John Kopplin, "An ilustrated history of computers." Recurso webhttp://www.computersciencelab.com/ComputerHistory/ History.htm, visitado el 15 deagosto de 2007. Creado en 2002.[3] C. Bohm and G. Jacopini, "Flow Diagrams, Turing Machines and Languages with only twoformation rules," communications of the ACM, vol. 9, pp. 366 - 371, May 1966.[4] P. D. Terry, Compilers and Compiler Generators: An introduction with C++. InternationalThompson (out of printer. Postcript edition at http://www.scifac.ru.ac.za/compilers), 1996.[5] T. AE. Mogensen, Basics of Compiler Design. DIKU University of Copenhagen, 2007 (First

Descubre miles de cursos como éste en www.mailxmail.com 61

mailxmail - Cursos para compartir lo que sabes

Page 62: Informática. Desarrollo científico del ordenador · PDF fileInformática. Desarrollo científico del ordenador Autor: Abdiel Cáceres González [

publishing 2000).[6] Wikipedia, "Algorithm - wikipedia, the free encyclopedia," 2007. [Online; accessed13-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.

Visita más cursos como este en mailxmail:[http://www.mailxmail.com/cursos-informatica][http://www.mailxmail.com/cursos-hardware]

¡Tu opinión cuenta! Lee todas las opiniones de este curso y déjanos la tuya:[http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/opiniones]

Descubre miles de cursos como éste en www.mailxmail.com 62

mailxmail - Cursos para compartir lo que sabes