Está en la página 1de 24

INFORMATICA I

APUNTES DE LA CATEDRA 2013

Del mundo real a la solucin por computadora

Es una prdida de tiempo que personas cualificadas pierdan horas como esclavos en la labor de calcular, lo que podra ser delegado en cualquier otro si se pudieran utilizar mquinas. Gottfried Wilhelm Leibniz (1646-1716) 1.1

Qu es la Informtica? La Informtica nace bajo la idea de ayudar al hombre en aquellos clculos rutinarios, donde frecuentemente existe una repeticin de tareas, como por ejemplo la gestin de un censo, tal es el caso del primero automatizado en 1890 en EE.UU. usando tarjetas perforadas. En esa poca se pens que una mquina no sufrira cansancio ni cometera errores. Con el tiempo esta idea se fue afianzando en la sociedad, y es hoy da que se sigue trabajando para mejorar las prestaciones de los sistemas de cmputo. Si repasamos la historia veremos que la Informtica estuvo entre nosotros desde tiempos lejanos. A continuacin transcribimos algunas ideas de importantes pensadores relacionados con la Informtica. Gottfried Wilhelm Leibniz (1646-1716) fue uno de los grandes pensadores de los siglos XVII y XVIII, deca que "Es una prdida de tiempo que personas cualificadas pierdan horas como esclavos en la labor de calcular, lo que podra ser delegado en cualquier otro si se pudieran utilizar mquinas". Basndose en los trabajos de Pascal construy una calculadora compuesta por cilindros dentados con longitud incremental que poda sumar, restar, multiplicar y dividir automticamente, conocida como la rueda de Leibniz. Algunas mquinas basadas en estos mismos principios han jugado un papel preponderante en la segunda guerra mundial, e incluso algunas estn todava en uso. Leibniz fue tambin el primer pensador occidental en investigar la aritmtica binaria y sent las bases de la lgica simblica, basada en smbolos y variables abstrayendo la semntica de las proposiciones. Ada Byron (1815-1852) desarroll los primeros programas para la Mquina Analtica de Babbage (1833), debido a estos trabajos, se la considera el primer programador de computadoras del mundo. Ella escribi "La Mquina Analtica no tiene la pretensin de crear nada. Puede realizar cualquier cosa siempre que conozcamos cmo llevarla a cabo. Puede seguir anlisis; pero es incapaz de descubrir relaciones analticas o verdades. Su potencialidad es la de ayudarnos a hacer posible aquello sobre lo que tenemos un conocimiento previo." Muchas han sido las mujeres que han realizado grandes aportes a la Informtica, an as Ada Byron es la nica mujer que cuenta con un lenguaje de programacin que lleva su nombre: en 1979 el Departamento de Defensa de los Estados Unidos cre un lenguaje de programacin basado en Pascal en honor de ella llamado lenguaje de programacin Ada. Herman Hollerith (1860-1929) fue un estadstico estadounidense que invent la mquina tabuladora. Es considerado como el primer informtico, es decir, el primero que logra el tratamiento automtico de la informacin (Informtica = Informacin + automtica). En esos tiempos, los censos se realizaban de forma manual, con el retraso de su procesamiento, unos 10 aos. Ante esta situacin, Hollerith comenz a trabajar en el diseo de una mquina tabuladora o censadora, basada en tarjetas perforadas. La cual patent en el ao 1889. Un ao despus incluy la operacin de sumar con el fin de utilizarla en procesos de contabilidad. Alan Turing (1912-1954) fue un matemtico, lgico, cientfico de la computacin, criptgrafo y filsofo britnico. Es considerado uno de los padres de la ciencia de la computacin siendo el precursor de la informtica moderna. Proporcion una influyente formalizacin de los conceptos de algoritmo y computacin, la famosa mquina de Turing. Durante la Segunda Guerra Mundial, trabaj en descifrar los cdigos nazis, particularmente los de la mquina Enigma. Tras la guerra dise uno de los primeros computadores electrnicos programables digitales en el Laboratorio Nacional de Fsica del Reino Unido (1945). Entre otras muchas cosas, tambin contribuy de forma particular e incluso provocativa al enigma de si las mquinas pueden pensar, es decir a la Inteligencia Artificial. "Las mquinas me sorprenden con mucha frecuencia. John Von Neumann (1903-1957) fue un matemtico hngaro que realiz contribuciones fundamentales en fsica cuntica, anlisis funcional, teora de conjuntos, ciencias de la computacin, economa, anlisis numrico, ciberntica, hidrodinmica, estadstica y muchos otros campos. Est considerado como uno de los ms importantes matemticos de la historia moderna. Dise una arquitectura de computadoras que lleva su nombre, y an es utilizada en casi todas las computadoras personales, microcomputadores, minicomputadores y supercomputadores. Von Neumann deca Podra parecer que hemos llegado al lmite de lo que es posible lograr con la tecnologa informtica, aunque hay que tener cuidado con tales declaraciones, ya que tienden a sonar bastante tontas en cinco aos. El trmino Informtica nace recin en la dcada de 1960 en Francia bajo la denominacin INFORMATIQUE, debida a la contraccin de las palabras INFORmation y autoMATIQUE, es decir el tratamiento de la informacin por medios automticos.
2

En las mltiples publicaciones, Informtica se define de diversas maneras pero siempre ronda la misma idea: el tratamiento automtico de la informacin. A continuacin veremos algunas definiciones. INFORMTICA es la ciencia que estudia el tratamiento automtico y racional de la informacin. Se habla de tratamiento automtico debido a que son mquinas las que procesan la informacin y se dice racional por estar los procesos definidos a travs de programas que siguen el razonamiento humano. INFORMTICA es el estudio de los algoritmos, y de las computadoras - de sus teoras, sus modelos abstractos, su realizacin mecnica, su fiabilidad y verificacin, su medida y eficacia, su descripcin lingstica y su contexto social. Las Ciencias de la Computacin o Informtica como se le llama en algunos pases hispanoamericanos, es la disciplina que busca establecer una base cientfica para diversos temas, como el diseo de computadores, la programacin de computadores, el proceso de informacin, la elaboracin de algoritmos para resolver problemas y el proceso algortmico en s.

1.2 Del mundo real a la solucin por computadora


El proceso de informatizar la resolucin de problemas del mundo real, tales como resolver una ecuacin matemtica o realizar la liquidacin de sueldos de los empleados de una empresa, conlleva una serie de pasos que deberemos seguir para obtener una respuesta encuadrada a los datos provistos. En la fig. 1 se muestra tal proceso.

Problema del mundo real

Especificaciones del problema

Abstraccin
Modelo
Interpretar los aspectos esenciales del problema y expresarlo en trminos precisos

Anlisis y descomposicin
Algoritmo
Pasos para resolver el problema

Codificacin del algoritmo- Lenguaje de programacin


Programa
Algoritmo traducido a un lenguaje de computadora

Fig 1 Del mundo real a la solucin por computadora

Como primer paso se debern conocer las especificaciones del problema, es decir, analizar y determinar en forma clara y concreta el objetivo que se desea. Analizar los datos que se disponen y cuales los resultados que se desean. Una vez que se conoce el problema en detalle, se puede intentar realizar un modelo del mismo, es decir, abstraer el problema tratando de encontrar los aspectos principales que se pueden resolver, los datos que se han de procesar y el contexto del problema, simplificando su expresin. Disponiendo de un panorama mas claro del problema, sus datos y resultados, se puede escribir una serie de acciones que seguidas paso a paso resuelvan el problema, describiendo un algoritmo. Si esta etapa es exitosa se traduce el algoritmo, mediante un lenguaje de programacin, para convertirlo en un programa que podr ser interpretado por la computadora para su ejecucin/solucin en forma rpida y eficaz.
3

1.2.1. Resolucin de problemas con computadora Existen cinco etapas a tener en cuenta para resolver un problema que luego ser ejecutado por una computadora en forma rpida y eficaz, a saber: 1) Anlisis del problema, se formula y analiza el problema en su contexto del mundo real. COMPRENDER EL PROBLEMA. 2) Diseo de una solucin, se elige una metodologa para hallar la solucin del problema. TRAZAR UN PLAN PARA RESOLVERLO. 3) Escribir un algoritmo, se expresa la metodologa del punto anterior de forma tal que pueda ser interpretado por el procesador que lo va a ejecutar. ESCRIBIR EL ALGORITMO. 4) Escribir el programa. Un algoritmo es una especificacin simblica que debe traducirse a un programa a partir del conocimiento de un lenguaje de programacin para poder ser ejecutado por la computadora. ESCRIBIR EL PROGRAMA. 5) Ejecucin y validacin del algoritmo-programa. La etapa siguiente, una vez escrito el programa, es la verificacin de forma de ver si el programa conduce al resultado deseado con los datos dados del mundo real. PROBAR EL PROGRAMA. La primera etapa est dada por entender el enunciado del problema. Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del todo no tiene mucho caso continuar con la siguiente etapa. Una vez que se ha comprendido lo que se desea de la computadora, es necesario hacer un Anlisis del problema, definiendo: Los datos de entrada. Cual es la informacin que se desea producir, los resultados. Los mtodos y frmulas que se necesitan para procesar los datos para arribar a los resultados, la metodologa de resolucin. Una vez que se tiene en claro la metodologa de resolucin, se escribe el algoritmo respetando las reglas del lenguaje algortmico propuesto. En este punto es aconsejable probar que realmente resuelve el problema planteado. En una primera etapa, esto se har con papel, lpiz y nuestra mente. Luego el algoritmo podr ser traducido en un lenguaje reconocible por la computadora (lenguaje de programacin), generando as el programa que resuelve el problema. De esta manera, podr ser probado en una computadora. La serie de acciones del programa se la conoce como cdigo fuente, el cual se escribe en un lenguaje de programacin, generalmente un lenguaje de alto nivel. En este ltimo punto se pueden producir errores de sintaxis y/o de semntica, que son detectados por el analizador sintctico y el analizador semntico, respectivamente. Los errores de sintaxis se refieren a que alguna accin primitiva (aquella que con el solo hecho de enunciarla el procesador comprendo su significado y llevara a cabo su ejecucin: por ej. Leer ()) est mal escrita y por lo tanto el procesador no puede reconocerla. Son simples de detectar y modificar. Esta operacin la resuelve el traductor del entorno de programacin: el Compilador o el Intrprete. En el proceso de traduccin se detectan los errores de sintaxis, en este caso, habr que volver al punto 3 para codificar correctamente. Los errores de semntica se refieren a que alguna accin primitiva puede no ser vlida. Es decir, el anlisis semntico es la fase encargada de detectar la validez semntica de las acciones aceptadas por el analizador sintctico. Un componente importante del anlisis semntico es la verificacin de tipos, por ejemplo, una accin en la que se realiza la suma de dos nmeros de distinto tipo, uno real y otro entero, no ser vlida si en la especificacin del lenguaje est impuesta la restriccin de que los operandos deben ser de igual tipo. Algo muy importante a tener en cuenta cuando se escriben programas es la Documentacin del mismo. Esto se refiere a los comentarios que se aaden al cdigo fuente para hacer mas claro el entendimiento del programa, descripcin del funcionamiento del programa, descripcin del problema, nombre del autor, entre otros. A menudo un programa escrito por una persona, es usado por otra, o por ella misma pero despus de mucho tiempo, por ello la documentacin sirve para ayudar a comprender la lgica de un programa, re-usar un programa o para facilitar futuras modificaciones (mantenimiento).

1.2.2. Dar el primer paso En principio, cualquier algoritmo que diseemos para ser ejecutado en una computadora puede ser realizado a mano, con papel y lpiz, suponiendo que nosotros simulemos ser el procesador y que disponemos del tiempo suficiente para llevarlo a cabo. En realidad, encargamos a la computadora la ejecucin de los pasos que componen un algoritmo porque es capaz de completarlo en un tiempo mucho menor del que nosotros emplearamos, y porque es menos proclive a cometer errores que nosotros, que por distraccin o cansancio erramos habitualmente. Sin embargo, las computadoras slo pueden ejecutar algoritmos que se componen de acciones que puede entender. Por lo tanto, es necesario conocer bien cules son dichas acciones para disear algoritmos bien escritos. Saber cual es el algoritmo que resuelve un problema dado, suele ser un paso difcil para todo aquel que no tenga prctica en el tema. Para escribir algoritmos el primer paso necesario es plantear cual sera la solucin del problema en trmino comunes, en palabras habituales, haciendo uso de todo lo que est a nuestro alcance, la imaginacin, la matemtica, el dibujo, el intercambio de ideas, la lgica. La ntima asociacin entre el proceso de desarrollar algoritmos y el de resolucin de problemas en general ha hecho que los cientficos de la computacin se unan a otras disciplinas en la bsqueda de mejores tcnicas para resolver problemas. 1.2.3. El modelo computacional Para encarar la resolucin de un problema por computadora hay que considerar como punto de partida que el procesamiento de la informacin lleva en s el hecho de tomar datos, procesarlos y emitir resultados de acuerdo a dichos datos y a la lgica del algoritmo que se est ejecutando en ese momento, por lo tanto se puede pensar en un modelo computacional compuesto de tres partes: ENTRADA, PROCESO y SALIDA, como se muestra en la fig.2.
ENTRADA PROCESO SALIDA

Entrada es el conjunto de datos que son necesarios para que el algoritmo lleve a cabo su tarea. Que se ingresan por TECLADO Proceso es la descripcin de los pasos a seguir para resolver el problema, es decir, es el algoritmo de resolucin Salida es el conjunto de resultados que se obtienen al ejecutar el proceso en funcin de los datos de entrada. Que se

visualizar por PANTALLA


Fig. 2 El modelo computacional

Una vez entendido el problema hay que desentraar del enunciado la(s) entrada(s) necesarias para comenzar el proceso de resolucin, abstrayndose del proceso de resolucin. Habra que preguntarse Qu necesito para resolver el problema, si yo fuese el procesador? Qu datos necesito que me de otra persona para poder obtener la solucin del problema?, y anotarlas como entradas o DATOS. Una vez determinados los datos, se deber determinar cul es la(s) salida(s), es decir, el resultado que se obtiene con los datos de entrada, y anotarlos como salida o RESULTADOS. A veces puede ser ms fcil de visualizar los resultados antes que los datos de entrada, en dicho caso habra que preguntarse "Para obtener este resultado, que informacin necesito?". Luego se preguntar cules son los pasos para llegar al resultado partiendo de los datos?, con lo cual se podr escribir el proceso o ALGORITMO asociado. Por ejemplo, si se desea realizar un algoritmo para calcular el rea y el permetro de un crculo en funcin de su radio, las diferentes partes del modelo computacional sern: ENTRADA: radio PROCESO: Area= radio2 Permetro= 2 radio SALIDA: Area, Permetro
5

Un algoritmo asociado a este problema ser:


Dar el valor del radio y Guardar ese valor con el nombre R Calcular el rea como pi * R2 Calcular el permetro como 2 * pi * R Informar los resultados

Sin embargo, el algoritmo expresado en forma coloquial no puede ser entendido por la computadora. Por lo cual habr que escribirlo siguiendo reglas especiales que la computadora entienda. En el capitulo siguiente se comenzar a formalizar lo vertido en este capitulo. Vale la pena observar que la relacin entre Entrada, Proceso y Salida no es algo que necesariamente se realice en ese orden: primero ingresar todos los datos, luego procesarlos, y por ltimo exhibir todos los resultados. Por ejemplo un algoritmo puede solicitar la entrada de algunos datos, obtener ciertos resultados, y en base a ellos solicitar nuevos datos, mostrar otros resultados durante la ejecucin, etc.

1.3. Datos e informacin


Por ltimo, describiremos la diferencia que existe entre Datos e Informacin, trminos que se pueden pensar como sinnimos. En el ambiente de la Informtica, el trmino informacin puede aplicarse a casi cualquier cosa que pueda comunicarse, tenga o no valor. Los datos, en principio, son informacin no elaborada, que una vez procesados (comparados, ordenados, sumados, etc.) constituyen informacin til. Segn esto, las palabras, los nmeros, las imgenes son smbolos que representan datos. En una dada situacin problemtica se puede disponer de muchos datos, de los cuales algunos pueden ser tiles para la resolucin del problema, es decir, considerados informacin til. Podemos entonces decir que la informacin es el conocimiento producido como resultado del procesamiento de los datos. Otro trmino que se utiliza es Tratamiento de la informacin. Es el conjunto de operaciones que se realizan sobre una informacin, que pueden ser "lectura de datos", "preservar datos", "comparacin de datos", "procesos aritmticos sobre datos", "presentar resultados". Una adecuada combinacin de estas operaciones lleva a resolver los problemas.

Formalizacin de la resolucin de problemas algortmicos

La Mquina Analtica no tiene la pretensin de crear nada. Puede realizar cualquier cosa siempre que conozcamos cmo llevarla a cabo. Puede seguir anlisis; pero es incapaz de descubrir relaciones analticas o verdades. Su potencialidad es la de ayudarnos a hacer posible aquello sobre lo que tenemos un conocimiento previo. Ada Byron (1785-1873) Sorprenderse, extraarse, es comenzar a entender. Jos Ortega y Gasset (1883-1955)

Algoritmo El trmino algoritmo deriva del nombre del matemtico persa Abu Ja'far Mohamined ibn Musa al-Khowarizmi, que vivi alrededor del ao 825 despus de Cristo. La acepcin original fue algorism y haca referencia al proceso de prueba de clculos realizados utilizando nmeros arbigos, que constitua el tema central del libro de alKowarizmi.
Un algoritmo es una forma de describir la solucin de un problema, explicando paso a paso como se debe proceder para llegar a una respuesta encuadrada a los datos disponibles, en un nmero finito de pasos.

Seguramente existirn distintos algoritmos para resolver un mismo problema, todos sern correctos, cada uno de ellos pensado por una persona diferente, cada uno de ellos con un diseo distinto, cada uno de ellos con un sello propio. Escribir algoritmos es un arte, en el que cada uno de nosotros le damos nuestro estilo personal. Las caractersticas de un algoritmo son: Un algoritmo debe ser preciso, es decir, debe indicar claramente (sin ambigedades) cada uno de los pasos a seguir para conseguir el objetivo propuesto. Un algoritmo debe estar exacto, es decir, que si se sigue el algoritmo varias veces con el mismo juego de datos, los resultados obtenidos deben ser los mismos. Un algoritmo debe ser finito, debe concluir en algn momento.

2.1.1 Un ejemplo cotidiano Para comenzar a formalizar los conceptos fundamentales para escribir algoritmos veremos un ejemplo de la vida cotidiana. Escribir la receta de cocina para hacer bombas de papa para 4 personas.
Existen dos fases en la resolucin de este planteo: determinar los ingredientes necesarios, describir los pasos para hacer bombas de papas.

1- Ingredientes (elementos necesarios): 1 Kg. de papas, 1 huevo, pan rallado, queso cremoso, aceite, sal y pimienta a gusto. 2- Separemos en tareas los pasos necesarios para lograr el objetivo:
Tarea Tarea Tarea Tarea Tarea 1: Pelar un kilo de papas, y cortarlas en dados pequeos 2: Hervir las papas hasta que estn cocidas 3: Pisar las papas hasta lograr un pur 4: Condimentar a gusto y dejar enfriar. 5: Batir el huevo en un bols Tarea 5.1: Salpimentar a gusto Tarea 6: colocar en un plato el pan rallado Tarea 7: cortar el queso en dados de 1cm aproximadamente Tarea 8: Tomar una porcin de pur. Tarea 8.1: Colocarle un dado de queso en el interior Tarea 8.2: Realizar una bola ocultando el queso Tarea 8.3: Pasarla por el huevo y luego por el pan rallado Repetir la tarea 8 hasta que no haya mas pur. Tarea 9: Colocar una taza de aceite en un sartn Tarea 9.1: calentar a fuego moderado Tarea 10: Colocar las bombas de papas en el aceite y cocinar hasta que se doren Tarea 10.1: sacar del fuego sobre papel absorbente.
8

Repetir la tarea 10 para cocinar todas las bombas. FIN.

Seguramente Ud. habr escrito una receta de cocina distinta, o habr pensado que no sabe hacer este algoritmo, y por lo tanto debi consultar con algn cocinero experto. Pero quin "ejecuta" estas acciones? Tal cual est planteado el algoritmo, lo podr ejecutar toda persona que comprenda que es "batir los huevos" sin ambigedades ni mas detalles, tal vez Ud. pueda seguir estos pasos y terminar con una exquisita comida, o quizs no est an preparado para enfrentar dicho desafi. Pero porqu pensar en subestimar al lector, tal vez Ud. sea un experto cocinero, y no necesite seguir estos pasos para hacer las bombas de papas, simplemente su algoritmo sea " Tarea 1: hacer bombas de papas para 4 personas", pues es una orden que entiende perfectamente. Entonces se define procesador a aquel sujeto o mquina que puede entender un enunciado y ejecutar el trabajo indicado en el mismo. Se concluye pues que el algoritmo depende del procesador que lo va a ejecutar. Frente a un problema debemos saber quien ser el procesador y escribir una solucin que pueda entender y llevar a cabo sin ambigedades.

2.1.2 Problemas algortmicos Son aquellos problemas cuya solucin puede expresarse mediante un algoritmo. En la vida cotidiana encontramos muchos problemas algortmicos, tanto dentro como fuera del campo altamente especializado de la informtica. Otros problemas algortmicos son los siguientes
Problema algortmico Ir a la Biblioteca. Dar la vuelta al mundo por el Ecuador. Resolver una ecuacin matemtica. Cambiar la rueda a un auto. Algoritmo Conjunto de acciones para llegar a la Biblioteca Un itinerario para recorrer el mundo Pasos para resolver una ecuacin Pasos a seguir para cambiar la rueda

En estos casos, los algoritmos muestran las principales caractersticas sealadas en la definicin: exactitud, efectividad y terminacin garantizada. Cuando se ejecutan determinados algoritmos pueden completarse en un pequeo intervalo de tiempo, mientras que otros pueden llevar mucho tiempo. Aqu cabe preguntar si existen problemas no algortmicos, y la respuesta es Si. Un ejemplo de este caso es "Escribir todos los nmeros enteros comenzando desde el 1". No es un problema algortmico, pues la resolucin (que todos podemos imaginar y escribir sin dificultad) no cumple la condicin de finitud.

2.1.3 Definicin de Accin Accin es un evento que modifica el ambiente. Ambiente de un trabajo, es el conjunto de todos los recursos necesarios para la ejecucin de ese trabajo. Por ejemplo, los ingredientes en nuestra receta. Es decir, descripto el ambiente como un conjunto de objetos, una accin sobre ese ambiente es un hecho de duracin finita que, a partir de un estado inicial, para tal accin, tiene, por consecuencia, un nuevo estado bien definido dentro del ambiente. 2.1.3.1 Accin primitiva y no primitiva Podemos pensar que un algoritmo es una secuencia de acciones, que interpretadas y ejecutadas por un procesador llevan a la solucin de un determinado problema. Las acciones que un procesador puede interpretar y ejecutar se denominan acciones primitivas. Pero, qu sucedera si ese procesador no entiende una accin determinada?
9

Es decir, esa accin no pertenecera a su "lenguaje" especfico; entonces habr que modificarla de tal manera que puede ser escrita en trminos entendibles, y pueda ser interpretada por el procesador. En muchos casos este tipo de acciones deben ser descompuestas en tareas ms detalladas para lograr el efecto que se desea. Por ejemplo en nuestro algoritmo culinario, podra ser el caso que un determinado procesador no sepa de que se trata la tarea: "Batir huevos en un bols", y haya que explicrselo con ms detalles.
A ste tipo de acciones se las denomina no primitiva, ya que deben ser descompuestas en acciones primitivas.

Existen diferentes tcnicas para descomponer acciones no primitivas en primitivas. Uno de estos mtodos es el denominado Top-Down o de refinamientos sucesivos, que ser el que usemos. Es decir, partiendo de una idea general de resolucin, iremos descomponindola hasta conseguir una secuencia de acciones primitivas que permitan al procesador resolverla. Se concluye pues que se deber escribir un algoritmo que resuelva el problema dado, y luego deber ser adaptado al procesador que lo va a ejecutar. Por ello, frente a un problema debemos saber quin ser el procesador y escribir una solucin que pueda entender y ejecutar. Nuestro procesador ser la computadora.

2.1.4. Programa Un programa es un conjunto de acciones que puede entender y ejecutar una computadora, escrito en un lenguaje que ella entiende. Otra definicin podra ser es un algoritmo traducido a algn lenguaje que pueda ser entendido por una computadora para poder ejecutarlo. Cada accin del programa se denomina instruccin. Una instruccin, es una combinacin de palabras y smbolos que obedeciendo a la sintaxis propia de un lenguaje, son interpretados y utilizados por el computador para realizar una determinada accin. Para llegar a hacer un programa es necesario el diseo previo del algoritmo, pues se podr expresar la solucin del problema en un lenguaje natural, el cual expresamos nuestras ideas diariamente.
Problema Diseo del algoritmo Interpretacin Conocimiento de mtodos de resolucin programa Lenguaje de programacin

Lenguaje de programacin es un conjunto de smbolos (sintaxis) y reglas (semntica) que permite expresar
programas.

Los algoritmos deberan ser independientes tanto del lenguaje de programacin en que se expresa el programa, como de la computadora que lo va a ejecutar.

2.2. Representacin de Algoritmos


Ahora veremos en qu forma se puede representar un algoritmo. En realidad no existe un lenguaje nico y universal para representar algoritmos. Cada lenguaje tiene una sintaxis determinada, es decir, un grupo finito de elementos que ayudan a representar los algoritmos, y una semntica asociada a la sintaxis, la cual se refiere al concepto que se representa. La sintaxis, conformada por dibujos y/o por palabras, debe ser no ambigua, y tener un nivel de detalle bien establecido con el cual pueda expresarse el algoritmo. Otro punto importante a tener en cuenta es que toda representacin de algoritmos debe usar algn mtodo que permita independizar dicho algoritmo de cualquier lenguaje de programacin, y que la descripcin del algoritmo debe ser tal que pueda ser, fcilmente, transformado en un programa. Existen dos tipos de representaciones, mediante dibujos (grficos) o slo texto (no grficas). Los mtodos usuales para representar algoritmos son:

10

1-Diagrama de flujo 2-Diagrama de Nassi Schneideerman (comnmente denominado Diagrama de Chapin) 3-Pseudocdigo 4-Lenguaje natural 5-Frmulas Los dos primeros son formas grficas de representacin, mientras que los ltimos son no grficas. Analicemos las distintas representaciones. Los mtodos 4 y 5 no suelen ser fciles de transformar en programas. No es frecuente que un algoritmo sea expresado por medio de una simple frmula, pues no tiene detalle suficiente para ser traducido a algn lenguaje de programacin. Y vimos en el ejemplo de las bombas de papas lo ambiguo del lenguaje natural (en nuestro caso el espaol). A continuacin veremos las diferentes representaciones sobre un mismo algoritmo. Calcular el promedio de un conjunto de nmeros positivos, suponiendo que los nmeros ingresan de a uno por teclado. Un valor cero como entrada indicar que finaliz la serie de nmeros positivos.
Diagrama de flujo

Es un diagrama que utiliza grficos (figuras geomtricas en su mayora) y flechas para indicar la secuencia en que deben ejecutarse las acciones. Los smbolos utilizados han sido normalizados por el Instituto Norteamericano de Normalizacin (ANSI). Algunos de ellos y su significado son los siguientes:

Por ejemplo, resolvamos el problema planteado:

Uno de los inconvenientes de este tipo de representacin es la dificultad para modificarlo si se descubren errores de lgica y habra que agregar dibujos para enmarcar nuevas acciones.
Diagrama de Nassi Schneiderman

Tambin conocido como Diagrama de Chapin, es como un diagrama de flujo donde se omiten las flechas de unin y las cajas son contiguas. Las acciones sucesivas se escriben en rectngulos sucesivos.
11

El mismo problema se representara de la siguiente forma:

Repetir mientras (Num < > 0)

Uno de los inconvenientes de este tipo de representacin, al igual que el anterior, es la dificultad para modificarlo si se descubren errores de lgica y habra que agregar rectngulos para nuevas acciones.
Pseudocdigo

El pseudocdigo es un lenguaje de especificaciones (descripciones) de algoritmos. El uso de tal lenguaje hace el paso de codificacin relativamente fcil. Este pseudos-lenguaje est formado por palabras comunes (en el idioma que elija el que lo use), dichas palabras tales como real, entero, mientras, repetir, y otras, son reservadas por el lenguaje y no podrn usarse para otra tarea. La ventaja del pseudocdigo es que en su uso, en la planificacin de un algoritmo, el programador se puede concentrar en la lgica y en las estructuras de control, y no preocuparse de las reglas de un lenguaje o dibujos especficos. Es tambin fcil de modificar si se descubren errores de lgica. Por ejemplo nuestro problema lo expresaramos as:
Algoritmo Promedio_de_numeros_enteros

Num, Cont, Suma: entero Promedio : real Inicio Cont 0 Suma 0 Leer (Num) Repetir mientras (Num <> 0) Cont = Cont + 1 Suma =Suma + Num Leer (Num) finmientras Promedio Suma / Cont Escribir (El promedio de los nmeros es Fin , Promedio )

Las ventajas de utilizar Pseudocdigo y no un Diagrama de Flujo u Diagrama de Chapn son las siguientes: Ocupa menos espacio en una hoja de papel. No se necesita elementos de dibujo para realizarlo. Permite representar en forma fcil operaciones repetitivas complejas. En el Diagrama de flujo, es una tcnica de representacin antigua no se prev smbolos para indicar las estructuras de control. Es muy fcil pasar de pseudocdigo a un programa en algn lenguaje de programacin. Si se siguen las reglas se puede observar claramente los niveles que tiene cada operacin. Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar solucin a un problema determinado. El pseudocdigo utiliza palabras que indican el proceso a realizar.
12

Es muy simple introducir modificaciones. Por todas estas razones nosotros optaremos por el pseudocdigo para escribir los algoritmos.

2.3. Lenguajes de programacin


Como ya vimos un Lenguaje de Programacin es un conjunto de palabras y smbolos, es decir una sintaxis, y las reglas que permite expresar ideas, esto es la semntica del lenguaje. Los principales tipos de lenguajes de programacin son: Lenguaje de mquina Lenguaje de bajo nivel Lenguaje de alto nivel Lenguaje algortmico (-) entendimiento por nosotros (+)

Lenguaje de mquina: es aquel que est escrito en un idioma que entiende el microprocesador (el CPU, el cerebro de la mquina). Las instrucciones son cadenas de 0 y 1, en cdigo binario. Por ejemplo, la instruccin sumar los nmeros 9 y 11 podra ser 0001 1100 0111 0011 1001 1011 Ventaja: de este tipo de lenguajes es la velocidad de ejecucin de los programas que es directa pues el microprocesador las entiende y ejecuta. Desventajas: es un lenguaje de smbolos muy diferentes a los nuestros, y por lo tanto la codificacin del programa se hace lenta y se cometen muchos errores. Las instrucciones en cdigo de mquina dependen del hardware de la computadora, y por lo tanto difieren de una a otra. Lenguaje de bajo nivel: es ms fcil de usar que el anterior. Los lenguajes de bajo nivel por excelencia son los ENSAMBLADORES o Lenguaje ASSEMBLER. Las instrucciones son mnemotcnicos, como por ejemplo ADD, DIV, STR, etc. Una instruccin del ejemplo anterior sera ADD 9,11. Ventaja: es su mayor facilidad de escritura que el anterior. Desventajas: depende del microprocesador (existe un lenguaje para cada uno). La formacin de los programadores es ms compleja que la correspondiente a los programadores de alto nivel ya que exige no slo tcnicas de programacin sino tambin el conocimiento del funcionamiento interno de la mquina. (PLC, control de procesos, aplicaciones de tiempo real, control de dispositivos). Un programa escrito en un lenguaje de este tipo no puede ser ejecutado directamente por el procesador, y debe ser traducido a cdigo de mquina mediante un ensamblador. No se debe confundir, aunque en espaol adoptan el mismo nombre, el programa ensamblador (ASSEMBLER) encargado de efectuar la traduccin del programa a cdigo de mquina, con el lenguaje de programacin ensamblador (ASSEMBLY LENGUAGE). Lenguaje de alto nivel: son los ms utilizados por los programadores. Estn diseados para que las personas escriban y entiendan los programas de modo mucho mas natural (acercndose al lenguaje natural). Una instruccin del ejemplo anterior sera 9 + 11 Los lenguajes de alto nivel son los mas populares y existe una variedad muy grande, algunos ejemplos son BASIC, Pascal, C, C++, Cobol, Fortran, Delphi, Java, Python, SQL y todas sus variantes. Ventajas: Son independiente de la mquina, las instrucciones de estos lenguajes no dependen del microprocesador, por lo cual se pueden correr en diferentes computadoras. Transportabilidad, lo que significa la posibilidad de poder ser ejecutados con poca o ninguna modificacin en diferentes tipos de computadoras. La escritura de los programas con este tipo de lenguajes se basa en reglas sintcticas similares a nuestro lenguaje, por lo tanto el aprestamiento de los programadores es mucho mas rpida que en los lenguajes anteriormente nombrados. Desventajas: Ocupan ms lugar de RAM que los anteriores. El tiempo de ejecucin es mayor pues necesitan varias traducciones.
13

Lenguaje algortmico: El lenguaje algortmico est formado por acciones primitivas provenientes de nuestro lenguaje natural. Si nosotros somos los que vamos a ejecutar esas acciones, entonces se podr escribir en castellano. Una instruccin del ejemplo anterior sera 9+11= . Ventaja: es fcil de aprender un pseudocdigo. Desventaja: necesita muchas traducciones para ser ejecutado por el microprocesador, una de ellas es la conversin a programa a travs de un lenguaje de programacin.

2.4. Nuestro procesador: la computadora


El diccionario de la Real Academia define computador electrnico como Mquina electrnica, analgica o digital, dotada de una memoria de gran capacidad y de mtodos de tratamiento de la informacin, capaz de resolver problemas matemticos y lgicos mediante la utilizacin automtica de programas informticos. La propia definicin nos da indicaciones acerca de algunos elementos bsicos del computador: la memoria algn dispositivo capaz de efectuar clculos matemticos y lgicos. La memoria es un gran almacn de informacin. En la memoria almacenamos todo tipo de datos: valores numricos, textos, imgenes, sonido, etc. El dispositivo encargado de efectuar operaciones matemticas y lgicas, que recibe el nombre de Unidad Aritmtico-Lgica (UAL), es como una calculadora capaz de trabajar con datos y producir, a partir de ellos, nuevos datos (el resultado de las operaciones). Otro dispositivo se encarga de transportar la informacin de la memoria a la UAL, de controlar a la UAL para que efecte las operaciones pertinentes y de depositar los resultados en la memoria: la Unidad de Control. El conjunto que forman la Unidad de Control y la UAL se conoce por Unidad Central de Proceso (o CPU, del ingls Central Processing Unit. Podemos imaginar la memoria como un armario enorme con cajones numerados y la CPU, como una persona que, equipada con una calculadora (la UAL), es capaz de buscar operandos en la memoria, efectuar clculos con ellos y dejar los resultados en la memoria. El procesador trabaja todo en la memoria. Utilizaremos un lenguaje ms tcnico: cada uno de los cajones que conforman la memoria recibe el nombre de celda (de memoria) y el nmero que lo identifica es su posicin o direccin, aunque a veces usaremos estos dos trminos para referirnos tambin a la correspondiente celda. Cada posicin de memoria permite almacenar una secuencia de unos y ceros de tamao fijo. Por qu unos y ceros? Porque la tecnologa actual de los computadores se basa en la sencillez con que es posible construir dispositivos binarios, es decir, que pueden adoptar dos posibles estados: encendido/apagado, hay corriente/no hay corriente, cierto/falso, uno/cero. Es posible representar datos tan variados como nmeros, textos, imgenes, sonido con slo unos y ceros? La respuesta es SI (aunque con ciertas limitaciones). La memoria es un conjunto de circuitos electrnicos organizado en pequeas porciones, todas iguales, llamadas celdas. En cada celda se puede guardar una letra, un smbolo o un nmero. Cada uno de estos compartimentos de la memoria tiene asignada una direccin nica, que le servir a la Unidad de Control para organizar su tarea. direccin contenido . FFF8 5 FFF9 12 FFFA L FFFB i FFFC b FFFD r FFFE o

En este modelo de memoria, cada direccin indica una celda unvocamente. Sobre cada celda se puede leer o escribir.
14

La operacin de escritura sobre una celda, coloca un valor sobre la misma destruyendo el valor previo. Si en este caso se escribiese en la celda FFFC el valor 10, en una lectura posterior arrojara el valor 10, y la b hubo sido reemplazada. Aqu podemos concluir que la operacin de escritura es destructiva del contenido de la celda. De este modo los dispositivos de entrada almacenan (guardan, escriben) los datos en memoria, el procesador los procesa (realiza operaciones, lee y escribe en la memoria) y los dispositivos de salida muestran los contenidos de la memoria al mundo exterior. La MEMORIA PRINCIPAL es el dispositivo de almacenamiento temporal de DATOS, INSTRUCCIONES, RESULTADOS intermedios y definitivos de la ejecucin de programas. Este tipo de memoria tiene la caracterstica de ser voltil, es decir, que cuando se corta el suministro elctrico la informacin en ella desaparece. Por ello, y desde este punto de vista, los dispositivos de almacenamiento (MEMORIA SECUNDARIA) permiten guardar de forma permanente programas e informacin, que luego se llevarn a memoria principal. Obviamente el manejo de la memoria es de suma importancia y el computador por medio de algn proceso debe regular su uso.

Tipos de datos a considerar Nmeros Sistema binario (conveniencia y simplicidad) El sistema binario al igual que el decimal es un sistema posicional
Decimal 0 1 2 3 Binario 0 1 10 11

Texto Est representado por un cdigo numrico. Cada caracter (letras maysculas y minsculas, signos de puntuacin signos especiales como #, @, & etc.) tienen asociado un valor numrico. Estos valores numricos son arbitrarios Cdigo ASCII (American Standard Code for Information Exchange) codificacin estndar de 7 bits que asignaba un caracter a cada nmero entre 0 y 127, slo contena los caracteres de uso comn en la lengua inglesa. La tabla ASCII fue enriquecida posteriormente definiendo un cdigo de 8 bits para las lenguas de Europa occidental: conocida como tabla IsoLatin-1. ^ @ ^ ^B ^C ^D ^E 00 . 01 02 03 04 05 / 0 1 2 3 46 \ 47 48 49 50 51 ] ^ _ ` a 92 93 94 95 96 97

^F 06 4 52 b 98 ^G 07 5 53 c 99

Definicin de Tipos de datos Un tipo de datos est determinado por un conjunto de valores ordenados y por las operaciones permitidas sobre esos valores.
15

Atributos de los tipos de datos: Rango de definicin Operaciones realizables sobre el tipo Representacin interna

Se debe notar que, al contrario de lgebra, el conjunto de valores es finito, tiene un rango1, pues la memoria del computador tiene un nmero acotado de lugares binarios para guardar los datos. Los tipos de datos que trabajaremos son entero, real, caracter y lgico, y se los conocen como tipo de datos El conjunto de valores que pueden asumir los enteros o los reales estn acotados a los rangos de los nmeros que puede manejar el procesador en cuestin, con las limitaciones de bytes que se usen, es decir, del contenedor del nmero que disponga ese procesador. Los caracteres estn organizados por el cdigo ASCII. Ver cdigo ASCII. Otro tipo de dato que se utiliza habitualmente es el string o cadena de caracteres. Un objeto del tipo cadena de carcter asume como valores posibles secuencias de caracteres tomados de un conjunto especfico (por ejemplo el cdigo ASCII) y admite como operacin la concatenacin. Cabe aclarar que no es un tipo de datos primitivo, sino un tipo de dato compuesto por elementos primitivos. Tipo de dato Entero Real Carcter Lgico Valores -3,-2,-1,0, 1, 2,3 -3.0, 3.0 Letras minsculas, maysculas, smbolos, etc. VoF Rango Depende del microprocesador Depende del microprocesador cdigo ASCII VyF Operaciones + - * / comparacin + - * / > comparacin Comparacin concatenacin < y

producto suma negacin logica

Expresiones En este tem veremos en qu tipo de operaciones pueden intervenir los datos de acuerdo a su tipo.
Una expresin describe un clculo a efectuar cuyo resultado es un nico valor.

Las expresiones pueden ser del tipo numrica, relacional, lgicas y carcter. El resultado de una expresin aritmtica es del tipo numrico, el de una expresin relacional o lgica del tipo lgico y el de una expresin carcter es del tipo cadena de caracteres o carcter. Una expresin consta de operandos y operadores.
Expresiones aritmticas

Las expresiones aritmticas son anlogas a las frmulas matemticas. Los elementos intervinientes son numricos (reales, enteras) y las operaciones son aritmticas. Los operadores son:

1 Rango es la variacin entre un mnimo y un mximo claramente especificados.

16

Operador + * / **

Significado Suma Resta Multiplicacin Divisin real Potencia

Tipos operandos Enteros o reales Enteros o reales Enteros o reales Enteros o reales Enteros

de

Tipo de resultado Entero / real (*) Entero / real (*) Entero / real (*) real Entero / real (**)

Reglas para evaluar expresiones aritmticas Las expresiones se evalan de izquierda a derecha. Regla fundamental: debe estar escrita en un nico rengln. Los parntesis se usan para anidar expresiones y alterar el orden de evaluacin. Las operaciones encerradas entre parntesis se evalan primero. Las reglas de precedencia de las expresiones nos dicen el orden en que la computadora evala una expresin cuando hay ms de un operador. Para expresiones aritmticas se siguen, lgicamente, las reglas de precedencia aritmtica. El orden de evaluacin de los operadores en cualquier expresin es el siguiente: Parntesis (empezando por los ms internos) Potencias Productos y Divisiones Sumas y restas Concatenacin Relacionales Lgicos Cuando hay dos operadores con la misma precedencia, se calcula primero la operacin que est a la izquierda. Funciones internas o de biblioteca En los lenguajes de programacin existen funciones ya establecidas que conforman las funciones de biblioteca (library), algunas de ellas son: Funcin abs ( x ) sqrt ( x ) cos ( x ) sin ( x ) exp ( x ) int(x) Nint(x) Mod(div, divis) asin(x) Veamos algunos ejercicios 1) Cul es el resultado? Descripcin Valor absoluto Raz cuadrada Coseno de x, x en radiantes Seno de x, x en radianes Exponencial Parte entera de x Redondea prximo al entero ms Ejemplo abs ( x ) sqrt ( 9 ) cos ( alfa ) sin ( alfa ) exp ( 5 ) int( 5.70 ) Nint(23.52) mod(10,3) asin(x)

Resto de la divisin entera Arco seno de x, x en radianes

(*) cuando en una operacin los dos operandos son enteros el resultado es entero. Pero si al menos uno de los operandos es real, el entero interviniente se flota, es decir, se convierte en notacin de punto flotante, y as el procesador opera en real, dando como resultado un real. (**) en la operacin de potencia consideramos ambos operandos como enteros, y cuando el resultado pueda salirse del rango de enteros lo consideramos como real.

17

10.5 / 3 = 1 /4 = c)1.0/4 = d) 3 + 6 * 2 = -4 * 7 + 2 ** 3 / 4 - 5 = 12 + 3 * 7 + 5 * 4 = sqrt( 25 ) = abs ( 6 ) = abs (-12.5 ) = Nint( 6.64 ) = Nint ( 6.23 ) = int( 6.64 ) = int(6.23 ) = (2 * X) 5 /= (3 + 8) * 2 =

si X=3

2) Convertir las siguientes expresiones algebraicas en expresiones algortmicas. Regla fundamental debe estar escrita en un nico rengln.

5( x y)

x y w u a

b b 2 4ac 2a

Expresiones relacionales y lgicas

El resultado de este tipo de expresiones es Verdadero o Falso. Las expresiones lgicas se forman combinando constantes lgicas, variables lgicas y otras expresiones lgicas mediante operadores lgicos (NOT, AND, OR) y/o operadores de relacin (< > <= >= = <>). Una expresin del tipo relacional tiene operandos que admiten una relacin de orden, tales como los nmeros enteros, caracteres y cadenas de caracteres. Una expresin del tipo lgico3 tiene como operandos expresiones relacionales y/o expresiones lgicas. El resultado de una expresin lgica es del tipo booleano. El operador NOT es unario, el AND y el OR son binarios.
Operadores de relacin

a>b >=

a mayor b mayor igual

<=

b<a b menor a menor igual < > /=

a =b a igual b distinto

Ejemplo Si A=4 y B=3, entonces (A-2) < (B-4) es falso. Para realizar comparaciones de datos de tipo carcter, se requiere un orden predefinido de los caracteres. Para ello recurriremos al cdigo ASCII (American Code for Information Interchange). All podemos ver que la a es mayor que la A , es decir, est antes la mayscula que la minscula dado que el ascii de A=65 y el de a=97.

Tambin denominado booleano.


18

Ejercicio 3) Determinar el resultado de las siguientes expresiones relacionales: A > a = Toms > Tomar = libro < librera =
Operadores lgicos

1- NOT es un operador unario, es decir que influye sobre una nica expresin del tipo lgica. NOT (expresin lgica) NOT (verdadero) = Falso NOT (falso) = Verdadero 2- AND es la conjuncin, la multiplicacin lgica, cuya lgica es: expresin1 V F V F expresin2 V F F V exp1 .AND. exp2 V F F F

Conclusin: el resultado de una expresin con un operador AND es verdadero siempre y cuando todas las expresiones son verdaderas, en caso de existir una expresin falsa, el resultado es falso. 3- OR es la disyuncin o suma lgica, cuya lgica es: Expresin1 V F V F expresin2 V F F V exp1 .OR. exp2 V F V V

Conclusin: el resultado de una expresin con un operador OR es falso siempre y cuando todas las expresiones son falsas, en caso contrario es verdadero. Ejercicios 4-Cul es el resultado? .NOT. 4 > 6 = ( 1.0 < X ) AND (X < Z + 7.5 ) = 5 < B 4 .AND. A = 4 X 2 = 1 .OR. (X+3) > 6 .NOT. Z > 6

considerar que X= 7 y Z = 4 si A=4, B=3 si X=3 si Z=6

19

5- Hallar las expresiones algortmicas correspondientes en cada caso. a) b) x [-1,1] x

c)

x ([-1,1], 2)

Expresiones de caracteres

Una expresin del tipo cadena de caracteres involucra operandos del tipo cadena y admite la operacin de concatenacin. Se identifica por // y los operandos se encierran entre comillas dobles. Por ejemplo la operacin Hola // amigo da como resultado Hola amigo

2.5. Variables y constantes


El procesador necesita disponer de un mecanismo que permita el almacenamiento y la manipulacin de los datos. En un algoritmo/programa esto es llevado a cabo por entidades a las que denominaremos variables y constantes.
Una variable es un objeto de memoria cuyo valor puede cambiar durante el desarrollo del algoritmo o ejecucin del programa.

Los atributos de una variable son: Un nombre que lo designa (en bajo nivel hace referencia a una celda de memoria) Un tipo de dato que describe el uso de la variable. Un valor que describe el contenido Es muy recomendable que el nombre sea representativo del uso de esa variable a lo largo del programa. Las variables guardan diferentes tipos de informacin: numrica entera, numrica real, caracter, lgica o cadena de caracteres. En los lenguajes de programacin de tipos fuertes o de tipos estrictos como FORTRAN, las variables deben declararse antes de usarse, mientras que en lenguajes de tipos no estrictos, como Python no hace falta una declaracin explcita y estricta del tipo de datos. Cuando se declara una variable estamos reservando una porcin de memoria principal para el almacenar los correspondientes valores correspondientes al tipo de variable. La declaracin de las variables implica el darles un lugar en memoria, un nombre y tipo de dato asociado.
Una constante es un objeto cuyo valor no puede ser modificado durante el desarrollo del algoritmo o ejecucin del programa.

Es similar al concepto de variable pero con la particularidad de que su valor permanece inalterable en curso del desarrollo del algoritmo o ejecucin del programa. Con una constante se especifica valores que no se calculan ni leen en el programa, sino que permanecen constantes. En el ejemplo del clculo del permetro de la circunferencia (2 * Pi * radio), 2 es una constante expresada por su valor, radio es una variable y Pi es una constante con nombre.
Nombres de variables/constantes (identificadores) nombres de programas, funciones, procedimientos

Cada lenguaje tiene sus reglas para construir los nombres o identificadores. En este libro vamos a proponer un conjunto de reglas propias, a saber: Todo identificador debe comenzar con una letra del alfabeto ingls (mayscula o minscula), Puede contener una combinacin de los siguientes caracteres: Letras: ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
20

Dgitos: 0123456789 Caracteres especiales: _ (guin bajo) La cantidad de caracteres que conforman al identificador no est limitada, No debe ser palabra reservada Todo identificador debe representar el uso que se le dar en el algoritmo. Los siguientes son ejemplos de nombres de identificadores vlidos: Curso_de_Informatica r2e2 Info

INFO

iNfO

Ejemplos de nombres de identificadores no vlidos: @comienzo comienza con un smbolo especial La solucin contiene un espacio en blanco y una vocal acentuada 1er_solucion comienza con un nmero

Clasificacin de Variables Las variables se pueden clasificar por su contenido y por su uso.
Por su Contenido Numricas Lgicas Caracter Cadena de caracteres Por su Uso De Trabajo Contador Acumulador/Sumador

Por su Contenido Variable Numricas: Son aquellas en las cuales se almacenan valores numricos, enteros o reales, positivos o negativos. Ejemplo: pi=3.1416 , costo=2500 , x= 12.50 Una variable numrica almacena nmeros, y slo puede estar involucrada en operaciones aritmticas. Variables Lgicas: Son aquellas que slo pueden contener dos valores : verdadero o falso (V o F, true o false, 0 o 1, Si o No ). Ejemplo z= V , x= F Variables Caracter: cuyo contenido es un slo caracter alfanumrico (una letra, un caracter especial), que escribiremos entre apstrofo. Ejemplo: letra = 'a', Inicial = 'L', Rta = ' S ', dgito= 4 Variables Cadena de caracteres o String: cuyo contenido est formado por caracteres alfanumricos (letras, nmeros y caracteres especiales), que escribiremos entre comillas. Ejemplo: letra= "a, Apellido= "Lopez" , Direccion= "Pasco #190" Cul es la diferencia que existe entre la constante "a" y la a? En primer lugar, la primera es una constante de tipo string, pues est escrita entre comillas, y la segunda es de tipo carcter, pues est entre apstrofos. Pero hasta aqu no vemos grandes diferencias. Entonces la pregunta es Qu diferencia hace el procesador con los caracteres y los strings? El procesador utiliza un carcter especial para marcar el final de una cadena de caracteres. Sin embargo cuando se trata de un nico carcter ya sabe que slo ocupa un Byte. Cuando el procesador almacena una cadena de caracteres en memoria lo hace ubicando cada carcter en un byte en posiciones consecutivas de memoria. Pero cuando quiera recuperar dicha cadena de memoria no sabr hasta

21

que byte debe tomar. Este problema se solucion haciendo que el procesador coloque un carcter especial al final de la cadena para identificar su fin. Este carcter especial lo denominaremos fin de cadena, y como es especial no figura en el cdigo ASCII, para poder expresarlo en nuestros algoritmos lo escribiremos como '/s' , aunque escribimos dos caracteres tendremos que pensar que internamente el procesador lo va a entender como el carcter fin de cadena. Este carcter ocupa un byte. En conclusin, la diferencia entre la "a" y la a, es que la "a" ocupa dos bytes de memoria, uno para la representacin del carcter a y otro para el fin de cadena, en cambio la 'a' ocupa un nico lugar de memoria. En el caso de variables del tipo cadena el nombre de la variable indica la posicin inicial y el resto es consecutivo. Por su Uso Variables de Trabajo: Variables que reciben un valor, ya sea de un ingreso de informacin o como resultado de una operacin. Ejemplo: suma = a + b, precio= 10.52 Contadores: Se utilizan para llevar el control del nmero de ocasiones en que se realiza una operacin o se cumple una condicin. Los incrementos son generalmente de uno en uno. Ejemplo: Cont = Cont + 1 Acumuladores o Sumadores: Se utilizan para llevar la suma acumulativa de una serie de valores que se van leyendo o calculando progresivamente. Ejemplo: Suma = Suma + x

2.6. Acciones primitivas en Pseudocdigo


En los tems anteriores comenzamos a conocer la sintaxis y semntica de nuestro procesador, describiendo los tipos de datos que maneja y cmo los almacena en memoria. Ahora veremos algunas de las acciones primitivas del mismo. Generalizando, las acciones que realiza nuestro procesador son: "toma" informacin desde algn perifrico de entrada, actualiza la memoria de datos, procesa los datos para obtener resultados parciales y finales, enva los resultados a algn perifrico de salida.

Accin de asignacin El objetivo de una accin de asignacin es cambiar el valor almacenado en una variable.
La forma de escribirla, es decir, su sintaxis es: <variable> <expresin> La expresin es evaluada, y su resultado es asignado como valor de la variable a la cual apunta la flecha, es decir la expresin de la derecha se evala y su resultado es copiado a la variable que se encuentra a la izquierda. Ejemplos: Sean i : entero, r : real, c : char i 3+4 c T se le asigna el valor 7 a la variable i se le asigna el valor T , a la variable c

As tendremos asignacin aritmtica, lgica, de carcter, y de cadena de caracteres. Notar que: La ocurrencia de una variable en el lado izquierdo de una asignacin denota el lugar de memoria donde se guardar el valor resultante de la expresin.
22

La ocurrencia de una variable en el lado derecho de una asignacin denota su valor actual. Una misma variable puede aparecer en la parte izquierda y derecha de una asignacin. Por ejemplo: x x + 1 Este tipo de asignacin es muy usual en la resolucin de algoritmos. Sin embargo, NO debe interpretarse como una ecuacin matemtica, no tendra sentido, por este motivo se usa una flecha en vez de un signo de igualdad. Significa que el valor actual de la variable x se utiliza para calcular su nuevo valor.

Correccin de tipo durante la asignacin

En una asignacin x exp , el tipo de la variable x y el de la expresin exp debe ser el mismo. Pero existe una excepcin, ya que es posible asignar un valor entero a una variable real. Ejemplo: Si x: real y z 4 x z Al asignar un valor entero a una variable real, el valor se transforma a un real, y luego se lo asigna a x, resultando x = 4.0 La conversin de entero a real se realiza en forma automtica, y se dice que el entero se flota, haciendo referencia a la representacin de punto flotante. La conversin de real a entero, es decir z x en Fortran: en z se almacena slo la parte entera, se trunca la parte real, Ej. Cul es la diferencia? A B A B A7 A 7 Ejercicios Encontrar el valor de la variable V despus de la ejecucin de las siguientes acciones: a)V 4.0 * 5 b) X 3.0 Y 2.0 V X * Y Y c)V 5 d)V 10 X 3 V V+1 V V + sqrt(X) Escribir el proceso (algoritmo) para conmutar los valores de dos variables. Dadas 2 variables X e Y con valores asignados. Para intercambiar dicho valores, se deber resguardar el valor de una de ellas en una variable auxiliar y luego realizar el cambio, de la siguiente manera:
auxiliar X X Y valor de Y en X se resguarda el valor de X para que no se pierda como el valor de X est resguardado se puede asignar el

z: entero

Y auxiliar El valor de X est en auxiliar, el cual es asignado a X

23

Teniendo tres variables A, B y C, intercambia sus valores de modo que ninguna de ellas posea el valor original. A esta forma de rotacin de los valores se denomina intercambio de variables en forma circular. Realiza el algoritmo que resuelva este problema.

Entrada y salida de informacin. Basndonos en el modelo computacional presentado en el primer captulo, necesitamos mecanismos (acciones) que nos permitan ingresar los datos a la computadora y otros para mostrar los resultados. Para ello existen dos acciones que denominaremos Leer y Escribir que describiremos a continuacin.
Accin Leer

El objetivo de una accin Leer es cambiar el valor almacenado en una variable a travs de perifricos de entrada (supongamos teclado, modem, o disco), se puede pensar como una asignacin externa. Sintaxis:
Leer (lista de variables)

La lista de variables es separada por comas. Por ejemplo Leer (Num1, Num2) Si desde teclado se ingresa dos nmero, el primer nmero ingresar en la variable Num1, y el segundo en la variable Num2.
El leer( ) es una accin primitiva considerad una asignacin externa por lo tanto, es una accin destructiva del contenido Accin Escribir

El objetivo de una accin Escribir es mostrar los resultados o textos a travs de perifricos de salida (supongamos monitor, impresora, modem, o disco) Sintaxis:
Escribir (letrero o cartel opcional,lista de expresiones de salida)

La forma para usarla ser:


Escribir ( Num1)

muestra el valor de una variable , en este caso de Num1 Escribir ( Buen da) muestra el texto encerrado entre comillas Escribir ( El resultado es , Num2) muestra el texto y el valor de la variable Num2 Escribir (Num1 * Num2 / 34 ) muestra el resultado de la expresin Ejemplo Escribir un algoritmo que lea un nmero, lo multiplique por 2 y muestre el resultado Escribir un algoritmo que dibuje ********** * * * * * * ********** Modificar el algoritmo anterior para que en el centro del recuadro muestre la palabra hola. Modifique el anterior para que lea un nmero entero desde teclado y la visualice en el centro del recuadro.

24

También podría gustarte