Sunteți pe pagina 1din 54

PASCAL

Algoritmos: descripcin y notacin algortmica Introduccin El objetivo primordial de la asignatura es proporcionarle al alumno los conocimientos que le permitan disear algoritmos propios para la resolucin de problemas matemticos, parte de tales conocimientos versarn sobre uno o ms lenguajes de programacin para describir dichos algoritmos as como tcnicas para desarrollar programas eficientes y comprensibles. Sin embargo, el objetivo de esta asignatura no es programar computadores propiamente tal, por lo que aquellos alumnos que no tengan experiencia en el manejo de computadores no deben preocuparse, los contenidos de la asignatura se proporcionarn de forma gradual y dando por supuesto que los alumnos nunca han aprendido un lenguaje de programacin. Aquellos alumnos que conozcan algn lenguaje tienen ciertas ventajas pero tambin inconvenientes al tener que luchar contra vicios adquiridos. Aproximacin intuitiva a los algoritmos Como ya se ha dicho, un lenguaje de programacin no es ms que una forma de representar un algoritmo, as pues, qu es un algoritmo? Antes de proporcionar una definicin precisa del trmino daremos un pequeo rodeo puesto que los algoritmos han acompaado a la humanidad desde hace mucho tiempo, con la salvedad de que la mayor parte eran dados por supuesto o bien se les denominaba con trminos diferentes. A continuacin se muestran algunos ejemplos clsicos. Algoritmo: Instrucciones para subir una escalera [...] Las escaleras se suben de frente, pues hacia atrs o de costado resultan particularmente incmodas. La actitud natural consiste en mantenerse de pie, los brazos colgando sin esfuerzo, la cabeza erguida aunque no tanto que los ojos dejen de ver los peldaos inmediatamente superiores al que se pisa, y respirando lenta y regularmente. Para subir una escalera se comienza por levantar esa parte del cuerpo situada a la derecha abajo, envuelta casi siempre en cuero o gamuza, y que salvo excepciones cabe exactamente en el escaln. Puesta en el primer peldao dicha parte, que para abreviar llamaremos pie, se recoge la parte equivalente de la izquierda (tambin llamada pie, pero que no ha de confundirse con el pie antes citado), y llevndola a la altura del pie, se le hace seguir hasta colocarla en el segundo peldao, con lo cual en ste descansar el pie, y en el primero descansar el pie. (Los primeros peldaos son siempre los ms difciles, hasta adquirir la coordinacin necesaria. La coincidencia de nombre entre el pie y el pie hace difcil la explicacin. Cudese especialmente de no levantar al mismo tiempo el pie y el pie). Llegando en esta forma al segundo peldao, basta repetir alternadamente los movimientos hasta encontrarse con el final de la escalera. Se sale de ella fcilmente, con un ligero golpe de taln que la fija en su sitio, del que no se mover hasta el momento del descenso Julio Cortzar (Historias de Cronopios y de Famas).

Algoritmo: Tortilla de papas Ingredientes: 2 vasos (de los de agua) de aceite (1/2 litro) sal 8 huevos 1 kg de papas Se lavan las papas una vez peladas, y se secan con un pao; se parten en dos a lo largo y despus se cortan en lminas finitas. Se pone el aceite en la sartn a calentar y se fren, movindolas de vez en cuando y echndoles un poco de sal. Una vez fritas (ms o menos doradas, segn gusten), se separan y se ponen a escurrir en un colador grande. Se quita el aceite sobrante de la sartn. Aparte se baten los huevos con tenedor y muy fuerte; se pone un poco de sal; en el mismo plato de los huevos se echan las papas y se mueven con un tenedor. En una sartn grande (o en dos pequeas) se ponen 3 cucharadas soperas de aceite para que slo cubra el fondo. Cuando est caliente se vierte la mezcla de huevos y papas. Se mueve la sartn por el mango para que no se pegue la tortilla. Cuando se vea que est bien despegada y dorada (esto depende del gusto de cada cual), se pone una tapadera encima, se vuelca la sartn y se escurre suavemente la tortilla otra vez en la sartn. Se vuelve a mover por el mango y cuando est cuajada (a gusto) se pasa a una fuente redonda y se sirve. Simone Ortega (1080 recetas de cocina). Algoritmo: Multiplicacin de nmeros enteros Para obtener el producto de dos nmeros enteros utilizando lpiz y papel se debe escribir el primer factor (multiplicando) y, justo debajo y alineado a la derecha, el segundo factor (multiplicador). Se recorren todas las cifras del multiplicador de derecha a izquierda y se operan con cada una de las cifras el multiplicando, tambin de derecha a izquierda, escribiendo los resultados intermedios en lneas separadas; cada lnea estar desplazada una posicin a la izquierda respecto a la lnea inmediatamente superior. Una vez se han obtenido todos los resultados intermedios se suman columna a columna Obtenindose el resultado final.

Algoritmos: descripcin y notacin algortmica Si se estudia con atencin cada uno de los algoritmos anteriores descubriremos una serie de caractersticas interesantes que definen la naturaleza de lo que es un algoritmo: Un algoritmo resuelve un problema especfico: subir una escalera, obtener una tortilla de papas o hacer una multiplicacin. Un algoritmo es llevado a cabo por una entidad que trabaja en un entorno dado: una persona cuyo universo inmediato se reduce a su propio cuerpo y una escalera; un cocinero con una sartn, huevos, papas, aceite, sal y cebolla; o un nio con lpiz y papel. Un algoritmo consta de una serie de pasos que deben llevarse a cabo siguiendo una secuencia marcada: algunos de los pasos en uno de los algoritmos anteriores seran: dar la vuelta a la tortilla, batir los huevos, pelar las papas o romper los huevos; dichos pasos deben aplicarse en un orden prefijado y no de cualquier manera. Un algoritmo se aplica de forma mecnica: un algoritmo no precisa decisiones subjetivas ni creatividad en su aplicacin, cualquiera con una receta adecuada para obtener tortilla de papas lograr una tortilla de papas. Sin embargo, s es necesario un acto creativo para desarrollar un nuevo algoritmo. Un algoritmo termina en un tiempo finito: todos los algoritmos deben finalizar, pueden tardar ms o menos tiempo en lograr un resultado pero dicho tiempo debe ser finito. Definicin de algoritmo. Etimologa del trmino algoritmo En resumen, Un algoritmo es una secuencia de pasos que es llevado a cabo de forma mecnica y sistemtica por un actor que se desenvuelve en un entorno dado para resolver un problema determinado en un tiempo finito. Esa podra ser una definicin vlida de algoritmo, otra posible definicin sera la siguiente: Un algoritmo es una combinacin de instrucciones combinadas de forma adecuada para resolver un determinado problema en una cantidad finita de tiempo. Cada instruccin es una indicacin sencilla y no ambigua. En estos momentos, el alumno debera tener bastante claro qu es un algoritmo, en qu consiste y dar ejemplos de algoritmos; tambin es probable que se est preguntando de dnde procede el mismo trmino, ALGORITMO, por qu denominamos algoritmos a los algoritmos y no recetas o combinaciones de indicaciones sencillas y no ambiguas...? El trmino proviene de Mahommad ibn Musa al-Khowrizm (Mahommed, hijo de Musa, natural de Kharizm), matemtico persa del siglo IX; las matemticas le deben la introduccin del sistema de numeracin actual y del lgebra. En su libro De numero indiorum (Sobre los nmeros hindes) proporciona las reglas para realizar las operaciones aritmticas (con los nuevos nmeros, por supuesto), dichas reglas se denominaron reglas de al-Khowrizm y, por deformacin algoritmos, hacindose extensivo el trmino a cualquier conjunto de reglas para resolver un problema determinado.

Mquinas para aplicar algoritmos El hombre siempre ha deseado tener herramientas que le ayudaran a efectuar clculos precisos y rpidos; aunque los actuales computadores electrnicos tienen una historia relativamente corta (apenas medio siglo) son muchos los precedentes mecnicos y electromecnicos que han aparecido a lo largo de la historia. Algunos de los hitos ms interesantes seran los siguientes: 3000 A.C: baco de arena (Oriente medio). 1274: Ramn Llull ide dispositivos mecnicos para realizar demostraciones lgicas. 1500: Leonardo DaVinci diseo mquinas de calcular mecnicas. 1624: Wilhelm Schickard desarroll una calculadora con cuatro operaciones bsicas. 1642: Blaise Pascal cre la Mquina Aritmtica que permita realizar sumas. 1671: Gottfried Leibniz construy una calculadora mecnica que permita sumar, restar, multiplicar, dividir y calcular races cuadradas. 1830: Charles Babbage diseo y desarroll la primera computadora de uso general, la Mquina Analtica; dicha mquina funcionara impulsada mediante vapor y, aunque nunca lleg a ser construda4, Ada Lovelace (hija del poeta Lord Byron y colaboradora de Babbage) se convirti en la primera programadora del mundo al escribir programas para dicha mquina; el primero de ellos permitira calcular la serie de Bernoulli. A finales del siglo XIX se comenzaron a aplicar nuevas tcnicas como las tarjetas perforadas (inicialmente utilizadas para controlar telares) y la electricidad en el desarrollo de mquinas precursoras de los computadores; durante la segunda guerra mundial se dio un impulso definitivo hacia el desarrollo de los mismos y se estableci una arquitectura que an hoy perdura; la revolucin iniciada por el transistor y, posteriormente, por el chip condujeron a la actual explosin informtica. Elementos participantes en la realizacin de un algoritmo Al mencionar las caractersticas fundamentales de los algoritmos decamos que un algoritmo es llevado a cabo por una entidad que trabaja en un entorno dado. En los ejemplos anteriores la entidad era un ser humano y el entorno era el propio entorno fsico que le rodeaba; sin embargo, en esta asignatura los algoritmos que nos interesan no van a ser aplicados por un individuo (no sera prctico ni eficiente) sino por un instrumento mecnico. As, de cara a una descripcin asptica de los algoritmos se emplearn los siguientes trminos para referirnos a los elementos que participan en un algoritmo:

Procesador: un procesador es un ente que es capaz de entender los pasos (acciones) que componen el algoritmo y llevarlos a cabo (ejecutarlos). Entorno: es el conjunto de materiales necesarios para la ejecucin del algoritmo. Accin: es un suceso, llevado a cabo por el procesador, que modifica el entorno.

William Gibson y Bruce Sterling escribieron una novela de ciencia ficcin, The Difference Engine (La mquina diferencial), en la que las mquinas de Babbage llegan a ser construidas en la poca victoriana de tal manera que Inglaterra entra de forma simultnea en la Revolucin Industrial y la Revolucin de la Informacin.

Al aplicar estos conceptos al algoritmo de la tortilla de patatas podemos ver que el procesador es el cocinero, el entorno son los ingredientes (huevos, papas, cebolla) y las acciones cada uno de los actos que se aplican sobre los ingredientes (romper, batir, pelar, trocear, salar, freir, etc). Si, en cambio, se aplican a un algoritmo que se vaya a ejecutar en un computador tenemos que el procesador es el computador, el entorno son los datos con los que va a trabajar y las acciones seran todas aquellas operaciones que el computador puede realizar sobre los datos (sumar, restar, comparar, etc). Formas de describir un algoritmo Dado que los algoritmos permiten resolver problemas de forma mecnica, est claro que resulta muy interesante compartir dicho algoritmo de tal manera que otras personas puedan conocerlo y aplicarlo; as surge el problema de describir los algoritmos de forma tal que todas las caractersticas que los definen se mantengan invariables. Lenguaje natural La primera y ms sencilla forma de describir un algoritmo es empleando el lenguaje natural; por ejemplo, el algoritmo para encontrar las races de una ecuacin de segundo grado podra describirse as: 1. Definir los coeficientes de la ecuacin de segundo grado: a, b y c. 2. Determinar el valor del discriminante: b2-4ac. 3. Si el discriminante es cero slo hay una solucin: -b/(2a). 4. Si el discriminante es positivo pero no cero hay dos soluciones: (-bdiscr)/(2a). 5. Si el discriminante es negativo no hay soluciones reales. La ventaja fundamental es la facilidad de comprensin, cualquier persona (hispanoparlante, por supuesto) que lea dicho algoritmo podra entenderlo y aplicarlo; sin embargo, son varios los problemas que plantea describir un algoritmo de esta forma: El lenguaje natural no es universal, este algoritmo sera completamente intil para los no hispanoparlantes. El lenguaje natural es ambiguo y, por tanto, susceptible de errores. El lenguaje natural es demasiado amplio, lo que para una persona puede ser una instruccin sencilla puede no serlo para otra y desde luego no lo ser para un computador.

Por todo ello, se han buscado nuevas formas de describir los algoritmos que, cuando menos, sean ms universales, estn mejor delimitadas y no sean ambiguas; dos tcnicas que logran esto son los organigramas y las notaciones en pseudocdigo.

Organigramas (Diagramas de Flujo) Los organigramas o diagramas de flujo permiten describir los algoritmos de forma grfica; para ello utilizan una serie de bloques que indican distintas circunstancias y flechas que muestran bajo qu condiciones se pasa de un bloque a otro. Algunos de los smbolos son los siguientes: Terminal Punto de comienzo o final de un programa.

Entrada/Salida Informacin introducida para su proceso o generada como resultado.

Decisin Operacin que determina varios caminos alternativos a seguir.

Proceso Cualquier proceso distinto de la E/S o las decisiones.

Los organigramas presentan varias ventajas frente al lenguaje natural: Los smbolos son universales. Son menos propensos a la ambigedad. Por estar basados en un nmero pequeo de bloques y reglas para su empleo permiten delimitar mejor los algoritmos. Se aproximan ms a la forma en que trabaja el computador.

Sin embargo:

El hecho de emplear smbolos supone que una persona que desconozca los smbolos puede tener dificultades para comprender el algoritmo o no entenderlo en absoluto. Aunque los smbolos son universales el texto que se coloca en su interior sigue siendo lenguaje natural. La representacin grfica puede resultar bastante tediosa y en el caso de algoritmos complejos extremadamente confusa. Un computador no es capaz de utilizar una representacin visual como descripcin de un algoritmo.

Actualmente, los organigramas no son muy utilizados aunque para mostrar el funcionamiento de algoritmos sencillos siguen siendo resultando prcticos.

Pseudolenguaje y/o Pseudocdigo El pseudolenguaje y/o pseudocdigo pretende aunar en un solo tipo de representacin las ventajas del lenguaje natural y de los organigramas sin ninguno de sus problemas; por tanto, el pseudocdigo: Es fcilmente comprensible para una persona que lo vea por vez primera. Est bien delimitado. Elimina las ambigedades del lenguaje natural. Se representa de una forma compacta.

De esta forma, el pseudocdigo se suele ver como un subconjunto de un lenguaje natural que proporciona un nmero limitado de operaciones para la construccin de algoritmos; la nica finalidad del pseudocdigo (como de los organigramas) es la comunicacin entre seres humanos. A continuacin se muestra un ejemplo de algoritmo descrito mediante un pseudolenguaje: COMENZAR ESCRIBIR Deme los coeficientes y resolver una ecuacin de 2 grado ESCRIBIR Cunto vale A? LEER a ESCRIBIR Cunto vale B? LEER b ESCRIBIR Cunto vale C? LEER c discr ! b2-4ac ESCRIBIR No hay soluciones reales discr = 0 s ! -b/(2a) ESCRIBIR Slo hay una solucin, s SI NO discr > 0 s1 ! (-b+vdiscr)/(2a) s2 ! (-b-vdiscr)/(2a) ESCRIBIR Las soluciones son, s1, s2 SI NO FIN A continuacin se muestra el mismo ejemplo de algoritmo descrito mediante un pseudocdigo: escribir Deme los coeficientes y resolver una ecuacin de 2 grado escribir Cunto vale A? leer a

escribir Cunto vale B? leer b escribir Cunto vale C? leer c discr ! b2-4ac si discr=0 entonces s ! -b/(2a) escribir Slo hay una solucin:, s si no si discr>0 entonces s1 ! (-b+vdiscr)/(2a) s2 ! (-b-vdiscr)/(2a) escribir Las soluciones son:, s1, s2 si no escribir No hay soluciones reales. fin_si fin_si Lenguajes de programacin Un lenguaje de programacin comparte las mismas caractersticas que el pseudocdigo pero, adems de ser comprensible para un ser humano, resulta comprensible para un computador; esto es, un algoritmo descrito mediante un lenguaje de programacin puede ser ejecutado por una mquina. A continuacin se muestra el algoritmo anterior descrito en el lenguaje de programacin PASCAL: program segundoGrado Var a,b,c : Integer ; Begin writeln *,'Deme los coeficientes y resolver una ecuacin de 2 grado' writeln *, 'Cunto vale A?' readln *, a writeln *, 'Cunto vale B?' readln *, b writeln *, 'Cunto vale C?' readln *, c discr = b*b-4*a*c if (discr==0) then s = -b/(2*a) writeln *, 'Slo hay una solucin: ', s else if (discr>0) then s1 = (-b+sqrt(discr))/(2*a) s2 = (-b-sqrt(discr))/(2*a) writeln *, 'Las soluciones son: ',s1,s2 else writeln *, 'No hay soluciones reales' end if end if end Como se puede ver, existen muchas similitudes entre el pseudocdigo y un lenguaje de programacin como PASCAL, de hecho la mayor parte de lenguajes de programacin modernos resultan bastante inteligibles con unos conocimientos bsicos de ingls; sin embargo, aunque ahora

sea difcil de apreciar, el pseudocdigo an es un lenguaje demasiado ambiguo y poco preciso para un computador. Desarrollo e implementacin de un algoritmo A la hora de resolver un problema mediante la utilizacin de un computador no se codifica directamente un programa en un lenguaje dado; an cuando los lenguajes de programacin son inteligibles para los humanos estn bastante alejados de nuestra forma de pensar y si el problema es complejo resulta muy difcil, por no decir imposible, escribir un programa en un solo paso. Por esa razn, existen toda una serie de fases por las que es necesario pasar desde que se plantea un problema hasta que se obtiene un programa de computador que lo resuelve; la finalidad fundamental de esta asignatura no es convertir a los alumnos en expertos en el tema pero es necesario que conozcan unos aspectos metodolgicos mnimos de cara a desarrollar su trabajo con computadores de una forma eficaz (y ms agradable). En una primera fase, anlisis, se estudia el problema a resolver: qu datos precisan ser introducidos para obtener la solucin, en qu consistir dicha solucin, qu errores puede presentar, etc. En caso de disponerse de ms informacin relativa al problema, por ejemplo cualquier tipo de frmula o expresin matemtica tambin se incluira como informacin de anlisis. Un aspecto importante es que durante el anlisis no se busca una forma de resolver el problema, tan slo se trata de comprender la naturaleza del mismo; una forma prctica de enfocar el anlisis es dividindolo, a su vez, en fases de entrada, proceso, salida y condiciones errneas. En una segunda fase, diseo, se busca una forma de resolver el problema, es decir, un algoritmo; para ello puede emplearse la tcnica de diseo descendente. El diseo descendente se basa en el principio de divide y vencers (Del latn divide et impera, aunque generalmente atribuida a Csar es una mxima romana abrazada por personajes como Maquiavelo, Luis XI de Francia o Montesquieu.); este mtodo consiste en resolver el problema mediante una aproximacin con distintos niveles de abstraccin, nunca se debe atacar desde el principio con un enfoque excesivamente detallado (muy prximo al computador). En primer lugar se plantea el problema empleando trminos del mismo problema (nivel de abstraccin 1). En segundo lugar, se descompone en varios subproblemas expresados tambin en trminos del problema y tratando de hacerlos lo ms independientes entre s que sea posible. Este paso se repite para cada subproblema tantas veces como sea necesario hasta llegar a una descripcin del problema que emplee instrucciones sencillas que puedan ser transformadas de forma sencilla a cdigo en un lenguaje de programacin. En la fase de diseo pueden emplearse grficos en forma de rbol para representar los subproblemas y las relaciones entre ellos y pseudocdigo para la descripcin formal de la forma de resolver cada subproblema. A continuacin se mostrar un ejemplo de anlisis y diseo para un problema dado. Enunciado: Proporcionar un algoritmo que determine si un ao indicado por el usuario es bisiesto. Entrada: El usuario debera introducir un ao, un ao es un nmero entero positivo. Proceso: Un ao es bisiesto si es mltiplo de 4 pero no de 100, la excepcin son los aos mltiplos de 400. Salida: Hay dos posibles salidas: El ao es bisiesto y El ao no es bisiesto.

Anlisis: Condiciones de error: Si el dato introducido no es vlido (nmero negativo o cero) debera indicarse: Dato no vlido. Nivel 1 Determinar si un ao indicado por el usuario es o no un ao bisiesto. 2.1. Solicitar un ao al usuario. 2.2. Determinar si el ao es bisiesto o no. Nivel 2 2.3. Indicar al usuario el resultado obtenido. Nivel 3 2.1.1. Dar un mensaje al usuario solicitando un ao. 2.1.2. Leer el ao. 2.1.3. Si el ao no es vlido indicrselo al usuario. 2.2.1. Si el ao no es mltiplo de 4 no es bisiesto. 2.2.2. Si el ao es mltiplo de 4 pero no de 100 es bisiesto. 2.2.3. Si el ao es mltiplo de 400 es bisiesto. Diseo 2.3.1. Si el ao es bisiesto dar el mensaje El ao es bisiesto. 2.3.2. Si el ao no es bisiesto dar el mensaje El ao no es bisiesto. Si el problema es muy sencillo puede realizarse un organigrama que describa el algoritmo que lo resuelve, en caso contrario es preferible utilizar un pseudocdigo; es necesario decir que el pseudocdigo tambin se desarrollar por niveles, de hecho, por cada caja/problema anterior debera obtenerse un pseudocdigo que lo resuelva. Problema Pseudocdigo del algoritmo que lo resuelve Determinar si un ao indicado por el usuario es o no un ao bisiesto. Solicitar un ao al usuario Determinar si el ao es bisiesto o no Indicar al usuario el resultado obtenido Solicitar un ao al usuario escribir Por favor, deme un ao leer AO si AO = 0 entonces escribir El ao no es vlido si no determinar si el ao es bisiesto o no indicar al usuario el resultado obtenido fin_si Determinar si el ao es bisiesto o no si el ao es mltiplo de 4 entonces si el ao es mltiplo de 400 entonces BISIESTO ! si si no si el ao es mltiplo de 100 entonces BISIESTO ! no si no BISIESTO ! si

fin_si fin_si si no BISIESTO ! no fin_si Indicar al usuario el resultado obtenido si BISIESTO = si entonces escribir El ao es bisiesto si no escribir El ao no es bisiesto fin_si Una vez hecho esto es posible obtener el pseudocdigo completo y detallado que resuelve el problema: escribir Por favor, deme un ao leer AO si AO = 0 entonces escribir El ao no es vlido si no si el ao es mltiplo de 4 entonces si el ao es mltiplo de 400 entonces BISIESTO ! si si no si el ao es mltiplo de 100 entonces BISIESTO ! no si no BISIESTO ! si fin_si fin_si si no BISIESTO ! no fin_si si BISIESTO = si entonces escribir El ao es bisiesto si no escribir El ao no es bisiesto fin_si fin_si Una vez se ha obtenido el pseudocdigo traducirlo a un lenguaje de programacin es extremadamente sencillo, el cdigo PASCAL correspondiente al pseudocdigo anterior es el siguiente: program anno_bisiesto var anno:integer; bisiesto.boolean; begin writeln *,'Por favor, deme un ao' readln *,anno if (anno<=0) then writeln *,'El ao no es vlido' else

if (mod(anno,4)==0) then if ((mod(anno,400))==0) then bisiesto=.true. else if ((mod(anno,100))==0) then bisiesto=.false. else bisiesto=.true. end if end if end if if (bisiesto) then writeln *,'El ao es bisiesto' else writeln *,'El ao no es bisiesto' end if end if end Conceptos fundamentales A lo largo de la asignatura se utilizarn en muchas ocasiones algunos trminos que conviene definir clramente; por el momento, los ms importantes sern los conceptos de: accin, indicador o variable, informacin,estado, datos y resultados, lxico, tipo de datos y operador. Accin: Como ya se dijo anteriormente, una accin es un suceso, llevado a cabo por un procesador. Una accin siempre modifica su entorno. Indicador o variable: El entorno de una accin est compuesto de indicadores que pueden tomar distintos valores (por esa razn tambin se denominan variables puesto que los valores pueden cambiar, es decir, variar); cada indicador o variable tiene asignado un nombre para poder referirse a l. Informacin: El hecho de que un indicador/variable tenga asociado un valor es irrelevante si dicha asociacin no es interpretada; por ejemplo si sabemos que el indicador/variable v tiene asociado el valor 70.5 no nos aporta nada, es la interpretacin de v como velocidad en km/h de dicha pareja la que nos proporciona una informacin. As pues, la informacin es la asociacin entre una variable, un valor y la interpretacin que se hace. Estado: Puesto que el entorno est formado por indicadores/variables que pueden tomar diferentes valores est claro que el entorno no es inmutable sino dinmico; el conjunto de valores de los indicadores/variables del entorno en un instante se denomina estado. De esta forma, si una accin modifica su entorno (los valores de uno o ms indicadores) se puede afirmar que las acciones hacen pasar el entorno de un estado a otro. Datos/resultados: Una accin emplea un tiempo finito en su ejecucin; si la accin se inicia en t0 y termina en t1, el estado del sistema en el instante t0 (los valores de los indicadores) definen los datos de la accin mientras que el estado del sistema en el instante t1 (los valores de los indicadores tras la ejecucin de la accin) definen los resultados de la accin. Lxico: Como sabemos, un procesador comprende y ejecuta instrucciones que componen un algoritmo; el conjunto finito de acciones que el procesador puede comprender y ejecutar constituye el lxico del procesador. Tipo de datos: En matemticas se clasifican los datos en funcin de ciertas caractersticas importantes; as tenemos naturales, enteros, reales, complejos, etc. Esta clasificacin se hace

mediante conjuntos; dichos conjuntos pueden estar formados por elementos individuales, R, o agregaciones de valores, Rn. Esta forma de clasificacin resulta muy til y, por tanto, a partir ahora todos los indicadores (variables) tendrn asignado un tipo. Operador: A lo largo de muchos de los ejemplos anteriores se ha dado por supuesto que el procesador conoca la forma de realizar asignaciones, comparar valores, etc. Dichas acciones se conocen con el nombre de operadores y las acciones que realizan son, por tanto, operaciones; los alumnos conocen la mayor parte de los operadores presentes en el lxico de la notacin algortmica que se va a estudiar; se trata de los operadores aritmticos, de comparacin, etc. Introduccin de la notacin algortmica a emplear A lo largo del curso se emplear una notacin uniforme para el pseudocdigo; aunque dicha notacin se ir explicando de forma paulatina en este apartado se explicarn algunos aspectos bsicos que, adems, servirn para ilustrar algunos de los conceptos anteriores. Variables: Como se dijo con anterioridad el entorno en que trabajar el procesador viene definido por una serie de variables (tambin llamados indicadores) que toman valores cambiantes; tambin se dijo que las variables tendrn nombres para poder referirse a las mismas. Los nombres de las variables (junto con algunos elementos que se vern ms adelante) son identificadores y tradicionalmente los identificadores se han formado con caracteres alfanumricos (esto es, letras y nmeros) incluyendo el carcter de subrayado y excluyendo los blancos y caracteres no anglosajones (como la y las vocales acentuadas). Otra caracterstica de los identificadores es que no pueden empezar por nmero, slo por letra (o subrayado). En algunas notaciones (y lenguajes de programacin), las maysculas se consideran como caracteres diferentes de las minsculas mientras que en otros no se hace as; para simplificar las cosas nuestra notacin ser insensible a maysculas. En resumen, Ejemplos de identificadores vlidos: v, aceleracion, K, v1, b_n, Pot, ... Ejemplos de identificadores no vlidos: 1n (empieza por nmero), ao (incluye un carcter no vlido, la ), aceleracin (incluye un carcter no vlido, la ), p v (incluye un espacio en blanco), Ejemplos de identificadores equivalentes (en nuestra notacin): v y V; anno, Anno, ANNO y AnnO; Pot, pot y poT, ... Tipos de datos: Ya se ha mencionado el hecho de que las variables deben pertenecer a un tipo de datos determinado; en nuestra notacin algortmica tenemos los siguientes tipos: entero, real, logico y caracter. Los tipos se describen en funcin de las operaciones que admiten. El tipo entero se corresponden con un subconjunto finito (un rango) de los enteros6, variando el tamao de dicho rango en funcin del computador; las operaciones soportadas son las operaciones aritmticas bsicas: suma (+), resta (-), producto (*), divisin entera (div) y mdulo/resto (mod). El resultado de operar dos valores de tipo entero resulta otro valor de tipo entero con un valor exacto (siempre y cuando no resulte un valor fuera del rango). El tipo real se corresponde con un subconjunto de nmeros reales; una diferencia fundamental entre un valor real y un valor entero es que el segundo siempre es exacto mientras que el primero es un valor aproximado, susceptible de errores de redondeo. El tipo real admite las mismas operaciones que el tipo entero, exceptuando la divisin entera y el mdulo (la divisin real emplea el operador /); adems de estas, admite las tpicas funciones reales: raz cuadrada, exponenciacin, potenciacin, logaritmo y funciones trigonomtricas. Al operar valores de tipo real se obtienen resultados de tipo

real. Para facilitar las cosas es posible operar valores de tipo real con valores de tipo entero y aplicar operaciones del tipo real al tipo entero; en todos estos casos el resultado es de tipo real. El tipo logico admite tan slo dos valores: verdadero y falso; las operaciones admitidas son las de la lgica booleana: y-lgico (and o .), o-lgico (or o .) y no-logico (not o ). Hay que sealar que hay operadores que, an no operando sobre valores de tipo logico, dan como resultado valores de dicho tipo; nos referimos a los operadores de comparacin. El tipo caracter comprende el conjunto de caracteres imprimibles; dicho conjunto tiene una serie de caractersticas: Contiene las 26 letras del alfabeto latino, los 10 dgitos de la numeracin arbiga y caracteres como smbolos de puntuacin. Los subconjuntos de letras y nmeros estn ordenados; es decir si un carcter es mayor que la A y menor que la Z es una letra mayscula, si es mayor que a y menor que z es una letra minscula y si es mayor que 0 y menor que 9 es un nmero. Existe un carcter blanco o espacio. El tipo caracter tiene una nica operacin propia, la concatenacin de cadenas de caracteres que emplea el operador (+). Todos los tipos admiten, adems, la operaciones de comparacin: los operadores de comparacin disponibles son mayor (>), menor (<), mayor o igual (=), menor o igual (=), igual (=) y distinto (.). Como ya se dijo, el resultado de una comparacin es un valor de tipo logico. Literales: En todo momento es posible definir literales, expresiones de valor constante, de cualquier tipo; as es posible tener literales de tipo entero (por ejemplo, 45, 0 o 17), de tipo real (por ejemplo, 3.141592, 10.5e20 o 5.24e5) y de tipo caracter (por ejemplo, E, etc o Esto es una cadena). En muchas ocasiones es necesario utilizar un valor literal de forma reiterada, por ejemplo 3.141592, en esos casos es preferible referirse a dicho valor mediante un identificador, por ejemplo pi, que utilizar el valor en s; para ello se utilizan las denominadas constantes, identificadores a los que se les asigna un valor que no puede ser modificado en ningn punto del algoritmo. Para definir una constante emplearemos la notacin: constante = literal De esta forma se est asociando a un identificador un valor constante determinado, a partir de la definicin de la constante, sta puede ser utilizada en cualquier punto del algoritmo comportndose de forma En una leccin posterior se describir la forma en que un computador manipula los diferentes tipos de datos, explicndose la razn por la que los enteros y reales slo son representables en un rango determinado. Expresiones: una expresin es una combinacin de variables, constantes y literales de tipos compatibles entre s, estos elementos estn combinados mediante operadores vlidos; la expresin ms simple est formada por un nico elemento (variable, literal o constante) sin ningn operador. Es posible tener expresiones aritmticas (combinando expresiones de tipo entero y/o real), expresiones lgicas (combinando expresiones de tipo logico) y expresiones de tipo caracter.

Asignacin: el operador de asignacin, !, se emplea segn la notacin siguiente: izquierda ! derecha El elemento situado a la izquierda del operador es una variable a la que se asignar el valor de la expresin de la derecha; para poder realizar la asignacin de forma adecuada ambos elementos deben ser del mismo tipo. Entrada/salida: La mayor parte de los algoritmos necesitan interactuar con el usuario, es posible que ste deba indicar una serie de valores (por ejemplo, los coeficientes de una ecuacin de segundo grado) o que el algoritmo deba proporcionar unos resultados al mismo usuario (por ejemplo, las posibles soluciones de dicha ecuacin). Las acciones de entrada salida son dos: leer y escribir. El formato de la primera es muy sencillo: leer variable; el resultado de la accin es la lectura de un valor por teclado que ser asignado a la variable variable. El formato de la segunda es similar: escribir expresin; donde expresin puede ser de cualquier tipo (entero, real, logico o caracter). El resultado de esta accin es la visualizacin (en una pantalla) de la expresin. Para terminar esta introduccin, se mostrar la estructura bsica de un algoritmo en la notacin que se utilizar a lo largo del curso: constantes c1 = literal1 c2 = literal2 ... variables v1 : tipo1 v2 : tipo2 ... inicio accion1 accion2 ... fin A continuacin se muestra un algoritmo muy sencillo que convierte una longitud expresada en centmetros en su equivalente expresada en pulgadas: constantes cm_inch = 0.39 variables longitud_cm . real longitud_inch . real inicio leer longitud_cm longitud_inch ! longitud_cm * cm_inch escribir longitud_inch fin

Resumen 1. Un algoritmo es una secuencia de pasos ejecutada mecnica y sistemticamente por un actor en unentorno dado para resolver un problema determinado en un tiempo finito. 2. Los algoritmos son tan antiguos como la humanidad. 3. El trmino algoritmo deriva del nombre del matemtico Mahommed ibn Musa al-Khowrizm. 4. Los computadores son mquinas que ejecutan algoritmos. 5. Los 3 elementos fundamentales de un algoritmo son: Procesador. Entorno. Accin.

6. Un algoritmo puede describirse mediante: Lenguaje natural. Organigramas. Pseudocdigo. Lenguajes de programacin.

7. Para implementar un programa que resuelva un problema hay que realizar: Un anlisis del problema. Un diseo descendente del algoritmo (descomponiendo el problema en subproblemas).

8. Algunos conceptos fundamentales en algortmica son los siguientes: Accin. Indicador o variable. Informacin. Estado. Datos/resultados. Lxico. Tipo de datos. Operador.

9. Conceptos importantes a tener en cuenta en la notacin algortmica a utilizar son: Variables. Tipos de datos. Literales y constantes. Expresiones. Operacin de asignacin. Operaciones de entrada/salida.

PASCAL Palabras reservadas Para poder programar en cualquier lenguaje es necesario conocer los cdigos mediante los cuales podamos expresar las tareas que queremos realizar. El Turbo Pascal, como lenguaje de programacin pose su propio cdigo con palabras de uso exclusivo para ciertas funciones, a estas palabras les llamaremos palabras reservadas de Turbo Pascal. Las palabras reservadas de Turbo Pascal (versiones 6.0 o mayores) son: Pascal Estandar y Turbo Pascal 6.0 AND CONST ELSE FORWARD IN NOT SET UNTIL ARRAY DIV END LABEL OF THEN VAR BEGIN DO FILE MOD OR TO WHILE CASE DOWNTO FOR IF NIL PACKED TYPE WITH

FUNCTION GOTO

PROCEDURE PROGRAM RECORD REPEAT

Turbo Pascal ABSOLUTE PRIVATE VIRTUAL INLINE STRING ASM SHR INTERRUPT USES DESTRUCTOR OBJECT UNIT SHL XOR

IMPLEMENTATION INTERFACE

CONSTRUCTOR EXTERNAL

Estas palabras no pueden ser usadas como identificadores (siguiente tpico) ya que cada una de ellas tiene una funcin definida en Turbo Pascal. Identificadores Los identificadores son palabras que representan constantes, variables, tipos de datos, procedimientos, funciones y algunos otros datos. Existen dos tipos de identificadores: los predefinidos de Turbo Pascal y los definidos por el programador. Algunos de los identificadores predefinidos son: integer, real, byte, sin, ... Los identificadores definidos por el programador son los elementos del lenguaje tales como variables, procedimientos, funciones, etc.

Un identificador es una secuencia de 1 a 127 caracteres, que inicia con una letra, no tienen espacios ni smbolos: &, !, *, etc. y no es alguna palabra reservada. Para el Turbo Pascal no existen diferencias entre maysculas y minsculas, as que a un identificador denominado "valor" se le puede referir como "VALOR" o "VaLoR". Todo identificador en Pascal debe ser definido previamente a su utilizacin. Tipos de datos El manejo de la informacin en Turbo Pascal se realiza mediante diferentes clases de datos. En este apartado se tratarn los principales tipos y conforme se vayan necesitando se explicaran los dems. Integer Char Real String Nmeros enteros sin parte decimal. Caracteres del cdigo ASCII Nmeros que pueden incluir una parte decimal En una secuencia de caracteres que se trata como un solo dato.

Boolean Pueden contener los valores de falso o verdadero

Variables y constantes Los tipos de datos que manejaremos en nuestro programa pueden ser de dos clases: variables o constantes. Como su nombre lo indica las variables pueden cambiar a lo largo de la ejecucin de un programa, en cambio las constantes sern valores fijos durante todo el proceso. Un ejemplo de una variable es cuando vamos a sumar dos nmeros que sern introducidos por el usuario del programa, ste puede introducir dos valores cualesquiera y no sera nada til restringirlo a dos valores predefinidos, as que dejamos que use los valores que el necesite sumar. Ahora, si nuestro programa de operaciones matemticas va a utilizar el valor de PI para algunos clculos podemos definir un identificador PI con el valor de 3.1415926 constante, de tal forma que PI no pueda cambiar de valor, ahora en lugar de escribir todo el nmero cada vez que se necesite en nuestro programa, solo tenemos que escribir PI. Las variables y constantes pueden ser de todos los tipos vistos anteriormente: numricos tanto enteros como reales, caracteres, cadenas de caracteres, etc. Comentarios Es posible introducir comentarios en nuestro programa que sirvan unicamente para mejorar la comprensin del cdigo fuente. Un comentario no es tomado en cuenta al momento de la compilacin del programa y es de enorme importancia al momento de crearlo, modificarlo o mantenerlo. Existen dos formas de colocar comentarios en un programa de Turbo Pascal, entre llaves: {Comentario} o entre parentesis y asteriscos: (*Comentario*). Estructura de los programas

El lenguaje utilizado en Turbo Pascal es estructurado, lo que significa que cada programa requiere una forma especfica de escritura para que sea entendido por el compilador. Todo programa cuenta con algunas partes o mdulos los cuales son: Cabecera Declaraciones Programa La cabecera del programa unicamente lleva el nombre del programa. En la seccin de declaraciones se le indica al compilador todos los identificadores y unidades que se utilizarn durante la ejecucin del programa. En la seccin del programa se escribe el cdigo de instrucciones que se llevarn a cabo. Sentencia PROGRAM La sentencia PROGRAM es la declaracin del nombre del programa. Consta de tres partes: la palabra reservada PROGRAM, a continuacin un identificador utilizado como el nombre del programa y al final un punto y coma ";". Por ejemplo: PROGRAM suma_de_dos_numeros ; Esta declaracin es siempre la primer linea en cualquier programa de Turbo Pascal. Declaracin de unidades Las unidades son mdulos independientes del programa que, aunque no son ejecutables por si mismos, pueden ser utilizados por el programa principal sin necesidad de reescribir el cdigo que contienen. Para la utilizacin de estos "subprogramas" es necesaria su declaracin. La palabra reservada USES cumple el propsito de declarar las unidades en el formato siguiente: USES crt, dos; Esta linea declara y habilita para su uso a la unidad crt y a la unidad dos Cada unidad que se declara debera estar separada de la siguiente por una coma. Al final de todas las unidades declaradas se deber colocar un punto y coma ";". Declaracin de constantes y variables Para declarar las constantes se utiliza la palabra reservada CONST seguida de un identificador al que se le dar un valor determinado, un signo de igual "=", el valor que recibir el identificador y al final un punto y coma ";". Ejemplo: CONST pi = 3.1415926; De esta forma el identificador pi recibir el valor de 3.1415926 y no ser posible cambiarlo en el transcurso del programa. Es posible declarar varias constantes sucesivamente, puede ser una por rengln o varias en un solo rengln. Cuando se hace sto, la palabra CONST solo se pone una sola vez como cabecera y a continuacin todas las constantes por definir. Ejemplo:

CONST PI = 3.1415926; Nombre = 'Juan Gutirrez'; Unidad = 1; Otra forma de escribir lo mismo es as:

CONST PI = 3.1415926; Nombre = 'Juan Gutirrez'; Unidad = 1;

Pero por cuestiones de legibilidad es preferible la primera opcin. La declaracin de variables se lleva a cabo de la misma forma, solo que en lugar de la palabra CONS utilizamos la palabra VAR, y en lugar de "= valor;", utilizamos : tipo , sustituyendo "tipo" por alguna clase vlida de datos en Turbo Pascal. Ejemplo: VAR Num_entero : Integer; Nombre : String; Programa principal Despues de haber realizado todas las declaraciones se puede iniciar con el programa principal. (Es posible, antes del programa, declarar las funciones y procedimientos, pero eso se analizar posteriormente). El programa principal inicia con la palabara reservada BEGIN y termina con la palabra END., esta ltima con un punto al final. Cada linea de cdigo, enunciado, sentencia o instruccin completa que se escriba deber terminar con un punto y coma ";". Solo se omitir el punto y coma cuando se utiliza la palabra reservada ELSE. Aunque puede tambin omitirse si la siguiente expresin es END o UNTIL. Ya conociendo la estructura es posible escribir un primer programa: PROGRAM Primera_Prueba; VAR Entero : Integer; CONST Mensaje = 'Introduce un valor entero: '; Respuesta = 'El valor es: '; BEGIN Write(Mensaje); {Escribe en pantalla el mensaje definido como constante} ReadLn(Entero); {Lee un valor de teclado y lo almacena en la variable Entero} WriteLn(Respuesta, Entero); {Escribe en pantalla el contenido de Respuesta y el valor que se ingres de teclado} END.

Como podr apreciarse, no es importante el orden en el que se declaran las variables y constantes (aplicable solo al Turbo Pascal), es decir, pueden declararse primero las variables y luego las constantes y viceversa: PROGRAM Primera_Prueba; CONST Mensaje = 'Introduce un valor entero: '; Respuesta = 'El valor es: '; VAR Entero : Integer; BEGIN Write(Mensaje); {Escribe en pantalla el mensaje definido como constante} ReadLn(Entero); {Lee un valor de teclado y lo almacena en la variable Entero} WriteLn(Respuesta, Entero); {Escribe en pantalla el contenido de Respuesta y el valor que se ingres de teclado} END. Compilacin y ejecucin en memoria La compilacin de un programa es el paso mediante el cual traducimos dicho programa al lenguaje maquina entendible por la computadora. Para lograr la compilacin en el entorno integrado de desarrollo de Turbo Pascal se utiliza la opcin Compile del men del mismo nombre. Para accesar al men se utiliza la secuencia de teclas: [ALT] + [C], y luego se escoge la opcin Compile. Otra forma de realizar la compilacin es con la secuencia de teclas: [ALT] + [F9]. Es posible compilarlo y ejecutarlo automaticamente utilizando la secuencia: [CONTROL] + [F9] Compilacin al disco Para poder ejecutar un programa sin necesidad de llamar al entorno integrado de desarrollo de Turbo Pascal es necesario compilar el programa al disco. Para hacer esto es necesario activar la opcin Destination a Disk, esto se hace entrando al men Compile, se selecciona la opcin Destination y se presiona [Enter], de esta forma se cambia el destino de compilacin de memoria a disco o viceversa (Dependiendo de la opcin seleccionada actualmente). Una vez compilado un programa en el disco es posible ejecutarlo directamente desde el sistema operativo.

Asignacin o igualacin La operacin de asignacin es una de las ms utilizadas en Turbo Pascal ya que nos permite darle un valor determinado a las variables que declaramos en el programa o lo que es lo mismo, igualarla a algn valor determinado. El smbolo utilizado para la operacin es los dos puntos seguidos por un signo de igual := , a la izquierda de dicho smbolo se coloca el identificador al que se le asignar un nuevo valor y a la derecha se colocar un identificador o algn valor directo que se almacenar en el primer identificador. Ejemplo: Nombre := 'Juan Prez'; {Nombre guardar la cadena "Juan Prez"} Resta := Numero1 - Numero2; {Resta gurdar el resultado de la resta de Numero2 a Numero1} Area := (Base*Altura)/2; {Obtiene el area de un triangulo y la guarda en el identificador Area} Es indispensable para todo programa que cuente con la capacidad de manejar entradas y salidas de informacin, ya que sin estas capacidades sera un programa intil. Salida de datos a la pantalla Las instrucciones que permiten mostrar datos en la pantalla de la computadora son: Write y WriteLn. Aunque ya se hizo uso de ellas en los pequeos programas anteriores de ejemplo, aqui se describirn a fondo. La sintaxis de los procedimientos es la siguiente: Write (indentificadores); WriteLn (indentificadores); Donde los identificadores son aquellos que contienen la informacin que se desea mandar a la pantalla. Es posible utilizar varios de ellos por cada instruccin Write o WriteLn, unicamente se separan unos de otros por comas ",". Ejemplo: Write (Nombre, ApellidoP, ApellidoM); Esta linea de cdigo desplegar consecutivamente los contenidos de los identificadores Nombre, ApellidoP y ApellidoM. En caso de que la variable Nombre almacenara el valor 'Jaime ', la variable ApellidoP 'Otrola ' y la variable ApellidoM 'Lpez', el resultado en pantalla sera: Jaime Otrola Lpez Podemos obtener el mismo resultado si utilizamos la siguiente estructura: Write (Nombre); Write (ApellidoP); Write (ApellidoM); Si en lugar de utilizar la instruccin Write hacemos uso de WriteLn con la misma sintaxis del ejemplo anterior:

WriteLn (Nombre); WriteLn (ApellidoP); WriteLn (ApellidoM); lo que obtendriamos sera: Jaime Otrola Lpez De este ejemplo es posible concluir que la diferencia entre las instrucciones Write y WriteLn es que esta ltima imprime el contenido de los identificadores y cambia el cursor al siguiente rengln de la pantalla, y la primera solo escribe el contenido y deja el cursor al final del dato escrito. Entrada de datos desde teclado Las instrucciones estandar de Turbo Pascal para obtener datos desde el teclado son Read y ReadLn. La sintaxis de estas instrucciones es muy parecida a la de Write y WriteLn: Read (Identificador); El identificador puede ser cualquier variable definida previamente, NO puede ser una constante. Puede ser tambin un conjunto de variables, separadas entre comas, en este caso se guardara el primer valor dado antes del [Enter] en el primer identificador proporcionado, luego el segundo y as sucesivamente hasta el ltimo identificador. La diferencia en el uso de la instruccin Read con respecto a ReadLn es que en la primera, si se le dan mas datos de los que se introducirn se guardan en un buffer y se usarn en la siguiente instruccin Read o ReadLn del programa, en cambio ReadLn ignora todo dato posterior a los que esten definidos en la instruccin. En caso de que se le indique a Read o ReadLn que lea un tipo especfico de valor, y se le proporcione otro diferente se generar un error y se detendr la ejecucin del programa. Tipos de datos Un programa debe ser capaz de manejar diferentes tipo de datos, como pueden ser nmeros enteros, reales, caracteres, cadenas de caracteres, etc. Para lograr el manejo de toda esta informacin Turbo Pascal prove diferentes tipos de datos para los identificadores que se utilizarn. Algunos de los ms importantes se citan en seguida: Tipos enteros En esta categora Turbo Pascal cuenta con 5 tipos diferentes, cada uno abarca un rango especfico de valores y utilizan una diferente cantidad de memoria dependiendo de ese rango. Naturalmente el trabajar con rangos menores nos ofrece una mayor velocidad y menor espacio en memoria, pero si se utilizan enteros largos se cuenta con mayor presicin. Los tipos de enteros en Turbo Pascal son: Tipo Integer Word Rango de valores que acepta -32,768 a 32,767 0 a 65535

ShortInt -128 a 127 Byte 0 a 255 LongInt -2,147,483,648 a 2,147,483,648 Al utilizar los tipos enteros es posible representar en el programa un nmero en formato hexadecimal, para hacer esto solo se le antepone el smbolo "$" al valor hexadecimal, al momento de visualizar dicho valor, o utilizarlo en alguna operacin ser como decimal. Por ejemplo: Cantidad := $10; El valor que se guarda en "Cantidad" es 16. Tipos reales Los nmeros reales son aquellos que cuentan con una parte decimal. En Turbo Pascal contamos con varios tipos de datos reales, pero no se puede utilizar, mas que el tipo real, en mquinas que no cuenten con un coprocesador matemtico. Los tipos de datos reales son: Tipo Real Single Double Comp Rango de valores que acepta 2.9E-39 a 1.7E38 1.5E-45 a 3.4E38 5.0E-324 a 1.7E308 -9.2E18 a 9.2E18

Extended 1.9E-4851 a 1.1E4932

Los nmeros reales deben llevar por fuerza al menos un dgito de cada lado del punto decimal as sea ste un cero. Como ejemplo, el nmero 5 debe representarse como: 5.0, el .5 como 0.5 , etc. En este tipo de datos se utiliza la notacin cientfica, que es igual a la de las calculadoras, el dgito que se encuentra a continuacin de la E representa la potencia a la que se elevar el nmero 10 para multiplicarlo por la cantidad a la izquierda de dicha E: 3.0E5 = 3.0 * 10^5 = 3.0 * 100000 = 300000 1.5E-4 = 1.5 * 10^-4 = 1.5 * 0.0001 = 0.00015 Tipos caracter Los caracteres son cada uno de los smbolos que forman el cdigo ASCII, el tipo estndar de Pascal para estos datos es Char. Los caracteres se especifican entre apostrofes: 'a' </TD 'B' </TD '2' '#' El tipo Char es un tipo ordinal de Pascal, sto quiere decir que sus elementos vlidos siguen una secuencia ordenada de valores individuales. La secuencia de caracteres para este tipo corresponden al nmero del cdigo ASCII, del 0 al 255.

Es posible accesar a cada uno de los caracteres utilizando un signo # antes de su valor correspondiente, por ejemplo, la letra A puede ser representada como #65, el retorno de carro, o enter, se representa como #13, y as cualquier caracter. Tipo cadena Las cadenas son secuencias de caracteres o arreglos que tienen una longitud maxima de 255 caracteres. Se definen entre apostrofes. El tipo de Pascal para las cadenas es String. PROGRAM Cadena; VAR Nombre : String; BEGIN Nombre := 'Ernesto Chvez'; WriteLn (Nombre); END. Este programa guarda la cadena 'Ernesto Chvez' en la variable definida como tipo string, y la visualiza en la pantalla por medio de la instruccin WriteLn. El tamao por defecto para un tipo string es de 255 caracteres, pero es posible definir uno mas pequeo utilizando el siguiente formato: Variable : String[Tamao]; Donde Variable es la variable a definir y Tamao es el nmero maximo de caracteres que podr contener esa variable (naturalmente mayor a 0 y menor a 256). Es posible acceder a un solo caracter de una cadena utilizando inmediatamente despues del nombre de la misma la posicin del caracter encerrada entre corchetes. Por ejemplo: PROGRAM Cadena01; VAR Nombre : String[30]; {Permite un mximo de 30 caracteres en la variable} BEGIN Nombre := 'Jaime Otrola Lpez'; WriteLn (Nombre[5]); {Visualiza el 5to caracter de la cadena} END. Tipos lgicos Este tipo de datos tienen la peculiaridad de que solo pueden tomar dos tipos de datos: verdadero o falso, el verdadero puede ser representado por su nombre en ingls: True y el falso por False; tambin se representan por 1 y por 0 respectivamente. El tipo est definido como Boolean. Los datos lgicos tienen una enorme aplicacin en la evaluacin de ciertos procesos, as como en el control de flujo de los programas.

Operaciones aritmticas y expresiones Operaciones Aritmticas Operaciones bsicas Operadores DIV y MOD (Enteros) Prioridad de operadores Constantes variables Uso de las constantes variables Constantes expresiones Uso de las expresiones como constantes Operaciones bsicas Las operaciones bsicas en Turbo Pascal estn formadas por dos partes: el operador y los operandos. Un operador es el smbolo que le indica al programa que operacin realizar y los operandos son los datos sobre los cuales se efectuar la operacin. Los operadores de Turbo Pascal son: Operador Operacin + * / Suma Resta Multiplicacin Divisin

El tipo de datos que pascal regresa como resultado de una operacin depender del tipo de datos usados como operandos. Por ejemplo, la suma de dos enteros da como resultado otro entero, y la suma de dos nmeros reales da como resultado otro nmero real. Operadores DIV y MOD La divisin de dos nmeros, sin importar su tipo, dar como resultado un nmero real, as que para dividir dos enteros, y obtener el resultado como entero, Turbo Pascal ofrece el operador DIV, el cual da el resultado entero de una divisin entre enteros, y el operador MOD que regresa el residuo de una divisin de enteros. Su sintaxis es: entero := dividendo DIV divisor entero := dividendo MOD divisor El siguiente programa es un ejemplo del uso de los operadores aritmticos: PROGRAM Operaciones_Bsicas; VAR Suma, Resta, Multiplicacion, Division : Real; Cociente_Entero, Residuo_Entero : Integer;

BEGIN Suma := 12 + 8; Resta := 12 - 8; Multiplicacion := 12 * 8; Division := 12/8; Cociente_Entero := 12 DIV 8; Residuo_Entero := 12 MOD 8; WriteLn ('La suma de 12 + 8 es igual a: ',Suma); WriteLn ('La resta de 12 - 8 es igual a: ',Resta); WriteLn ('La multiplicacin de 12 * 8 es igual a: ',Multiplicacion); WriteLn ('La divisin de 12 / 8 es igual a: ',Division); WriteLn ('La divisin entera de 12 / 8 es igual a: ',Cociente_Entero); WriteLn ('El residuo de la divisin entera de 12 / 8 es: ',Residuo_Entero); END. Prioridad de operadores Cuando se utilizan en alguna expresin mas de un operador, stos se evaluan conforme a una prioridad establecida por Turbo Pascal. Es necesario conocer el orden de evaluacin para evitar errores en nuestros programas. El orden en que se ejecutan las operaciones es el siguiente: *, /, DIV, MOD primeros en evaluarse, todos tienen igual prioridad. +, ltimos en evaluarse, ambos tienen igual prioridad.

En caso de existir parentesis en la expresin se evaluar primero el contenido de los parentesis antes que otros operadores. Si existen dos operadores de igual prioridad se evaluar de izquierda a derecha. Para observar la importancia de la evaluacin correcta de los operadores se expone el siguiente ejemplo: PROGRAM Operadores; VAR Resultado_Uno, Resultado_Dos : Real; BEGIN Resultado_Uno := 3 + 5 * 7; Resultado_Dos := (3 + 5) * 7; WriteLn ('El resultado de la operacin 3 + 5 * 7 es: ',Resultado_Uno); WriteLn ('El resultado de la operacin (3 + 5) * 7 es: ',Resultado_Dos); END. Como se podr observar en la primera operacin se ejecutar primero la operacin 5*7 y al resultado se le sumarn 3,en cambio,en la segunda operacin se realizar primero la suma 3+5 para multiplicarle al resultado 7. Uso de las constantes variables Cuando se declaran las variables en Turbo Pascal no se inicializan con algn valor en especial, sto quiere decir que una variable que no ha sido igualada a cierto valor llevar un

contenido imprevisible, cosa no deseable en la mayora de los programas, para evitar resultados indeseables es posible asignarle a cada variable un valor "por defecto", que se guarde al iniciar el programa. Estas variables inicializadas son llamadas constantes variables, ya que se declaran en la seccin de constantes, pero es posible cambiar su valor. La sintaxis para su declaracin es la siguiente: Identificador : tipo_de_datos = valor; Ejemplo: PROGRAM Constantes_Variables; CONST Valor_Inicializado : Integer = 23; Texto_Inicializado : String = 'Buenos Dias!'; VAR Texto : String; Entero : Integer; BEGIN WriteLn ('Cadena inicializada: ',Texto_Inicializado); WriteLn ('Cadena sin inicializar: ',Texto); WriteLn ('Entero inicializado: ',Valor_Inicializado); WriteLn ('Entero sin inicializar: ',Entero); END. Uso de las expresiones como constantes Es posible declarar constantes con base en otras constantes ya declaradas en el programa utilizando alguna expresin para este fin, por ejemplo: CONST Columnas = 80; Filas = 24; Total_de_espacios = Columnas * Filas; Solo es posible utilizar constantes en las expresiones de este tipo, si se usa alguna variable ocurrir un error al momento de compilar el programa. Sentencias compuestas Las sentencias compuestas son grupos de sentencias, separadas cada una por un punto y coma ";" que son tratadas como una sola sentencia. Para identificar una sentencia compuesta de un grupo sucesivo de sentencias se encierran entre las palabras reservadas BEGIN y END. Uno de los ejemplos ms claros de una sentencia compuesta es el cuerpo de un programa principal en Turbo Pascal, el lenguaje toma todo lo que existe entre estas dos sentencias como un solo elemento a ejecutarse an cuando contenga varias instrucciones o sentencias:

PROGRAM Prueba; BEGIN WriteLn('Primera linea de una sentencia compuesta'); WriteLn('Segunda linea de una sentencia compuesta'); WriteLn('Tercera linea de una sentencia compuesta'); END. El punto y coma que se encuentra antes de la palabra reservada END puede ser suprimido sin afectar a la compilacin. En ocasiones es necesario repetir un determinado nmero de veces la ejecucin de una sentencia, ya sea sencilla o compuesta, para realizar esta tarea Turbo Pascal cuenta con instrucciones especficas para el tipo de repeticin que se requiera. Ciclos FOR El ciclo FOR repite una sentencia un determinado nmero de veces que se indica al momento de llamar al ciclo. Lo que hace FOR es que incrementa una variable en uno desde un valor inicial hasta un valor final ejecutando en cada incremento la sentencia que se quiere repetir. Su sintaxis es: FOR identificador := inicio TO fin DO instruccin; Donde el identificador es la variable que se incrementar, inicio es el primer valor que tendr dicha variable y fin es el valor hasta el cual se incrementar la misma; instruccin es la sentencia (sencilla o compuesta) que se ejecutar en cada incremento de la variable. El siguiente ejemplo escribe los nmeros del 1 al 50 en pantalla. La variable utilizada es "Numero". PROGRAM Ciclo_FOR; VAR Numero : Integer; BEGIN FOR Numero := 1 to 50 DO WriteLn(Numero); END. Una de las limitaciones de los ciclos FOR es que una vez iniciado el ciclo se ejecutar el nmero de veces predefinido sin posibilidad de agregar o eliminar ciclos. Es posible hacer que un ciclo cuente hacia atrs, es decir que la variable en lugar de incrementarse se decremente. Para sto cambiamos la palabra TO por DOWNTO, y colocamos el valor mayor a la izquierda y el menor a la derecha. Ejemplo: PROGRAM Ciclo_FOR_2; VAR Numero : Integer; BEGIN FOR Numero := 50 DOWNTO 1 DO WriteLn(Numero); END.

Ciclos WHILE Los ciclos WHILE ofrecen la ventaja de que la ejecucin se realiza mientras se cumpla una condicin, por lo tanto es posible controlar el nmero de repeticiones una vez iniciado el ciclo. Su sintaxis es: WHILE condicin DO instruccin Donde condicin es la condicin que se evaluar, mientras sta sea verdadera se ejecutar la instruccin, que es una sentencia simple o compuesta. Un programa que escriba los nmeros del 1 al 50, utilizando el ciclo WHILE se vera como sigue: PROGRAM Ciclo_WHILE; VAR Numero : Integer; BEGIN Numero := 1; WHILE Numero <= 50 DO BEGIN WriteLn (Numero); Numero := Numero +1; END; END. Al final del programa la variable Numero guardar el valor 51, que fu el valor que no cumpli con la condicin establecida en el ciclo WHILE. Ciclos REPEAT-UNTIL Este tipo de ciclos es muy parecido a los ciclos WHILE, la diferencia entre ambos es que en WHILE la condicin se evala al principio del ciclo, en cambio en REPEAT-UNTIL se evala al final, lo que significa que en un ciclo REPEAT-UNTIL la sentencia se ejecutar por lo menos una vez, cosa que puede no ocurrir en el ciclo WHILE. Ejemplo: PROGRAM Ciclo_RepeatUntil; VAR Numero : Integer; BEGIN Numero := 1; REPEAT WriteLn (Numero); Numero := Numero + 1; UNTIL Numero = 50; END. Para crear un buen programa es necesario dotarlo con capacidad de desicin con base en las variables o eventos definidos por el programador, para que el programa sea aplicable en un entorno ms generalizado y no solo para un problema especfico. Para lograr este control se cuenta con las estructuras de control que, en Turbo Pascal, son las siguientes:

Sentencia IF...THEN...ELSE Esta expresin es utilizada para ejecutar una sentencia en el caso que una condicin establecida sea verdadera, de lo contrario se podra ejecutar una sentencia distinta. Su sintaxis es: IF condicin THEN instruccin ELSE otro Donde condicin es la expresin que se evaluar, en caso de ser verdadera se ejecutar la sentencia dada como instruccin, en caso de que la condicin sea falsa se ejecutara la sentencia dada como otro. Ejemplo: PROGRAM IF_THEN_ELSE; VAR Contador : Integer; BEGIN FOR contador := 1 to 50 DO BEGIN IF contador > 10 THEN WriteLn(Contador) ELSE WriteLn('*'); END; END. En este pequeo programa la variable Contador se incrementar desde 1 hasta 50, la sentencia condicional IF verificar si es verdad que Contador es mayor a 10, de ser as se escribir en pantalla el valor de la variable, de lo contrario se escribira en la pantalla un caracter "*". Como el contador inicia desde 1, tenemos que se imprimiran 10 asteriscos antres del primer nmero, que ser el 11, valor que si cumple la condicin "Contador > 10" (la hace verdadera). La seccin ELSE con su correspondiente sentencia son opcionales y pueden omitirse en caso de no necesitarse. Sentencias IF anidadas Es posible utilizar en una expresin del tipo IF..THEN..ELSE una sentencia compuesta como la sentencia a ejecutarse en caso de que la condicin sea verdadera, as como en la sentencia posterior a un ELSE, de esta forma podemos utilizar otra sentencia IF..THEN..ELSE dentro de la anterior, para de esta forma evaluar varias condiciones una dentro de otra. Ejemplo:

IF Numero > 5 THEN BEGIN IF Numero <10 THEN Opcion :="Numero;<BR"> IF Numero <30 THEN Opcion2 :="Numero;<BR"> END; Selecciones CASE Esta forma de control se utiliza cuando se va a evaluar una expresin que puede contener varios datos diferentes y en cada dato deber realizar una accin especial. Por ejemplo, si se crea un men con diferentes opciones se realizar un determinado proceso para cada accin, aunque la seleccin por parte del usuario se haga desde el mismo lugar.

El siguiente programa ilustra el uso de la forma CASE, el programa preguntar un nmero al usuario y lo clasificar de acuerdo a su valor. PROGRAM Case; VAR Numero : Integer; BEGIN WriteLn('Introduzca un nmero entero del 1 al 5: '); ReadLn(Numero); CASE Numero OF 1 : WriteLn('El nmero fu 1'); 2 : WriteLn('El nmero fu 2'); 3 : WriteLn('El nmero fu 3'); 4 : WriteLn('El nmero fu 4'); 5 : WriteLn('El nmero fu 5'); ELSE WriteLn('El nmero no estaba en el rango indicado'); END.

GOTO La sentencia GOTO es una sentencia utilizada para alterar el flujo del programa, es decir, para ir a ejecutar una sentencia en un lugar diferente del programa y no la linea siguiente. El uso de GOTO no es aconsejable ya que destruye el modelo de la programacin estructurada que es la que se utiliza en Turbo Pascal, adems se cuenta con las estructuras de datos anteriores que hacen casi innecesario su uso. Para utilizar este tipo de salto es necesario declarar etiquetas, que no son otra cosa que el identificador que marcar el lugar a donde se dirigir el flujo del programa al momento de usar el GOTO. La declaracin de etiquetas se hace antes que la de constantes y variables, la palabra reservada para su declaracin es LABEL. El nombre de la etiqueta es un nombre de un identificador como cualquier otro, pero al utilizarse debe terminar con dos puntos ":". La sintaxis del comando es: GOTO etiqueta; Ejemplo: PROGRAM Uso_del_GOTO; LABEL Etiqueta; BEGIN WriteLn('Esta linea si se escribir'); GOTO Etiqueta; WriteLn('Esta linea no se escribir'); Etiqueta: WriteLn('Se efectu el brinco'); END. HALT

La instruccin HALT provoca la terminacin inmediata de un programa, sin importar las siguientes instrucciones. Normalmente se utiliza en casos de error, se despliega un mensaje y se termina el programa. Ejemplo: PROGRAM Uso_de_HALT; BEGIN WriteLn('Primera linea del programa'); WriteLn('Terminar la ejecucin del programa'); HALT WriteLn(''); END. Definicin de procedimiento Un procedimiento es un grupo de sentencias que realizan una tarea concreta. En lugar de reescribir el cdigo completo de esa tarea cada vez que se necesite, unicamente se hace una referencia al procedimiento. Por ejemplo, es muy comn que se quiera visualizar un ttulo determinado varias veces en un programa, para evitar teclear ese ttulo en nuestro programa fuente todas las veces que sea necesario creamos un procedimiento llamado "Titulo" que se encargar de escribirlo. Una vez creado un procedimiento actuar como una instruccin ms de Turbo Pascal, y para ejecutarlo unicamente teclearemos el nombre de dicho procedimiento. Para poder ejecutar un procedimiento es necesario declararlo en el programa que se este utilizando. Creacin de los procedimientos El primer paso para crear un procedimiento es saber que queremos que haga. Una vez definiendo este punto declaramos el procedimiento despues de haber declarado variables y constantes, antes del cuerpo del programa principal. La palabra reservada para su declaracin es Procedure seguida del nombre del procedimiento. Vamos a crear un procedimiento encargado de escribir en pantalla el enunciado "Programa de Turbo Pascal": PROCEDURE Titulo; BEGIN WriteLn ('Programa de Turbo Pascal'); END; Uso de los procedimientos Una vez declarado el procedimiento es posible utilizarlo como una instruccin de Turbo Pascal. Al uso de un procedimiento se le conoce como llamada al procedimiento. El siguiente programa ilustra el uso o la llamada al procedimiento creado anteriormente: PROGRAM Procedimientos; PROCEDURE Titulo; BEGIN WriteLn ('Programa de Turbo Pascal');

END; BEGIN WriteLn ('Programa ejemplo del uso de procedimientos'); Titulo; {Llama al procedimiento} WriteLn; Titulo; {Vuelve a llamar al procedimiento} END; Variables locales y globales En Turbo Pascal cada identificador tiene un campo de accin, solo dentro de ste campo es posible utilizarlo. Los ejemplos ms claros son las variables, que pueden ser globales o locales. La diferencia estriba en que una variable global puede ser utilizada por cualquier parte del programa, incluyendo a todos los procedimientos, en cambio una variable local puede ser utilizada unicamente por el procedimiento en el que esta declarada, el programa principal y los otros procedimientos la toman como inexistente. Ejemplo: PROGRAM Variables; VAR Hola : String; PROCEDURE prueba; VAR Adios : String; BEGIN {En esta seccin si es posible usar la variable Hola} Adios := 'Adios, que les vaya bien'; WriteLn (Adios); END; BEGIN {En esta seccin no se reconoce a la variable Adios} Hola := 'Hola, bienvenidos al programa'; WriteLn (Hola); WriteLn (Adios); {Al compilar el programa se generar un error ya que la variable Adios es inexistente en esta seccin, para eliminar el problema quites esta linea} prueba; END. Es posible darle el mismo nombre a una variable local y a una global en el mismo programa, pero entonces el procedimiento no podr utilizar la variable global ya que le da preferencia a las locales sobre las globales. Por ejemplo: PROGRAM Variables_2; VAR Saludo : String; PROCEDURE Mensaje; VAR Saludo : String; BEGIN

Saludo := 'Este mensaje solo es vlido para el procedimiento "Mensaje"'; WriteLn('Saludo'); END; BEGIN Saludo := 'Primer saludo (Global)'; WriteLn (Saludo); Mensaje; WriteLn (Saludo); {Se escribir el mensaje "Primer saludo"} END. Parmetros Para poder pasar informacin entre el programa principal y procedimientos, o entre los mismos procedimientos usamos los parmetros, que son los canales de comunicacin de datos. Los parmetros son opcionales y si no se necesitan no se deben usar. Para utilizarlos es necesario declararlos son la siguiente sintaxis: PROCEDURE nombre (lista de parmetros); La lista de parmetros esta compuesta de los nombres de los mismos y del tipo de datos que representan, los del mismo tipo se separan con comas "," y cada tipo diferente se separa con punto y coma ";". Ejemplo: Procedure Ejemplo(a, b : Integer; c, d : String); Para llamar a un procedimiento que utiliza parmetros se pueden utilizar como tales otras variables o constantes, siempre y cuando sean del mismo tipo que los declarados. Ejemplo: Ejemplo(1, 2, 'Hola', 'Adios'); Ejemplo de un programa con procedimiento que utiliza un parmetro. PROGRAM Parametros; VAR Saludo : String; PROCEDURE Imprime_5 (a : String); VAR Contador : Integer; BEGIN FOR contador := 1 to 5 DO {Imprime 5 veces la cadena almacenada } WriteLn(a); {en la variable "a", que es la informacin} END; {que llega como parmetro } BEGIN Saludo := 'Bienvenidos al programa'; Imprime_5 (Saludo); {llama al procedimiento Imprime_5, usando como} {parmetro la variable Saludo }

Imprime_5 ('Fin'); {Utiliza la cadena "fin" como parmetro } END. Es vlido crear un procedimiento que llame a otro procedimiento siempre y cuando el procedimiento llamado haya sido declarado antes del que lo usar. Definicin de las funciones Las funciones son, al igual que los procedimientos, un conjunto de sentencias que se ejecutan constantemente, la diferencia entre stas y los procedimientos es que las funciones regresan un valor. La declaracin de las funciones se realiza de la siguiente forma: FUNCTION nombre(parmetros) : tipo_de_datos; A continuacin se escribe el contenido de la funcin como una sentencia normal (sencilla o compuesta), normalmente terminando con la igualacin de la funcin al valor que regresar. Ejemplo: FUNCTION Promedio (a, b : Real) : Real; {Promedio de dos nmeros reales} BEGIN Promedio := (a + b) / 2; END; Uso de las funciones Como las funciones devuelven un valor especfico la forma ms usual de utilizarlas es por medio de asignaciones de una variable a la funcin. Ejemplo: PROGRAM Funciones; VAR X, Y, Z : Real; FUNCTION Promedio (a, b : Real) : Real; {Promedio de dos nmeros reales} BEGIN Promedio := (a + b) / 2; END; BEGIN X := 5.89; Y := 9.23; Z := Promedio (X, Y); {Iguala Z al valor devuelto por la funcin Promedio} WriteLn('El promedio de ',X,' y ',Y,' es: ',Z); END.

Procedimieto HALT El procedimiento HALT ya se habia revisado anteriormente, pero se tom como una instruccin, siendo que es realmente un procedimiento predefinido de Turbo Pascal que nos permite terminar nuestro programa en cualquier punto del mismo.

El procedimiento EXIT provoca la salida del procedimiento que se est ejecutando y nos regresa al lugar de donde fue llamado. Procedimientos INC y DEC El procedimiento INC incrementa en 1 el contenido de cualquier variable de tipo entero, es lo mismo en un programa teclear: Variable := Variable + 1; o telcear: Inc(Variable); El procedimiento DEC decrementa en 1 el valor de cualquier variable de tipo entero que se le indique, se usa igual que INC: DEC (Variable); Truncamiento y redondeo La funcin Round (nmero) redondea un nmero real al entero ms cercano y devuelve el resultado como un nmero real. La funcin Trunc (nmero) elimina la parte decimal del nmero real y devuelve el resultado como tipo entero. Ejemplo: PROGRAM Redondeo; VAR Entero : Integer; ValorReal1, ValorReal2 : Real; BEGIN ValorReal1 := 123.435; ValorReal2 := Round(ValorReal1); Entero := Trunc (ValorReal1); WriteLn('El resultado de la funcin Round sobre el valor'); WriteLn(ValorReal1, ' es: ','ValorReal2, ' (Nmero real)'); WriteLn('El resultado de la funcin Trunc sobre el valor'); WriteLn(ValorReal1, ' es: ', Entero, ' (Nmero entero)'); END. Funciones exponenciales y logartmicas La funcin Sqr devuelve el cuadrado del valor utilizado como parmetro. Sqrt regresa la raz cuadrada del valor dado como parmetro, el resultado siempre es real aunque se utilice un nmero de tipo entero como argumento. Ejemplo: PROGRAM Exponentes; VAR Dato, Cuadrado : Integer; Raiz : Real;

BEGIN Dato := 45; Cuadrado := Sqr(Dato); Raiz := Sqrt(Dato); WriteLn(' El cuadrado de ',Dato, ' es: ',Cuadrado); WriteLn('La raz cuadrada de ',Dato,' es: ',Raiz); END. Las funciones Exp y Ln tratan con logaritmos naturales o neperianos. Exp devuelve la funcion exponencial e^x y Ln devuelve el logaritmo natural de x. El resultado en ambos siempre es del tipo real. Es posible crear una funcin con base en estas dos para calcular el resultado de un nmero x elevado a una potencia n, la cual nos quedara as: FUNCTION Potencia(x,n:Real):Real; BEGIN Potencia := Exp(n *Ln(x)) END; El uso de esta funcin en un programa podra ser: PROGRAM Potenciacion; FUNCTION Potencia(x, n : Real) : Real; BEGIN Potencia := Exp(n * Ln(x)) END; BEGIN WriteLn('El resultado de 5 elevado a 3 es: ',Potencia(5,3)); END. Funciones aritmticas Abs regresa el valor absluto del identificador que se le pase como parmetro. El valor que devuelve ser del mismo tipo que el argumento. Abs(-24) {Regresa el valor 24} La funcin Int devuelve la parte entera de un valor real, como tipo real. La funcin Frac regresa la parte decimal de un valor real, tambin como valor real. Funciones trigonomtricas Las funciones trigonometricas definidas en Turbo Pascal son: Sin(valor), Cos(valor) y Arctan(valor), todas las demas pueden definirse desde estas: Tan(x) Sin(x) / Cos(x) Cot(x) Cos(x) / Sin(x) Sec(x) 1 / Cos(x) Csc(x) 1 / Sin(x) Las funciones para utilizarlas son:

FUNCTION Tan(x : Real) : Real; BEGIN Tan := Sin(x) / Cos(x) END; FUNCTION Cot(x : Real) : Real; BEGIN Cot := Cos(x) / Sin(x) END; FUNCTION Sec(x : Real) : Real; BEGIN Sec := 1 / Cos(x) END; FUNCTION Csc(x : Real) : Real; BEGIN Csc := 1 / Sin(x) END; Generacin de nmeros aleatorios Para generar nmeros aleatorios Turbo Pascal cuenta con la funcin Random y el procedimiento Randomize. La funcin Random genera un nmero aleatorio de tipo real comprendido entre 0 y 1, en cambio la funcin Random (x) genera un entero aleatorio entre 0 y x. Sin embargo el uso de la funcin Random es en ocasiones insuficiente por si sola para la generacin de valores aleatorios ya que los nmeros son realmente pseudoaleatorios, y cada vez que se ejecute el programa se obtendran los mismos valores. Para evitar esto debemos utilizar en todo programa que utilice valores aleatorios el procedimiento Randomize, que inicializa el generador de nmeros aleatorios, en otras palabras, asegura que los nmeros que obtendr sern diferentes cada vez que se ejecute el programa. Es recomendable usar este procedimiento antes de cada funcin random del programa. Ejemplo de un programa generador de nmeros aleatorios: PROGRAM Nums_Aleatorios; VAR x : Integer; BEGIN Randomize WriteLn('Lista de nmeros aleatorios'); For x := 1 to 20 do WriteLn(Random); END Las cadenas de caracteres son secuencias de caracteres con longitudes que varan desde 1 hasta los 255 caracteres. El tipo identificador de las cadenas es String. Cuando declaramos una variable

de tipo string ser posible introducir hasta 255 caracteres en ella, pero tambin es factible declarar cadenas ms cortas agregando al momento de la declaracin la longitud de la variable, por ejemplo: VAR Mensaje : String[120]; {Longitud maxima = 120 caracteres} Comparacin de cadenas La comparacin de cadenas es una operacin muy comn en Turbo Pascal; estas comparaciones se realizan con base en el orden del cdigo ASCII, por ejemplo la cadena 'Prueba' es menor a la cadena 'prueba' ya que el valor del cdigo ASCII de P es 80 y el de p es 112. As tambin podemos diferenciar las cadenas con respecto a su tamao: 'Hola' es menor a 'Bienvenido' Existe un caso especial de una cadena, que es cuando no tiene ningn caracter en ella, en ese momento decimos que es una cadena nula o vaca. Se recomienda ampliamente inicializar todos los valores de las cadenas a cadenas nulas al inicio del programa, ya que podran contener datos extraos e indeseables. Manejo de los elementos de la cadena Es posible leer cada elemento de una cadena por separado, por ejemplo, si en la variable Calle almacenamos la cadena 'Hidalgo' es posible asignar a otra cadena el valor de Calle[x] donde x es el caracter de la cadena que se quiere leer, as tambin es posible visualizar el caracter en pantalla usando la instruccin WriteLn. Ejemplo: PROGRAM Caracter; VAR Calle : String; Letra : String; BEGIN Calle := 'Hidalgo'; WriteLn(Calle[2]); {Visualiza el segundo caracter de Calle} Letra := Calle[1]; {Guarda en Letra el primer caracter de Calle} WriteLn(Caracter) END. Para conocer la longitud de una cadena utilizamos la funcin Length, la longitud es la cantidad de caracteres que contiene la cadena en un momento determinado. Su sintaxis es: Length (cadena); La funcin regresa un valor entero. PROGRAM Funcion_Length; VAR Cadena : String; BEGIN Cadena := 'Prueba de longitud'; WriteLn ('Longitud de la cadena: ', Length (Cadena)); END.

El programa imprime en la pantalla un mensaje con la longitud de la cadena almacenada en memoria, en este caso especfico 18. En ocasiones es necesario combinar dos o ms cadenas de caracteres en una sola, para lograr sto utilizamos los siguientes mtodos. Operador + Es una de las formas ms sencillas de unir dos cadenas y se maneja exactamente como una suma, la nica limitante es que en caso de ser mayor la longitud resultante de la suma que la longitud que pueda manejar la variable en que se almacenar se truncarn los caracteres sobrantes. Ejemplo: Cadena1 := 'Buenos '; Cadena2 := 'dias '; Cadena3 := Cadena1 + Cadena2; WriteLn (Cadena3); Se imprimir en la pantalla: 'Buenos dias'. (Notese que este ejemplo es solo una seccin del programa, para ejecutarlo es necesario completar la estructura). Funcin Concat La funcin concat produce los mismos resultados que la concatenacin, es posible incluir cualquier nmero de cadenas que se necesiten concatenar. La suma de las cadenas no deber sobrepasar la longitud que la variable, a la cual se asignar dicha suma, puede manejar. Ejemplo: Cadena := Concat (Cad1, cad2, cad3); Pos Laa funcin Pos nos sirve para localizar una determinada cadena dentro de otra, en otras palabras para verificar si una cadena es subcadena de otra segunda. Los parmetros que requiere son: la cadena que se buscar y la cadena donde se buscar la primera: Pos (Cadena1, Cadena2); Cuando encuentra la cadena la funcin devuelve su posicin inicial, en caso de que no la encuentre devuelve el valor de 0. Ejemplo: Cadena := 'Domingo Lunes Martes Miercoles Jueves Viernes Sabado'; WriteLn(Cadena); WriteLn(Pos('Lunes', Cadena)); {Muestra 9} WriteLn(Pos('Jueves', Cadena)); {Muestra 32} WriteLn(Pos('Ayer', Cadena)); {Muestra 0} Copy

La funcin copy regresa una subcadena de una variable o constante dada como parmetro. Su sintaxis es: Copy (Cadena, Inicio, Cantidad); Donde Cadena es la fuente de la subcadena, Inicio es la posicin desde la cual se obtendr la subcadena y Cantidad es el nmero de caracteres que se extraern. Los valores de Inicio y Cantidad deben ser de tipo entero. Ejemplo: Cadena := "Nuevos horizontes"; WriteLn (Copy(Cadena, 8, 10)); {Visualiza: horizontes} Insert El procedimiento Insert sirve para insertar una cadena dentro de otra en alguna posicin determinada. Sintaxis: Insert (Cadena1, Cadena2, Posicin) Donde Cadena1 es la que se insertar, Cadena2 es donde se insertar y Posicin es el lugar donde se insertar. El parmetro Posicin debe ser de tipo entero. Delete Este procedimiento elimina un determinado nmero de caracteres de una cadena. Su sintaxis es: Delete (Cadena, Inicio, Nmero) Cadena es la variable en la cual se eliminarn los caracteres, Inicio es la posicin del primer caracter a eliminar y Nmero es la cantidad de caracteres que se borrarn. UpCase La funcin UpCase regresa la letra mayuscula correspondiente al caracter dado como parmetro. Es muy comn trabajando con cadenas que se quiera convertir una que contiene un nmero a su valor numrico, para poder utilizarlo en operaciones matemticas, as como convertir un nmero a su equivalente en una cadena. Esto es ms fcil de entender si consideramos que no es lo mismo el valor 75 y el valor '75', en el primer caso es un nmero mientras que en el segundo es un par de caracteres ASCII. Para lograr estos cambios de tipo en Turbo Pascal utilizamos los procedimientos siguientes: Str El procedimiento Str obtiene una cadena a partir de un valor numrico. Su sintaxis es: Str(Valor, Cadena)

Donde valor es el nmero a convertir y Cadena es la variable donde se almacenar la cadena ya convertida. Val Este procedimiento convierte una cadena en un valor de tipo numrico, el problema con esta funcin es que si la cadena no esta formada exclusivamente de nmeros siguiendo las reglas para el tipo de datos que se vallan a obtener se generar un error. Sintaxis: Val (Cad, Num, Cdigo) Cadena contiene la cadena que ser procesada, Num es la variable de tipo numrico donde se guardar el valor de la cadena y Cdigo es una variable de tipo entero (Integer) que contendr el valor de 0 si no hubo errores y un valor diferente en caso de que no se haya podido convertir la cadena, el valor de Cdigo representa la posicin de la cadena donde ocurrio el error. Archivos de acceso secuencial Los archivos de acceso secuencial son llamados tambin archivos de texto, estn formados por cadenas de caracteres separadas unas de otras por los cdigos retorno de carro/avance de lnea, que corresponden a los caracteres 13/10 del cdigo ASCII. El final del archivo se indica mediante el caracter ASCII 26, que tambin se expresa como ^Z o EOF. Es posible visualizar estos archivos con la orden TYPE del sistema operativo DOS y se pueden editar con cualquier editor de textos. Este tipo de archivos solo permiten operaciones de lectura y escritura secuenciales, la unica forma de modificarlos es agregando lneas al final del archivo. Los pasos para leer o escribir en un archivo de este tipo son: Declarar una variable de tipo texto y asociarla al nombre de un archivo. A esto tambin se le llama declarar el archivo. Abrir el archivo ya sea para lectura o escritura. Leer o escribir datos en el archivo. Cerrar el archivo Declaracin de un archivo Para declarar un archivo primero se declara una variable tipo text de la siguiente forma: VAR VarArchivo : Text; Una vez declarada la variable se asigna al nombre de algun archivo: ASSIGN (VarArchivo, NombreArchivo); Donde NombreArchivo es una cadena de caracteres que contiene el nombre del archivo, la unidad de disco donde se encuentra y el directorio. Por ejemplo: ASSIGN (VarArchivo, 'C:\DOS\PRUEBA.TXT'); Abrir archivos

Exsiten tres formas de abrir un archivo: Rewrite Reset Append Escribir datos en un archivo Para escribir datos a un archivo se utilizan las instrucciones Write y WriteLn, como si se quisiera escribir a la pantalla, con la diferencia de que se especificar la variable de archivo ya declarada. Ejemplo: WriteLn(VarArchivo, 'Prueba de archivos'); Esta sentencia grabara el texto 'Prueba de archivos' en el archivo asignado a VarArchivo. Leer datos de un archivo Para leer los datos de un archivo de acceso secuencial se utilizan las instrucciones Read y ReadLn. La instruccin Read lee uno o varios datos del archivo abierto y deja el puntero en el mismo rengln en el cual ley los datos, en cambio ReadLn lee los datos y mueve el puntero al siguiente rengln. Fin del archivo Normalmente los archivos de este tipo se leen rengln por rengln hasta llegar al final del mismo. Cuando se conoce de antemano el tamao del archivo es posible utilizar un ciclo FOR, pero es ms seguro utilizar la funcin EOF la cual es verdadera despues de que el programa lee la ltima linea de un archivo de acceso secuencial. La sintaxis de la funcin EOF es: EOF (VaribleArchivo); Es comn realizar la verificacin de la funcin con un ciclo WHILE como en el ejemplo siguiente: WHILE NOT EOF(Archivo) DO BEGIN ReadLn(Archivo, Datos); WriteLn(Datos); END; Cerrar archivos Para asegurar que toda la informacin se grabe en el disco correctamente es necesario cerrar el archivo antes de que se termine la ejecucin del programa, de lo contrario se corre el riego de que la ltima informacin que se haya accesado no se grabe en su totalidad. La instruccin para cerrar un archivo es Close, y su sintaxis es: Close (VaribleArchivo); Funcin Eoln

La funcin Eoln sirve para verificar si el puntero ha llegado al final de la linea. Regresa el valor verdadero si se encuentra al final. Comunmente se utiliza en las lecturas caracter por caracter. Agregar datos a un archivo de texto Para aadir datos a un archivo de texto son necesarios los siguientes pasos: Asignar un archivo a una variable con Assign Agregar los datos con el procedimiento Append Escribir los datos Cerrar el archivo A continuacin se ilustra un ejemplo de un programa que agrega una linea a un archivo de texto: PROGRAM Archivo; VAR Texto : TEXT; BEGIN Assign (Texto, 'PRUEBA.DAT'); Append(Texto); WriteLn(Texto, 'Agregando una linea al archivo PRUEBA.DAT'); Close (Texto) END. Archivos de acceso directo Un archivo de acceso directo esta formado por un conjunto de partes individuales que pertenecen al mismo tipo de datos. Cada uno de los componentes del archivo es llamado registro. Cada uno de los componentes de este tipo de archivos es accesible directamente. Los archivos de acceso directo son tambin llamados archivos con tipos o tipeados. Estructura del archivo A diferencia de los archivos secuenciales, los archivos tipeados no estan compuestos de lineas de caracteres, sino que se acomodan en registros con estructuras fijas. La longitud de los registros esta determinada por la cantidad de bytes que se necesitan para almacenar el tipo de datos que contendr el registro. Por ejemplo, si se van a almacenar nmeros enteros en un archivo, cada registro servir para un nmero especfico y ocupar 2 bytes, el siguiente registro utilizar los dos bytes siguientes del archivo y as sucesivamente hasta completar la cantidad de datos que se vayan a almacenar. Este tipo de archivos no pueden ser visualizados con la instruccin type del sistema operativo debido al formato utilizado para guardarlos. Declaracin de un archivo Para declarar un archivo de acceso directo se realiza con las palabras reservadas FILE OF, su sintaxis es la siguiente:

VariableArchivo : FILE OF TipoElementos; Esta declaracin se realiza en la seccin correspondiente a la declaracin de las variables. Ejemplo: PROGRAM Archivo_Tipeado; VAR Archivo : FILE OF Integer; BEGIN END. Normalmente no se desea crear archivos que puedan almacenar un solo tipo de datos ya que se requeririan varios archivos, por ejemplo para alguna base de datos: uno para los nombres, otro para apellidos, otro para la edad, etc. Para evitar este inconveniente es posible usar registros del tipo RECORD, que permiten grabar en un solo registro un grupo de datos que pueden ser de diferentes tipos, uno de tipo INTEGER, uno de tipo STRING, etc. Los registros del tipo record deben ser declarados antes de las variables en una seccin llamada TYPE con el siguiente formato: TYPE Nombre_Reg = RECORD Campo_del_registro_1 : Tipo; Campo_del_registro_2 : Tipo; ... Campo_del_registro_n : Tipo; END; Donde Nombre_Reg es el nombre del registro que se utilizar, Campo_del_Registro_x son las variables que estarn contenidas en el registro y Tipo es el tipo de cada una de las variables del registro. La seccin TYPE se escribe antes de la declaracin de las variables. Como ejemplo, si se quiere crear un archivo el que se guarden el nombre, domicilio, edad y estado civil de un grupo de personas el primer paso a realizar es crear un registro que contenga todos estos campos: TYPE Datos = RECORD Nombre : String[40]; Domicilio : String[60]; Edad : Integer; EdoCivil : String[10]; END; El siguiente paso es declarar un archivo del tipo Datos as como una variable del mismo tipo de los que se utilizarn en el archivo: VAR Archivo : FILE OF Datos; Persona : Datos; Asignacin de un archivo

An cuando se tenga declarado el archivo no es posible grabar nada en l si no se le asigna un nombre real para guardarlo en el disco. El proceso de dicha asignacin es el mismo que para los archivos de texto: Assign (Archivo, 'Nombre.ext'); Nombre.txt puede ser una constante, una variable o estar escrita directamente en el programa. Naturalmente debe cumplir con todas las reglas para nombrar un archivo. Abrir archivos Una vez declarado un archivo ya es posible abrirlo. En caso de querer abrir un archivo nuevo se utiliza la instruccin Rewrite, o si el archivo ya existe en el disco se abre con el procedimiento Reset. No existe ninguna diferencia entre la apertura de un archivo de acceso directo para su lectura o para su escritura. Si al utilizar el procedimiento Rewrite el archivo asignado ya exista se eliminar del disco y se crear uno nuevo, por lo mismo se debe tener ciudado al momento de abrir estos archivos. Registro actual y tamao de un archivo La funcin FileSize regresa el tamao de un archivo, o mejor dicho devuelve el nmero de registros contenidos en ste. Al momento de abrir un archivo nuevo la funcin FileSize regresa el valor de 0, lo que significa que el archivo no tiene datos guardados en l. Posicionamiento en el interior de un archivo Cada uno de los registros de un archivo esta referenciado por un nmero especfico comenzando desde el registro 0 y aumentando de 1 en 1. La funcin FilePos devuelve el nmero de registro actual, su sintaxis es: FilePos (VariableArchivo) VariableArchivo es la variable a la cual se asign un nombre de archivo en el disco. Para moverse a un registro determinado se utiliza la funcin Seek, con la siguiente sintaxis: Seek (VariableArchivo, NumRegistro); Para moverse al final del archivo para agregar un nuevo registro se utiliza este mismo comando con el parametro NumRegistro como sigue: Seek (VariableArchivo, FileSize(VariableArchivo)); Cuando se avanza en un archivo registro por registro se utiliza la funcin EOF para determinar si ya se lleg al final del archivo. Lectura y escritura de archivos

Para la lectura y escritura en un archivo de acceso directo unicamente se utilizan los procedimientos Read y Write. Despues de cada operacion de lectura o escritura el puntero se posiciona en el siguiente registro. Para estar seguros de que se leera el registro que se desea se debe emplear el procedimiento seek antes de cualquier procedimiento de lectura o escritura. Cerrar un archivo Para cerrar los archivos abiertos se procede igual que en uno de acceso secuencial, utilizando el procedimiento close: Close (VariableArchivo); Modo de Pantalla Las constantes definidas de Turbo Pascal para indicar el modo de pantalla que se utilizar son: Constante Valor Modo de video BW40 CO40 BW80 CO80 Mono Colores Las constantes definidas para los colores son: Colores para primer plano y fondo: Constante Valor Color Black Blue Green Cyan Red Magenta Brown 0 1 2 3 4 5 6 Negro Azul Verde Cyan Rojo Magenta Marrn Gris claro Colores para primer plano: Constante Dark gray Light Blue Light Green Light Cyan Light Red Yellow White Parpadeo Blink 128 La unidad CRT provee un conjunto de variables utilizadas para modificar aspectos referentes a entradas de teclado, modo de la pantalla, etc. A continuacin se listan las principales con su funcin especfica. Valor Color 8 9 10 11 12 14 15 Gris oscuro Azul claro Verde claro Cyan claro Rojo claro Magenta claro Amarillo 0 1 2 3 7 40x25 Blanco y negro en tarjeta de color 40x25 Color 80x25 Blanco y negro en tarjeta de color 80x25 Color 80x25 Monocromtico

Light Magenta 13

Light Gray 7

Blanco

CheckBreak Tipo : boolean. Cuando el contenido de esta variable es True se encuentra activada la terminacin de un programa por medio de las teclas Crtl-Break. Si se cambia su valor a False se desactiva esta opcin. Su valor por defecto es True. DirectVideo Tipo : boolean. Cuando existen problemas de entrada/salida de texto se debe desactivar esta variable (guardar en ella el valor false) que inhibe la escritura directa de caracteres a la memoria de video. LastMode Tipo : Word La variable LastMode contiene el valor del modo de texto actual. Se inicializa al momento de iniciar el programa y se utiliza comunmente para restaurar el modo original al momento de terminar el programa. TextAttr Tipo : Byte Usualmente se utiliza para cambiar los atributos de colores en la pantalla, es ms rpido que los procedimientos TextColor y TextBackground que tienen la misma funcin. WindMin Tipo : Word; Esta variable contiene las coordenadas de la esquina superior izquierda de la ventana de texto activa definida por el procedimiento Window. WindMax Esta variable contiene las coordenadas de la esquina inferior derecha de la ventana de texto activa definida por el procedimiento Window. A continuacin se listan algunos de los procedimientos que incluye esta unidad con una breve descripcin de cada uno. ClrEol Sintaxis: ClrEol;

Este procedimiento borra todos los caracteres de la linea actual desde la posicin del cursor hasta el final de la linea. Ejemplo: PROGRAM Proc_ClrEol; USES Crt; VAR x,y : Integer; BEGIN FOR x := 1 TO 24 DO FOR y := 1 TO 80 DO Write('#'); GotoXY(15,15); ClrEol; END. ClrScr Sintaxis: ClrScr; Se utiliza para borrar la pantalla completa o la ventana actual y situa el cursor en la esquina superior izquierda. Ejemplo: PROGRAM LimpiarPantalla; USES Crt; VAR x,y : Integer; Prb : String; BEGIN FOR x := 1 TO 24 DO FOR y := 1 TO 80 DO Write('#'); WriteLn('Presione [ENTER] para borrar la pantalla'); ReadLn(Prb); ClrScr; WriteLn('Se borr la pantalla'); END. Delay Sintaxis: Delay(Tmp : Word); Detiene la ejecucin del programa durante un tiempo especificado en Tmp en milisegundos. El intervalo vlido es desde 0 hasta 65535, la precisin del retardo depende de la precisin del reloj interno de la computadora. Ejemplo: PROGRAM Retardo; USES Crt; BEGIN

WriteLn('Inicia retardo de aproximadamente 5 segundos'); Delay(5000); WriteLn('Fin del retardo'); END. DelLine Sintaxis: DelLine; Borra la linea donde se encuentra el cursor y las lineas inferiores suben una posicin. Ejemplo PROGRAM BorrarLinea; USES Crt; VAR x : Integer; prb : String; BEGIN ClrScr; For x := 1 to 20 DO WriteLn('Linea nmero: ', x); WriteLn('Presione [ENTER] para borrar la linea 6'); GotoXY(0,6); DelLine; WriteLn('Linea 6 eliminada'); END. GotoXY Sintaxis: GotoXY(x, y : Byte); Posiciona el cursor en las coordenadas especificadas por x y y. El byte x representa la columna partiendo de izquierda a derecha y el byte y representa la fila partiendo de arriba hacia abajo. Ejemplo: PROGRAM Posicin; USES Crt; BEGIN GotoXY(10,10); Write('*'); GotoXY(20,20); Write('*'); END. HighVideo Sintaxis: HighVideo; Activa la pantalla de video de alta intensidad.

InsLine Sintaxis: InsLine Inserta una linea en blanco en la posicin actual del cursor. LowVideo Sintaxis: LowVideo Activa la pantalla de video de baja intensidad. NormVideo Sintaxis: NormVideo; Restaura los atributos de primer plano y fondo a los colores originales establecidos cuando arranc el programa. NoSound Sintaxis: NoSound; Desactiva el sonido iniciado con el procedimiento Sound. Sound Sintaxis: Sound (Frecuencia : Word); Genera un sonido en la bocina de la computadora a una frecuencia determinada por el valor de Frecuencia. Para detener el sonido es necesario ejecutar el procedimiento NoSound. TextBackground Sintaxis: TextBackGround (Color : byte); Se utiliza para seleccionar el color del fondo de la pantalla. Los valores que puede utilizar son del 0 al 7, tambin es posible utilizar las constantes predefinidas para los colores.

TextColor Sintaxis: TextColor (Color : Byte); El procedimiento TextColor se usa para seleccionar el color del texto en la pantalla. TextMode Sintaxis: TextMode (Modo : Word); Define el modo de video, sto es, el nmero de filas y columnas que se podrn mostrar en pantalla, tambin si se mostrarn en blanco y negro o en color. Los modos vlidos de pantalla de texto son: Constante Valor Modo de video BW40 CO40 BW80 CO80 Mono Window Sintaxis: Window (x1, y1, x2, y2 : Byte); Define las coordenadas de la ventana de texto activa; x1 y y1 son las coordenadas de la esquina superior izquierda, x2 y y2 son las coordenadas de la esquina inferior derecha. Las siguientes son las funciones de la unidad CRT: KeyPressed Tipo: Boolean La funcin KeyPressed devuelve el valor de True si se puls alguna tecla y false si no se ha presionado ninguna. ReadKey Tipo: Char 0 1 2 3 7 40x25 Blanco y negro en tarjeta de color 40x25 Color 80x25 Blanco y negro en tarjeta de color 80x25 Color 80x25 Monocromtico

Esta funcin lee un caracter del teclado, se utiliza mucho para leer teclas de direccin, teclas de control y de funciones. WhereX Tipo: Byte WhereX devuelve el nmero de la columna donde se encuentra el cursor. WhereY Tipo: Byte La funcin WhereY devuelve el nmero de la fila donde se encuentra el cursor al momento de llamar a la funcioacute;n.

S-ar putea să vă placă și