Está en la página 1de 60

Introduccin a la programacin de un lenguaje estructurado. 3.1 Introduccin a la programacin. Definicin de algoritmo.

Un algoritmo es una secuencia de pasos lgicos necesarios para llevar a cabo una tarea especfica, como la solucin de un problema. Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin embargo el algoritmo ser siempre el mismo. Por ejemplo en una analoga con la vida diaria, una receta de un plato de cocina se puede expresar en espaol, ingls o francs, pero cualquiera que sea el lenguaje, los pasos para la elaboracin del plato se realizaran sin importar el cocinero. Los pasos a seguir en la solucin de una ecuacin de segundo grado. Los pasos matemticos para la solucin de un nmero factorial. Las instrucciones para la liquidacin de una nmina. Las acciones que se deben seguir para la obtencin de una estadstica. Para llegar a la realizacin de un programa es necesario el diseo previo de un algoritmo, de modo que sin algoritmo no puede existir un programa. Caractersticas de los algoritmos. Las caractersticas fundamentales que debe cumplir todo algoritmo son:

Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso. Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.

Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algn momento; o sea debe de tener un nmero finito de pasos.

La definicin de un algoritmo debe describir tres partes: entrada, proceso y salida. Los pasos de un algoritmo deben ser simples y exentos de ambigedades (diferentes significados), deben seguir un orden cuidadosamente prescrito, deben ser efectivos y deben de resolver el problema en un nmero finito de pasos. El siguiente ejemplo muestra un algoritmo para cambiar un foco quemado. Cambiar un foco quemado podra resumirse en dos pasos: 1. Quitar el foco quemado. 2. Colocar un foco nuevo. Pero, si tuviera que entrenar un robot domestico para que efecte esta tarea, tendr que ser ms especfico y claro en los pasos a seguir, dar ms detalles (suponga que el foco se encuentra en el techo de una habitacin): 1. Situar escalera bajo el foco quemado. 2. Elegir un foco de remplazo (de la misma potencia que el anterior). 3. Subir por la escalera hasta alcanzar el foco. 4. Girar el foco contra las manecillas del reloj hasta que est suelto. 5. Ubicar el foco nuevo en el mismo lugar que el anterior. 6. Enroscar en el sentido de las manecillas del reloj hasta que quede apretado. 7. Bajar de la escalera.

Lenguajes de programacin (Lenguaje mquina, ensamblador y de alto nivel).

Al igual que los idiomas sirven de vehculo de comunicacin entre seres humanos, existen lenguajes que realizan la comunicacin entre ellos y las computadoras. Estos lenguajes permiten expresar las instrucciones que el programador desea que la computadora ejecute. Los principales tipos de lenguajes utilizados en la actualidad son tres:

Lenguaje mquina. Lenguaje de bajo nivel (ensamblador). Lenguajes de alto nivel.

Lenguajes mquina.

Se llama lenguaje mquina a las instrucciones que se dan directamente a la computadora, utilizando una serie de dgitos binarios o bits, representados por los nmeros 0 y 1 que especifican una operacin. Aunque este lenguaje es el que entiende la computadora, es muy difcil de manejar en la comunicacin humana. Las instrucciones en lenguaje maquina dependen del hardware de la computadora y, por lo tanto, diferirn de una computadora a otra.

Lenguajes de bajo nivel (ensamblador). Los lenguajes de bajo nivel son ms fciles de utilizar que los lenguajes mquina, pero, al igual que ellos, dependen de la mquina en particular. El lenguaje de bajo nivel por excelencia es el ensamblador (assembler lenguaje). Las instrucciones en lenguaje ensamblador son conocidas como mnemotcnicos. Por ejemplo, mnemotcnicos tpicos de operaciones aritmticas son: En ingls, ADD, SUB, DIV, etc. En espaol, SUM, RES, DIV, etc. Una instruccin tpica de suma seria: ADD M, N, P Esta instruccin podra significar "sumar el nmero contenido en la posicin de memoria M al nmero almacenado en la posicin de memoria N y situar el resultado en la posicin de memoria P". Evidentemente es mucho ms sencillo

recordar la instruccin anterior con un mnemotcnico que su equivalente en cdigo mquina. 0110 1001 1010 1011

Un programa escrito en lenguaje ensamblador no puede ser ejecutado directamente por la computadora (en esto se diferencia esencialmente del lenguaje mquina) sino que requiere una fase de traduccin al lenguaje mquina. El programa original escrito en lenguaje ensamblador se denomina programa fuente y el programa traducido en lenguaje maquina se conoce como programa objeto, ya directamente entendible por la computadora. El traductor de programas fuente a objeto es un programa llamado ensamblador (assembler), existente en casi todas las computadoras. NOTA: No se debe confundir el programa ensamblador, encargado de efectuar la traduccin del programa fuente escrito a lenguaje mquina, con el lenguaje

ensamblador (assembly language), lenguaje de programacin con una estructura y gramtica definidas. Los lenguajes ensambladores presentan la ventaja frente a los lenguajes mquina de su mayor facilidad de codificacin y, en general, su velocidad de clculo. Los inconvenientes ms notables de los lenguajes ensambladores son:

Dependencia total de la maquina lo que impide la transportabilidad de los programas (posibilidad de ejecutar un programa en diferentes maquinas). La formacin de los programadores es ms compleja que la

correspondiente a los programadores de alto nivel, ya que exige no slo las tcnicas de programacin, sino tambin el conocimiento del interior de la mquina.

Hoy da los lenguajes ensambladores tienen sus aplicaciones muy reducidas en la programacin de aplicaciones y se centran en aplicaciones de tiempo real, control de procesos y de dispositivos electrnicos, etc.

Lenguajes de alto nivel. Los lenguajes de alto nivel son los ms utilizados por los programadores. Estn diseados para que las personas escriban y entiendan los programas de un modo mucho ms fcil que los lenguajes mquina y ensambladores. Otra razn es que un programa escrito en un lenguaje de alto nivel es independiente de la mquina; esto es, las instrucciones del programa de la computadora no dependen del diseo del hardware o de una computadora en particular. En consecuencia, los programas escritos en lenguajes de alto nivel son portables o transportables, lo que significa la posibilidad de poder ser ejecutados con poca o ninguna modificacin en diferentes tipos de computadoras; al contrario que los programas en lenguaje mquina o ensamblador que slo se pueden ejecutar en un determinado tipo de computadora.

Los lenguajes de alto nivel presentan las siguientes ventajas:

El tiempo de formacin de los programadores es relativamente corto comparado con otros lenguajes. La escritura de programas se basa en reglas sintcticas similares a los lenguajes humanos. Nombres de las instrucciones tales como READ,

WRITE, PRINT, OPEN, etc. Las modificaciones y puestas a punto de los programas son ms fciles.

Reduccin del coste de los programas. Transportabilidad.

Los inconvenientes se concretan en:

Incremento del tiempo de puesta a punto al necesitarse diferentes traducciones del programa fuente para conseguir el programa definitivo. No se aprovechan los recursos internos de la mquina que se explotan mucho mejor en lenguajes mquina y ensambladores. Aumento de la ocupacin de memoria. El tiempo de ejecucin de los programas es mucho mayor.

Al igual que pasa con los lenguajes ensambladores, los programas fuente tienen que ser traducidos por programas traductores, llamados compiladores e intrpretes. Los lenguajes de programacin de alto nivel existentes en la actualidad son muy numerosos, aunque la prctica demuestra que su uso mayoritario se reduce a BASIC, COBOL, PASCAL, C, C++,... y en el campo de la primera enseanza a LOGO, PILOT... Traductores de lenguaje. Los traductores de lenguajes son programas que traducen a su vez los programas fuente escritos en lenguajes de alto nivel a cdigo mquina.

Los tipos de traductores son:


Compiladores. Interpretes. Intrpretes.

Un intrprete es un traductor que toma un programa fuente, lo traduce y a continuacin lo ejecuta (dicho programa por medio de la computadora desarrolla una tarea especfica). Un lenguaje que soporte un traductor de tipo intrprete se denomina lenguaje interpretado. BASIC es el modelo por excelencia interpretado. Los programas fuente en BASIC se escriben con ayuda de un programa denominado editor que suele venir incorporado al programa intrprete.

Compiladores. Un compilador es un programa que traduce los programas fuente escritos en lenguajes de alto nivel a lenguaje mquina. Los programas escritos en lenguajes de alto nivel (en el editor del lenguaje) se llaman programas fuente y el programa traducido programa objeto o cdigo objeto. El compilador traduce (sentencia a sentencia) el programa fuente.

Lenguajes compiladores tpicos son: PASCAL, COBOL, C... Fases de la compilacin La compilacin es el proceso de la traduccin de programas fuente a programas objeto. El programa objeto obtenido de la compilacin no ha sido traducido normalmente a cdigo mquina sino a ensamblador. Para conseguir el programa mquina real se debe utilizar un programa llamado montador o enlazador (linker). El proceso de montaje conduce a un programa en lenguaje mquina directamente ejecutable:

Por ejemplo: El proceso de ejecucin de un Programa en C++ tiene los siguientes pasos: 1. Escritura del programa fuente con un editor (programa que permite a una computadora actuar de modo similar a una mquina de escribir electrnica) y guardarlo en un dispositivo de almacenamiento (un disco). 2. Introducir el programa fuente en memoria.

10

3. Compilar el programa con el compilador C++. 4. Verificar y corregir errores de compilacin (listado de errores). 5. Obtencin del programa objeto. 6. El montador obtiene el programa ejecutable. 7. Se ejecuta el programa y si no existen errores, se tendr la salida del mismo.

Definicin de programa. Un programa de computadora es un conjunto de instrucciones (rdenes dadas a la mquina) que producirn la ejecucin de una determinada tarea. En esencia, un programa es un medio para conseguir un fin. El fin ser normalmente definido como la informacin necesaria para solucionar un problema.

11

El proceso de programacin es, por consiguiente, un proceso de solucin de problemas (como ya se vio anteriormente) y el desarrollo de un programa requiere las siguientes fases: 1. Definicin y anlisis del problema. 2. Diseo de algoritmos. - Diagrama de flujo; - Pseudocdigo. 3. Codificacin del programa. 4. Depuracin y verificacin del programa. 5. Documentacin. 6. Mantenimiento. Diagrama de flujo (Representacin grfica). Un diagrama de flujo (flowchart) es una de las tcnicas de representacin de algoritmos ms antigua y a la vez ms utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparicin de lenguajes de programacin estructurados. Un diagrama de flujo es un diagrama que utiliza los smbolos (cajas) y que tiene los pasos del algoritmo escritos en esas cajas unidas por flechas, denominadas lneas de flujo, que indican la secuencia en que se deben ejecutar. Los smbolos estndar normalizados por ANSI (abreviatura de American National Standards Institute) son muy variados, aqu se presentan algunos:

12

13

Ejemplo bsico de un diagrama de flujo:

El diagrama citado representa la resolucin de un programa que deduce el salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas, precio de la hora, y sabiendo que los impuestos aplicados son el 10 % sobre el salario bruto. Pseudocdigo. El pseudocdigo es un lenguaje de especificacin de algoritmos. En s es una mezcla de lenguaje de programacin y de lenguaje natural. La idea del pseudocdigo consiste en aprovechar la flexibilidad y poder expresivo del lenguaje natural por un lado, y las reglas de composicin de los lenguajes de programacin de alto nivel por el otro.

14

El pseudocdigo utiliza para representar las acciones sucesivas palabras reservadas en ingls - similares a sus homnimas en los lenguajes de programacin -, tales como start, end, stop, if-then-else, while etc. La escritura del pseudocdigo exige normalmente la indentacin (sangra en el margen izquierdo) de diferentes lneas. La representacin en pseudocdigo del diagrama de flujo del ejemplo anterior sera:

Start {Clculo de impuesto y salario} read nombre, hora, precio_hora salario_bruto horas * precio_hora tasa 0.1 *salario_bruto salario_neto salario_bruto - tasa write nombre, salario_bruto, tasa, salario_neto end

El algoritmo comienza con la palabra start y finaliza con la palabra end, en ingls (en espaol, inicio y fin). Entre estas palabras, slo se escribe una instruccin o accin por lnea. La lnea encerrada entre llaves { ... } se denomina comentario. Es una informacin al lector del programa y no realiza ninguna instruccin ejecutable; slo tiene efecto de documentacin interna del programa. Algunos autores suelen utilizar corchetes en lugar de llaves [ ... ].

15

Lenguaje algortmico. El lenguaje algortmico extrae las mejores caractersticas de los dos enfoques anteriores y los combina en un lenguaje especial para expresar algoritmos. Del pseudocdigo se tom la facilidad de descripcin de la prosa, al que se agreg lo conciso del diagrama de flujo. La traduccin del lenguaje algortmico a un lenguaje de programacin debe resultar sencilla, sin importar cual se utilice. La decisin final sobre el lenguaje de programacin a emplear depende de muchos factores, como la naturaleza de la aplicacin particular y las caractersticas del lenguaje. Metodologa de solucin. La principal razn para que las personas aprendan a programar en general y los lenguajes de programacin en particular es utilizar la computadora como una herramienta para la resolucin de problemas ayudado por una computadora. La resolucin de un problema consta de ocho etapas: 1. Definicin y delimitacin del problema a solucionar (enunciado del problema). 2. Pseudocdigo o diagrama de flujo (algoritmo). 3. Prueba de escritorio. 4. Codificacin. 5. Digitacin. 6. Compilacin o interpretacin del programa. 7. Ejecucin del Programa. 8. Evaluacin de los resultados. 1. - Definicin y delimitacin del problema a solucionar. El problema debe estar bien definido si se desea llegar a una solucin satisfactoria para poder definir con precisin el problema se requiere que las especificaciones

16

de entrada y salida sean descritas con detalle. Una buena definicin del problema, junto con una descripcin detallada de las especificaciones de entrada y salida, son los requisitos ms importantes para llegar a una solucin eficaz.

El anlisis del problema exige una lectura previa del problema a fin de obtener una idea general de lo que se solicita. La segunda lectura deber servir para responder a las preguntas:

Qu informacin debe proporcionar la resolucin del problema? Qu datos se necesitan para resolver el problema?

La respuesta a la primera pregunta indicar los resultados deseados o las salidas del problema. La respuesta a la segunda indicar qu datos se proporcionan o las entradas del problema. 2. - Pseudocdigo o diagrama de flujo (algoritmo). Una computadora no tiene la capacidad para solucionar problemas ms que cuando se le proporcionan los sucesivos pasos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar por la mquina constituyen, como ya conocemos, el algoritmo. En esta etapa es donde se determinan los pasos o instrucciones que deben llevarse a cabo y el orden lgico de su ejecucin para dar una eficiente solucin al problema. La informacin proporcionada al algoritmo constituye su entrada y la informacin producida por el algoritmo constituye su salida.

17

3. - Prueba de escritorio (prueba de un algoritmo). Para comprobar que un algoritmo realiza la tarea para la cual fue diseado, debe ejecutarse a mano. Para esto deben utilizarse datos representativos y anotarse los valores que toman las variables en cada paso. Esto se conoce como corrida de escritorio. 4. Codificacin. El programa que implementa el algoritmo debe ser escrito en un lenguaje de programacin y siguiendo las reglas gramaticales o sintaxis del mismo. La fase de conversin del algoritmo en un lenguaje de programacin se denomina codificacin, ya que el algoritmo escrito en un lenguaje especfico de programacin (lenguaje de alto nivel) se denomina cdigo. 5. Digitacin. Tras la codificacin del programa las instrucciones se convierten a un medio legible para la computadora; a igual procedimiento se someten los datos (en disquetes, cassettes, cintas, etc.), utilizando dispositivos como digitadoras o consolas. 6. - Compilacin o interpretacin del programa. En esta etapa la computadora chequea si todas las instrucciones estn escritas correctamente desde el punto de vista de la sintaxis y gramtica de cada lenguaje y las transcribe, dentro de la memoria, del lenguaje de alto nivel al lenguaje mquina para obtener el llamado programa objeto. 7. - Ejecucin del Programa. El programa objeto es ejecutado por la computadora para llegar a los resultados esperados, utilizando los dispositivos, unidades y memoria necesaria, segn cada caso o programa.

18

8. - Evaluacin de los resultados. Obtenidos los resultados se les evala para verificar que sean correctos. En caso contrario, se revisa en las etapas anteriores para detectar la falla o error, entrar a corregirla y reiniciar desde este punto los pasos para resolver de nuevo y en forma correcta el problema. Prueba de un algoritmo (EJEMPLOS) Ejemplo No. 1 Disee un algoritmo que dadas 4 calificaciones (Cal1, Cal2, Cal3, Cal4), calcule la calificacin promedio y escriba el resultado final junto con un mensaje explicativo. Anlisis del problema: Entrada: Leer las calificaciones individuales. Proceso: Calcular la calificacin promedio. Salida: Escribir resultado con mensaje explicativo.

19

Diagrama de flujo:

Pseudocdigo Inicio {Clculo del promedio de calificaciones} Leer Cal1, Cal2, Cal3, Cal4 Prom (Cal1+Cal2+Cal3+Cal4)/4 Escribir ("Resultado final es", Prom) Fin

20

Ejemplo No. 2 En cierto curso de computacin, la calificacin final del estudiante se determina a partir de su rendimiento en tres aspectos del trabajo anual. Existe una calificacin de la mitad del curso, que cuenta un 30% del total; el trabajo de laboratorio que lleva una calificacin, cuenta un 20% del total; y el examen final, cuenta el 50% restante. Disee un algoritmo que, dadas las calificaciones individuales, calcule la calificacin final, escriba la salida final proporcionando el nombre del estudiante, sus calificaciones individuales y la calificacin final. La variable se llama Final. Anlisis del problema: Calcular la calificacin final a partir de las calificaciones parciales Entrada: Lectura del nombre del estudiante, calificacin del laboratorio, calificacin de mitad del curso, calificacin del examen final. Salida: Nombre del estudiante, las tres calificaciones obtenidas y el promedio final, con comentarios correspondientes. Solucin del problema 1. Lectura del nombre del alumno y de sus calificaciones en cada una de las partes 2. Calculo e impresin de la calificacin final junto con el nombre del alumno

21

Variables: Nombre (para nombre del alumno) Cal_Lab (para la calificacin del laboratorio). Cal_mitcurso (para la calificacin de mitad del curso). Cal_ExaFin (para la calificacin del examen final). Final (para la calificacin final). 1. - Obtener los datos de entrada. Leer (Cal_Lab, Cal_mitcurso, Cal_ExaFin). 2. - Calcular la calificacin final. Final 0.20*Cal_Lab+0.30*Cal_mitcurso+0.50*Cal_ExaFin. 3. - Imprimir los resultados. 4. Termino. Algoritmo: Inicio Leer (Cal_Lab, Cal_mitcurso, Cal_ExaFin). Final 0.20*Cal_Lab+0.30*Cal_mitcurso+0.50*Cal_ExaFin. Escribir ("Nombre del alumno", Nombre). Escribir ("Calificacin de laboratorio", Cal_Lab). Escribir ("Calificacin de mitad del curso", Cal_mitcurso).

22

Escribir ("Calificacin del examen final", Cal_ExaFin). Escribir ("Calificacin final", Final). Fin. Del ejemplo anterior suponga que se dan los siguientes valores: Alberto Rodrguez, 72, 68, 65. Solucin: 0.20*72 = 14.4 0.30*68 = 20.4 0.50*65 = 32.5 suma = 67.3 Resultado: Nombre del alumno Alberto Rodrguez. Calificacin de laboratorio 72. Calificacin de mitad del curso 68. Calificacin del examen final 65. Calificacin final 67.3. Andrs Miramontes, 75, 75, 75. Solucin: 0.20*75 = 15.0

23

0.30*75 = 22.5 0.50*75 = 37.5 suma = 75.0 Resultado: Nombre del alumno Andrs Miramontes. Calificacin de laboratorio 75. Calificacin de mitad del curso 75. Calificacin del examen final 75. Calificacin final 75.0. Ejemplo No. 3 Dados tres nmeros, determine si la suma de cualquier pareja de ellos es igual al tercer nmero. Si se cumple esta condicin escribir "Iguales", y en caso contrario, escribir "Distintas". (Diagrama de flujo y pseudocdigo). Solucin: Suponga que los nmeros son: 396 la respuesta es "Iguales", ya que 3+6=9. Pero si los nmeros fueran: 234

24

El resultado ser "Distintas". Algoritmo de resolucin: 1. - Leer los tres valores, A, B y C. 2. - Si A+B=C escribir "Iguales" y parar. 3. - Si A+C=B escribir "Iguales" y parar. 4. - Si B+C=A escribir "Iguales" y parar. 5. - Escribir "Distintas" y parar. Diagrama de flujo:

25

Ejemplo No. 4 Escribir un algoritmo para calcular el rea de un tringulo dada la base y la altura. Solucin: Anlisis. La frmula geomtrica del rea o superficie de un tringulo es: A = (1/2)B*H B = base H = altura. variables: Base, Altura. Suponga que B = 4.5 H = 7.2. A = (1/2) 4.5 * 7.2 = 16.2.

26

Diagrama de flujo.

3.2 Estructura bsica de un programa. Un programa tiene una estructura bsica o general como una plantilla para realizar un programa. En general, un programa elaborado en C consta de las siguientes partes: Directivas al preprocesador. Definicin de tipos de datos. Declaracin de variables. Definicin de funciones.

Cualquier programa debe poseer una funcin, llamada main, que es la funcin que toma el control cuando se corre el programa.

27

1.-Comentarios. Un comentario son frases que no causan ningn efecto en el programa, son como anotaciones dentro del cdigo para ayudar a comprenderlo mejor. En C un comentario se pone despus de "//" (dos diagonales) si el comentario abarca una sola lnea, pero si el comentario abarca ms de una lnea se coloca al principio del prrafo un "/*" (diagonal asterisco) para indicar el inicio del comentario y al final del prrafo un "*/" (asterisco diagonal) para indicar el fin del comentario.

2.-Libreras. Las libreras en c son como su nombre lo dice como libreras en las cuales contienen las funciones, stas se incluyen con un #include < librera > y donde dice librera se pone el nombre de la librera. 3.-Declaracin de constantes. Aqu se ponen las constantes, se incluyen con un gato ms la palabra define (#define valor).

4.-Men principal. Todo el programa va dentro de main. Dentro de main

28

4.1.-Declaracin de variables Para declarar las variables hay que saber que existen varios tipos de datos: TIPO DE DATO--------------TAMAO-------------------RANGO void-------------------------vacio----------------------vacio int--------------------------16bits---------------------32,768 a 32,767 int long----------------------32bits---------------2,147,483,648 a 2,147,483,647 char-------------------------8bits--------------------128 a 127 float------------------------32bits-------------3.4 x 10-38 a 3.4 x 10+38 (decimales) Dentro de main 4.2.- Instrucciones Aqu van todas las instrucciones, hasta terminar tenemos que recordar que el main acaba EJEMPLO: con la llave de:}.

29

3.3 Tipos de datos

Datos son los hechos que describen sucesos y entidades. Datos es una palabra en plural que se refiere a ms de un hecho. A un hecho simple se le denomina data-tem o elemento de dato. Los datos son comunicados por varios tipos de smbolos tales como las letras del alfabeto, nmeros, movimientos de labios, puntos y rayas, seales con la mano, dibujos, etc. Estos smbolos se pueden ordenar y reordenar de forma utilizable y se les denomina informacin. Los datos son smbolos que describen condiciones, hechos, situaciones o valores. Los datos se caracterizan por no contener ninguna informacin. Un dato puede significar un nmero, una letra, un signo ortogrfico o cualquier smbolo que represente una cantidad, una medida, una palabra o una descripcin. La importancia de los datos est en su capacidad de asociarse dentro de un contexto para convertirse en informacin. Por si mismos los datos no tienen capacidad de comunicar un significado y por tanto no pueden afectar el comportamiento de quien los recibe. Para ser tiles, los datos deben convertirse en informacin para ofrecer un significado, conocimiento, ideas o conclusiones.

30

3.3.1 Datos estticos.


Casi todos los tipos de datos son estticos, la excepcin son los punteros. Que un tipo de datos sea esttico quiere decir que el tamao que ocupa en memoria no puede variar durante la ejecucin del programa. Es decir, una vez declarada una variable de un tipo determinado, a sta se le asigna un trozo de memoria fijo, y este trozo no se podr aumentar ni disminuir. La clasificacin de los tipos de datos estticos es la siguiente: Tipos simples. Tipos cadenas. Tipos estructurado. Tipos procedimiento (proceso).

3.3.1.1 Tipos de datos simples.

Es uno de los conceptos fundamentales de cualquier lenguaje de programacin. Estos definen los mtodos de almacenamiento disponibles para representar informacin, junto con la manera en que dicha informacin ha de ser interpretada.

31

Para crear una variable (de un tipo simple) en memoria debe declararse indicando su tipo de variable y su identificador que la identificar de forma nica. La sintaxis de declaracin de variables es la siguiente: Tipo Simple Identificador1, Identificador2; Esta sentencia indica al compilador que reserve memoria para dos variables del tipo simple con nombres Identificador1 e Identificador2. Los tipos de datos en Java pueden dividirse en dos categoras: simples y compuestos. Los simples son tipos nucleares que no se derivan de otros tipos, como los enteros, de coma flotante, booleanos y de carcter. Los tipos compuestos se basan en los tipos simples, e incluyen las cadenas, las matrices y tanto las clases como las interfaces, en general. Cada tipo de datos simple soporta un conjunto de literales que le pueden ser asignados, para darles valor. En este apartado se explican los tipos de datos simples (o primitivos) que presenta Java, as como los literales que soporta (sintaxis de los valores que se les puede asignar).

3.3.1.1.1 Tipos de datos enteros.


Un tipo de dato entero en computacin es un tipo de dato que puede representar un subconjunto finito de los nmeros enteros. El nmero mayor que puede representar depende del tamao del espacio usado por el dato y la posibilidad (o no) de representar nmeros negativos. Los tipos de dato entero disponibles y su tamao dependen del lenguaje de programacin usado as como la arquitectura en cuestin. Por ejemplo, si para almacenar un nmero entero disponemos de 4 bytes de memoria tememos que:

32

4 Bytes = 4x8 = 32 bits Con 32 bits se pueden representar 232=4294967296 valores: Slo positivos (enteros sin signo): del 0 al 4294967295 Positivos y negativos (enteros con signo): del -2147483648 al 2147483647

Tabla tipos enteros Tipo tinyint[(M)] smallint[(M)] mediumint[(M)] int[(M)] bigint[(M)] Espacio almacenamiento 1 byte 2 bytes 3 bytes 4 bytes 8 bytes Entero muy pequeo Entero pequeo Entero mediano Entero Entero grande de Significado

3.3.1.1.2 Tipos de datos en coma flotante (reales).


Se usan para representar nmeros con partes fraccionarias. Hay dos tipos de coma flotante: float y double. El primero reserva almacenamiento para un nmero de precisin simple de 4 bytes y el segundo lo hace para un nmero de precisin doble de 8 bytes.

33

Tabla: Tipos de datos numricos en coma flotante.

Literales en coma flotante. Representan nmeros decimales con partes fraccionarias. Pueden representarse connotacin estndar (563,84) o cientfica (5.6384e2). De forma predeterminada son del tipo double (8 bytes). Existe la opcin de usar un tipo ms corto (el tipo float de 4 bytes), especificndolo con una F f al final del nmero. La declaracin de variables de coma flotante es muy similar a la de las variables enteras. Por ejemplo: double miPi = 314.16e-2 ; // Aproximadamente float temperatura = (float)36.6; // Paciente sin fiebre Se realiza un moldeado a temperatura, porque todos los literales con decimales por defecto se consideran double.

34

3.3.1.1.3 Tipo de datos lgicos (boolean).

Se usa para almacenar variables que presenten dos estados, que sern representados por los valores true y false. Representan valores bi-estado, provenientes del denominado lgebra de Boole. Literales Booleanos. Java utiliza dos palabras clave para los estados: true (para verdadero) y false (para falso). Este tipo de literales es nuevo respecto a C/C++, lenguajes en los que el valor de falso se representaba por un 0 numrico, y verdadero cualquier nmero que no fuese el 0.Para declarar un dato del tipo booleano se utiliza la palabra reservada boolean: boolean recibo Pagado = false; // Aun no nos han pagado?! Nos sirven para mantener el estado de un objeto mediante dos valores:

Si/No. Cierto/Falso. Funciona/No funciona. On/Off.

35

Ejemplo:

3.3.1.1.4 Tipo de datos carcter.

En terminologa informtica y de telecomunicaciones, un carcter es una unidad de informacin que corresponde aproximadamente con un grafema o con una unidad o smbolo parecido, como los de un alfabeto o silabario de la forma escrita de un lenguaje natural. Un ejemplo de carcter es una letra, un nmero o un signo de puntuacin. El concepto tambin abarca a los caracteres de control, que no se corresponden con smbolos del lenguaje natural sino con otros fragmentos de informacin usados para procesar textos, tales como el retorno de carro y el tabulador, as como instrucciones para impresoras y otros dispositivos que muestran dichos textos (como el avance de pgina).

36

Histricamente, el trmino carcter ha sido usado ampliamente por los profesionales de la industria para referirse a un carcter codificado (expuesto a menudo slo mediante la API de un lenguaje de programacin). De igual forma, el trmino conjunto de caracteres (character set) ha sido usado generalmente para aludir a un repertorio especfico de caracteres abstractos que haban sido codificados mediante secuencias de bits especficas. Con la llegada de Unicode y los esquemas de codificacin independientes de los bits, una terminologa ms precisa est vindose cada vez ms favorecida. En algunos contextos es importante hacer la distincin de que un carcter es una unidad de informacin y por tanto no implica ninguna manifestacin visual particular. Por ejemplo, la letra hebrea lef ( )es usada a menudo por los matemticos para denotar ciertos tipos de infinito, pero tambin se usa en textos hebreos corrientes. En Unicode, ambos usos tienen caracteres diferentes a los que corresponden dos cdigos diferentes, aunque puedan ser representados exactamente igual. En cambio, el logograma chino para agua () puede tener una apariencia ligeramente diferente en textos chinos y japoneses, lo que puede verse reflejado en los tipos de letra locales, pero representan a pesar de ello la misma informacin, por lo que se consideran un nico carcter y como tal aparecen en Unicode. El trmino glifo se usa para describir una apariencia fsica particular de un carcter. Muchas tipos de letra de ordenador consisten en glifos indizados segn el cdigo Unicode del carcter al que cada uno de ellos representa. La definicin de carcter o carcter abstracto es, segn el estndar Unicode y el ISO/IEC 10646, un miembro de un conjunto de elementos usado para la organizacin, control o representacin de datos. La definicin de Unicode aade una serie de notas explicativas animando al lector a distinguir entre caracteres, grafemas y glifos, entre otras cosas. El estndar tambin distingue entre estos caracteres abstractos y los caracteres codificados que ya han sido emparejados con cdigos numricos para facilitar su representacin en sistemas informticos.

37

3.3.1.2 Tipos de datos cadena.

En programacin, una cadena de caracteres, palabra, ristra de caracteres o frase (string en ingls) es una secuencia ordenada de longitud arbitraria (aunque finita) de elementos que pertenecen a un cierto lenguaje formal o alfabeto anlogas a una frase o a una oracin. En general, una cadena de caracteres es una sucesin de caracteres (letras, nmeros u otros signos o smbolos). Desde un punto de vista de la programacin, si no se ponen restricciones al alfabeto, una cadena podr estar formada por cualquier combinacin finita de todo el juego de caracteres disponibles (las letras de la 'a' a la 'z' y de la 'A' a la 'Z', los nmeros del '0' al '9', el espacio en blanco ' ', smbolos diversos '!', '@', '%', etc). En este mismo mbito (el de la programacin), se utilizan normalmente como un tipo de dato predefinido, para palabras, frases o cualquier otra sucesin de caracteres. En este caso, se almacenan en un vector de datos, o matriz de datos de una sola fila (array en ingls). Las cadenas se pueden almacenar fsicamente:

Seguidas. Enlazados letra a letra.

Generalmente son guardados un carcter a continuacin de otro por una cuestin de eficiencia de acceso.

38

Un caso especial de cadena es la que contiene cero caracteres, a esta cadena se la llama cadena vaca; en teora de autmatas es comn denotar a la misma por medio de la letra griega .

3.3.1.3 Tipos de datos estructurados.

Los tipos de datos estructurados o tipos compuestos son agrupaciones de otros tipos de datos. Los tipos de datos estructurados ms comunes son: vectores y matrices (array), cadenas de caracteres (string).

3.3.1.3.1 Tipos de datos array.


Un dato de tipo array es, en realidad, un conjunto o estructura de datos que engloba una coleccin de datos del mismo tipo. Pueden ser unidimensionales, denominados tambin vectores o listas, o multidimensionales, denominados matrices o tablas. Los nmeros o valores que identifican a cada elemento particular del Array se llaman ndices.

39

El tamao reservado en memoria para una variable de tipo Array es igual al nmero total de elementos por el tamao del elemento, en bytes. As, mientras la variable vect1 del ejemplo anterior ocupa 4 elementos x 1 byte = 4 bytes, la variable matriz ocupa 10 x 10 elementos x 2 bytes = 200 bytes en la memoria durante la ejecucin del programa. Cuando se trabaja con datos de tipo Array (especialmente si son

multidimensionales) hay que tener cuidado con la cantidad de memoria que hay que reservar ya que se podra sobrepasar la memoria disponible. En principio, TurboPascal slo permite tipos de dato estructurados con un tamao mximo de 65520 bytes. Las dos siguientes declaraciones de tipos de dato son, por lo tanto, incorrectas: type vector = array[1..65536] of byte; vector2 = array[1..32800] of integer; Con los tipos de dato Array slo pueden utilizarse los operadores de asignacin y no pueden emplearse, como estructura completa con los procedimientos de entrada y salida de datos: Read/ReadLn o Write/WriteLn. Esto es independiente de las operaciones que puedan realizarse con cada uno de los elementos que componen la variable array, si lo permite el tipo de dato correspondiente.

3.3.1.3.2 Tipo de datos string.


Los tipos de datos cadena String son secuencia de caracteres que puede llegar a tener una longitud mxima de 255. Cada carcter de esta cadena ocupa un byte en memoria, y la cadena ocupa tantos Bytes como caracteres le hayan asignado.

40

Las cadenas se pueden definir del tamao que se necesite. El comportamiento de los String es similar al de los arreglos. Nombre := 'Pedro Prez'; La anterior cadena tiene 11 caracteres, por tanto va a ser una variable que ocupa11 Bytes en memoria. Una variable de tipo cadena al ser definida en la seccin de variables se le est asignando un tamao fijo en cuanto al nmero mximo de caracteres que puede almacenar en un momento determinado. Ejemplo para lenguaje pascal: VAR Nom : String[20]; Dir : String; Ejemplo para lenguaje C: Char nom[10]; Cuando se define de tipo String y se restringe el nmero de caracteres, en el caso de nom tan solo a 20, se est indicando al compilador que dentro del programa, mximo se le debe asignar una cadena de 20 caracteres o menos. Si un usuario asigna ms de lo que se estableci, simplemente se desechan los caracteres que sobren a la derecha. En el caso de la segunda definicin (Dir), no se est restringiendo su tamao por tanto es una variable que puede almacenar el mximo de caracteres para variables de este tipo (255); Vale anotar que durante la ejecucin de un programa se puede modificar la longitud de la variable tipo String.

41

3.3.1.3.3 Tipo de datos registro (record).


Un tipo record o registro permite definir una estructura que almacena un conjunto de datos del mismo o de distintos tipos (excepto File). Los datos individuales se conocen como campos del registro y se declaran como variables cuando se define el tipo de registro. A cada uno de los campos se le asigna un identificador al realizar la declaracin, no pudiendo existir dos identificadores de campo iguales dentro del mismo registro. El tamao de una variable de tipo Record es la suma de los tamaos de sus campos. As, la variable cumple del ejemplo anterior ocupa 1 + 1 + 2 = 4 bytes en memoria durante la ejecucin del programa. La estructura tipo Record permite la introduccin de campos variantes, que aparecen o no en una variable de ese tipo, en funcin del valor de un cierto campo. En general, los registros variantes tendrn una parte fija, que se declara en primer lugar, y otra variante. La principal ventaja de este tipo de estructura es el ahorro de memoria, ya que el espacio ocupado por una variable de este tipo es la suma del tamao de la parte fija y el tamao de la parte variante ms grande. El campo de seleccin puede ser cualquier variable de tipo ordinal.

3.3.2 Tipos de datos dinmicos.


Aquellos datos cuya estructura puede variar a lo largo de la ejecucin de un programa se denominan tipos de datos dinmicos. La variacin de la estructura puede ser nicamente en el nmero de elementos, como en el caso de una cadena de caracteres, o tambin en la relacin entre ellos, como podra ser el caso de un rbol sintctico.

42

Los tipos de datos dinmicos pueden ser almacenados en estructuras de datos estticas, pero al tratarse de un conjunto de datos, tienen que ser vectores, o bien de forma menos habitual, matrices multidimensionales. En caso de almacenar las estructuras de datos dinmicas en estructuras estticas, es recomendable comprobar si se conoce el nmero mximo y la cantidad media de datos que puedan tener. Si ambos valores son parecidos, se puede emplear una variable de vector esttica o automtica. Si son muy diferentes, o bien se desconocen, es conveniente ajustar el tamao del vector al nmero de elementos que haya en un momento determinado en la estructura de datos y, por lo tanto, almacenar el vector en una variable de carcter dinmico. Las estructuras de datos dinmicas se almacenan, por lo comn, empleando variables dinmicas. As pues, puede verse una estructura de datos dinmica como una coleccin de variables dinmicas cuya relacin queda establecida mediante apuntadores. De esta manera, es posible modificar fcilmente tanto el nmero de datos de la estructura (creando o destruyendo las variables que los contienen) como la propia estructura, cambiando las direcciones contenidas en los apuntadores de sus elementos. En este caso, es habitual que los elementos sean tuplos y que se denominen nodos.

3.3.2.1 Tipo de datos punteros.


Los punteros son de amplia utilizacin en programacin y muchos lenguajes permiten la manipulacin directa o indirecta de los mismos. La razn de ser principal de los punteros reside en manejar datos alojados en la zona de memoria dinmica o heap (aunque tambin se pueden manipular objetos en la zona esttica), bien sean datos elementales, estructuras (struct en C) u objetos pertenecientes a una clase (en lenguajes Orientados a Objetos). Gracias a esta propiedad, los punteros permiten modelar un grafo, en donde los elementos de

43

ste son los datos residentes en memoria y las relaciones entre los elementos son los propios apuntadores. En nuevos lenguajes de alto nivel, los punteros se han tratado de abstraer. De tal forma que en el lenguaje C# slo pueden ser usados en zonas de cdigo delimitadas como "inseguras", o llegando a su total desaparicin del cdigo en lenguajes como Java o Eiffel. Que no estn en el cdigo no implica que no existan: internamente, la Mquina Virtual Java trata todas las variables que referencian objetos como punteros a zonas de memoria que realmente contienen los objetos. Esto puede causar ciertos efectos laterales si no se tiene en cuenta. De hecho, no es descabellado pensar que Java est utilizando punteros si cuando uno accede a una propiedad de un objeto no inicializado es lanzada la excepcin NullPointerException.

3.4 Identificadores.
Los identificadores (IDs) son smbolos lxicos que nombran entidades. El concepto es anlogo al de "nombre". Los identificadores se usan ampliamente en prcticamente todos los sistemas de procesamiento de la informacin. Nombrar las entidades hace posible referirse a las mismas, lo cual es esencial para cualquier tipo de procesamiento simblico. 3.4.1 Identificadores en lenguajes informticos. En los lenguajes informticos, los identificadores son elementos textuales (tambin llamados smbolos) que nombran entidades del lenguaje. Algunas de las de entidades que un identificador puede denotar son las variables, las constantes, los tipos de dato, las etiquetas, las subrutinas (procedimientos y funciones) y los paquetes.

44

En muchos lenguajes algunas secuencias tienen la forma lxica de un identificador pero son conocidos como palabras clave (o palabras reservadas). Lo habitual es que si un identificador se corresponde con una palabra clave o reservada, ste ya no pueda utilizarse para referirse a otro tipo de entidades como variables o constantes (en unos pocos lenguajes, como PL/1, esta distincin no est del todo clara). Los lenguajes informticos normalmente ponen restricciones en qu caracteres pueden aparecer en un identificador. Por ejemplo, en las primeras versiones de C y C++, los identificadores estn restringidos para que sean una secuencia de una o ms letras ASCII, dgitos numricos (que en ningn caso deben aparecer como primer carcter) y barras bajas. Las versiones posteriores de estos lenguajes, as como otros muchos ms lenguajes modernos soportan casi todos los caracteres Unicode en un identificador. Una restriccin comn es que no est permitido el uso de espacios en blanco ni operadores del lenguaje. En lenguajes de programacin compilados, los identificadores generalmente son entidades en tiempo de compilacin, es decir, en tiempo de ejecucin el programa compilado contiene referencias a direcciones de memoria y offsets ms que identificadores textuales (estas direcciones de memoria u offsets, han sido asignadas por el compilador a cada identificador). En lenguajes interpretados los identificadores estn frecuentemente en tiempo de ejecucin, a veces incluso como objetos de primera clase que pueden ser manipulados y evaluados libremente. En Lisp, stos se llaman smbolos. Los compiladores e intrpretes normalmente no asignan ningn significado semntico a un identificador basado en la secuencia de caracteres actual. Sin embargo, hay excepciones. Por ejemplo:

45

En Perl una variable se indica utilizando un prefijo llamado sigil, que especifica aspectos de cmo se interpreta la variable en las expresiones.

En Ruby una variable se considera automticamente como inmutable si su identificador empieza con una letra mayscula.

En Fortran, la primera letra de una variable indica si por defecto es creada como entero o como flotante.

Los identificadores son los nombres dados a los programas, constantes, variables y otras entidades de un programa.

3.4.2 Reglas de nomenclatura para los identificadores. Los nombres de los identificadores pueden llevar caracteres alfa-numricos. Letras de la A a la Z excluyendo la que no vale L. Y todos los nmeros. Si es obligatorio que el nombre del identificador empiece por una letra y no un nmero u otro signo. Los identificadores solo aceptan el signo _ (guin bajo-subrayado), por tanto quedan excluidos otros como el signo de interrogacin, los parntesis, etc. Tampoco podremos usar como identificadores las palabras reservadas de un lenguaje, palabras tales como: if, else, goto, etc. El nmero de caracteres de un identificador nunca debe sobrepasar los 31. Algunos compiladores solo reconocen los 8 primeros caracteres de los identificadores. Esto ya depende del potencial del compilador. Recordemos que en C se distinguen entre maysculas y minsculas con lo cual es distinto un identificador tal como, Suma que otro como suma. (Por convenio se ha decidido que los identificadores estn escritos en minsculas).

46

Lgicamente a la hora de dar nombre a una variable o constante, utilizaremos identificadores que nos hagan referencia o semejanza al dato que almacenan. Con lo que si necesitamos una variable para almacenar la cadena de caracteres: Hola, seria conveniente llamar o identificar esta variable como saludo y no como x. Los nombres de variables y constantes o sea los identificadores es adecuado que si su valor almacenado tiene relacin unos con otros, los nombres de los identificadores tambin tengan esa relacin (de forma lxica). Con todo esto lo que quiero decir es que nunca escatimemos en el tiempo de bsqueda para dar nombre a una variable o constante. Si le damos un nombre cualquiera luego al repasar el cdigo todo nos resultara mas confuso. Palabras reservadas. Hay ciertos indicadores, identificadores o palabras llamadas palabras reservadas (valga la redundancia) que no se pueden usar como identificadores, puesto que ya son usadas por el propio lenguaje para una finalidad determinada. Estas palabras son por lo general en ingles, lo bueno es que no hace falta tener mucho nivel de ingles para comprenderlas. Algunas de estas palabras son: auto, break, case, char, const, continue, default, do, double, else, enum, extern, flota, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while. Definiendo variables. Una vez vista toda la teora apliqumoslo a la prctica. Int suma. Long float resultado. Char letra.

47

1: En el primer caso estamos definiendo una variable de tipo entero (int). O sea una variable que almacenara un dato numrico entero, sin decimales. Dicha variable es identificada por el nombre suma (su identificador). 2: En el segundo de los casos, definimos una variable de tipo de coma flotante o lo que es lo mismo decimal y a dems le atribuimos el cualificador long lo que hace que sea una variable de tipo decimal larga, esto hace que su rango numrico aumente. Y su nombre o identificador es: resultado. 3: En el tercer y ltimo caso definimos una variable de tipo carcter, y esta almacenara un carcter. Su ID es: letra.

3.4.3 Variables.
Magnitud que puede tomar diferentes valores y se representa con una letra o letras. La variable real es el conjunto de los nmeros reales, y se puede representar por cualquier letra o conjunto de letras y nos sirve para poder utilizar dicha letra para clculos o para obtener resultados. Ejemplo: A=2 y B=5.5 y se desea calcular C, la cual se calcula C=2A+B^2 Por tanto C= 2(2)+(5.5^2)=34.25 Clasificacin de variables: Variables reales, todos los nmeros. Variables enteras, nmeros enteros. Variable natural, enteros positivos. Variable primos, nmeros divisibles entre 1 y s mismo. Variable alfanumrica, utiliza texto.

48

Cuando el conjunto de los nmeros es arbitrario la variable se llama variable independiente o simplemente variable.

Cuando los valores del conjunto dependen, mediante una cierta correspondencia, de los valores de otro conjunto, se llama variable dependiente o funcin.

Dentro de los programas se manejan: Entera corta: Integer, 32768 a 32767. Entera larga: Long. Decimal sencillo: Single. Decimal doble: Double.

Alfanumrica: String, 0 a 65535 bytes. 3.4.4 Constantes.


Es el trmino que no contiene la o las variables. En la fsica pueden distinguirse 2 tipos de constante: las que dependen de ciertas condiciones determinadas, y las que expresan relaciones absolutamente generales e invariables y no estn sujetas a ninguna otra condicin, como la gravedad (9.8 M/S) o la constante universal de Newton 6.7x10^-11 Nm^2/kg^2. En la definicin de constantes se introducen identificadores que sirven como sinnimos de valores fijos. El identificador reservado Const debe encabezar la instruccin, seguido por una lista de asignaciones de constantes. Cada asignacin de constante debe consistir de un identificador seguido por un signo de igual y un valor constante, como se muestra a continuacin:

49

Const valor_maximo =255; precision =0.0001; palabra_clave='Tutankamen'; encabezado =' NOMBRE DIRECCION TELEFONO '; Un valor constante puede consistir de un nmero ( entero o real ), o de una constante de caracteres. La constante de caracteres consiste de una secuencia de caracteres encerrada entre apstrofes ( ' ), y, en Turbo-Pascal, tambin puede formarse concatenndola con caracteres de control ( sin separadores ), por ejemplo : 'Teclee su opcin ==>'^G^G^G; Esta constante sirve para desplegar el mensaje: Teclee su opcin ==> Y a continuacin suena el timbre tres veces. Las constantes de caracteres pueden estar formadas por un solo carcter de control, por ejemplo: hoja_nueva = ^L Existen dos notaciones para los caracteres de control en Turbo Pascal, a saber: El smbolo # seguido de un nmero entero entre 0 y 255 Representa el carcter al que corresponde dicho valor decimal en el codigo ASCII.

50

El smbolo ^ seguido por una letra, representa el correspondiente carcter de control. 3.5 Proposicin de asignacin. La estructura de esta proposicin es la siguiente: A:=B; En donde A es el nombre (sin signo) de una variable previamente declarada y B es una expresin algebraica. La asignacin o reemplazo se indica con el operador:=, para diferenciarlo del operador =, el cual se utiliza para definir constantes o para estructurar expresiones de relacin de orden. Expresin algebraica: Es una expresin resultante de la combinacin de variables, de funciones y/o constantes, a travs de operadores aritmticos. Los operadores aritmticos definidos en Pascal, son los siguientes: + * / Suma Resta Multiplicacin Divisin

Ejemplo de un programa que nicamente utiliza proposiciones de asignacin: PROGRAM PRUEBA; TYPE X = REAL; VAR XX,YY : X; BEGIN XX:=5; YY:=SQRT(XX)+2; END. encabezado. define descriptor X como datos reales. declara las variables XX,YY de tipo X. inicia bloque de proposiciones. fin de programa.

51

Este programa es redundante al definir el descriptor de datos X, ya que se est definiendo de tipo REAL y REAL directamente, podra utilizarse como descriptor, tal y como se muestra en la siguiente versin del programa: PROGRAM PRUEBA; VAR XX,YY : REAL; BEGIN XX:=5; YY:=SQRT(XX)+2; END. Finalmente, observe en estos dos ejemplos la existencia de los tres bloques que constituyen un programa Pascal, as como el uso del carcter punto y coma (;) como finalizador de proposiciones. 3.6 Operadores, operandos y expresiones. Expresiones Una expresin es cualquier conjunto vlido de literales, variables, operadores y expresiones que se evalan como un nico valor; el valor puede ser un nmero, una cadena o un valor lgico (booleano). Conceptualmente, hay dos tipos de expresiones: las que asignan un valor a una variable y las que simplemente tienen un valor. Por ejemplo, la expresin x = 7 es una expresin que asigna a x el valor 7. Esta expresin se evala como siete. Dichas expresiones usan operadores de asignacin. Por otra parte, la expresin 3 + 4 simplemente se evala como siete; no se realiza ninguna asignacin. Los operadores usados en dichas expresiones se les llaman simplemente operadores. JavaScript tiene los siguientes tipos de expresiones:

Aritmticas: se evalan como un nmero, por ejemplo 3.14159. (Generalmente usan Operadores aritmticos.)

52

De cadena: se evalan como una cadena de caracteres, por ejemplo, "Fred" o "234". (Generalmente usan Operadores de cadena de caracteres (string).)

Lgicas: se evalan como verdadero o falso. (A menudo emplean Operadores lgicos.)

De objeto: se evalan como un objeto. (Ver Operadores especiales para varios que evalan objetos.) Operadores Un operador es el smbolo que determina el tipo de operacin o relacin que habr de establecerse entre los operando para alcanzar un resultado, se clasifican en tres grupos: Aritmticos. Relacionales. Lgicos. Operadores Aritmticos Son aqullos que permiten la realizacin de clculos aritmticos. Utilizan operando numricos y proporcionan resultados numricos.

+ Suma. - Resta. * Multiplicacin. / Divisin Entera. Div Divisin Entera. Mod Residuo. ^ Exponenciacin.

Todos los operadores aritmticos no existen en todos los lenguajes de programacin, por ejemplo, en Fortran no existen Div y Mod

El smbolo / se utiliza para la divisin real, y el operador Div representa la divisin entera.

53

Operadores Relacionales. Permiten realizar comparaciones de valores de tipo numrico o carcter, estos operadores sirven para expresar las condiciones en los algoritmos y proporcionan resultados lgicos.

Operador nombre < > == != <= >= menor que mayor que igual a no igual a menor que o igual a mayor que o igual a

ejemplo a<b a>b a==b a!=b a<=5 a>=b

significado a es menor que b a es mayor que b a es igual a b a no es igual a b a es menor que o igual a b a es menor que o igual a b

Operadores de asignacin. Un operador de asignacin asigna un valor a su operando izquierdo basndose en el valor de su operando derecho. El operador bsico de asignacin es el igual (=), el cual asigna el valor de su operador derecho a su operador izquierdo. Esto es, x=y asigna el valor de y a x. Operadores de asignacin
= += -= *= /= %=

Asignacin Suma y asignacin Resta y asignacin Multiplicacin y asignacin Divisin y asignacin Mdulo y asignacin

a=b a += b (a=a + b) a -= b (a=a - b) a *= b (a=a * b) a / b (a=a / b) a % b (a=a % b)

54

Operadores de comparacin. Un operador de comparacin compara sus operando y devuelve un valor lgico en funcin de si la comparacin es verdadera. Los operando pueden ser valores numricos, de cadena de caracteres, lgicos u objetos. Las cadenas se comparan basndose en el orden lexicogrfico estndar, usando los valores Unicode. Si dos operando no son del mismo tipo, JavaScript intentar convertir los operando a un tipo apropiado para la comparacin, excepto para los operando === y !==. Esto acostumbra a resultar en una comparacin numrica. La siguiente tabla describe los operadores de comparacin.

Operador Igual (==)

Descripcin

Ejemplos que devuelven verdadero1

Devuelve true si los operandos son iguales.

Devuelve true si los operandos no son iguales. Igual estricto Devuelve true si los operandos son (===) iguales y del mismo tipo. Distinto estricto Devuelve true si los operandos no son (!==) iguales y/o no son del mismo tipo. Devuelve true si el operando izquierdo es Mayor que (>) mayor que el derecho. Mayor o igual Devuelve true si el operando izquierdo es que (>=) mayor o igual que el derecho. Menor que (<) Devuelve true si el operando izquierdo es menor que el derecho. Menor o igual Devuelve true si el operando izquierdo es que (<=) menor o igual que el derecho. Distinto (!=)

3 == var1 "3" == var1 3 == '3' var1 != 4 var2 != "3" 3 === var1 var1 !== "3" 3 !== '3' var2 > var1 "12" > 2 var2 >= var1 var1 >= 3 var1 < var2 "12" < "2" var1 <= var2 var2 <= 5

Operadores aritmticos. Los operadores aritmticos toman valores numricos (tanto literales como variables) como operando y devuelven un nico valor numrico. Los operadores

55

aritmticos estndar son el de suma (+), el de resta (-), el de multiplicacin (*) y el de divisin (/). Estos operadores trabajan igual que en la mayora de lenguajes de programacin, excepto el operador / que devuelve la divisin real (de coma flotante), no la divisin entera como sucede en C o en Java. Operadores lgicos. Los operadores lgicos son generalmente empleados con valores lgicos (booleanos); estos operadores devuelven un valor booleano. Sin embargo, los operadores && y || realmente devuelven el valor de uno de sus operando, por esto si se emplean con valores no booleanos, podran devolver un valor no booleano. Operadores de cadena de caracteres (string). Adems de los operadores de comparacin, los cuales pueden ser empleados con los valores de cadena, el operador de concatenacin (+) concatena dos valores de cadenas juntos, retornando otra cadena que es la unin de los dos operando de tipo cadena. Por ejemplo, "mi " + "cadena" retorna la cadena "mi cadena". El operador abreviado de asignacin += tambin puede usarse para concatenar cadenas. Por ejemplo, si la variable mi cadena tiene el valor "alfa", la expresin mi
cadena += "beto"

se evala como "alfabeto" y asigna este valor a mi cadena.

3.6.1 Prioridad de operadores, evaluacin de expresiones. Determina el orden en que habrn de realizarse las operaciones en una expresin determinada. Para obtener la prioridad se deben conocer las siguientes reglas: Las operaciones que estn encerradas entre parntesis se evalan primero. Si existen diferentes parntesis anidados (interiores unos a otros), las expresiones ms internas se evalan primero.

En caso de coincidir varios operadores de igual prioridad en una expresin o subexpresin encerrada entre parntesis, el orden de prioridad en este caso es de izquierda a derecha.

56

Cuando se desea realizar una operacin con baja prioridad por adelantado, debe agruparse a los operando involucrados. Los parntesis tienen prioridad sobre el resto de las operaciones. Determina el orden en que habrn de realizarse las operaciones en una expresin determinada.

1. 2. 3. 4. 5. 6. 7. 8.

() ! + - ++ -- (donde + y - son operadores unarios) */% + - (donde + y - son operadores binarios) < <= > >= =< => == != && ||

57

Glosario.
Finito: Que tiene fin, trmino, lmite. Dgito binario: es la unidad mnima de almacenamiento o informacin aplicada en la informtica. Un dgito binario est representado por un 0 o un 1, que tambin ambos constituyen el sistema de numeracin binario. Ensamblador: Lenguaje muy similar al de mquina, con pequeas modificaciones mnemotcnicas que facilitan su uso. Es de nivel inmediatamente superior al de mquina. Mnemotcnicos: Que sirve para auxiliar a la memoria. Programa ejecutable: Programa que ha sido traducido a cdigo mquina en un formato que puede cargarse en la memoria y ejecutarse. Error: Accin desacertada o equivocada. Variable: Magnitud que puede tener un valor cualquiera de los comprendidos en un conjunto. Trmino: ltimo momento de la duracin o existencia de algo. Editor: Aplicacin que se utiliza para editar archivos informticos. BASIC: Siglas de Beginner's All-purpose Symbolic Instruction Code, es una familia de lenguajes de programacin de alto nivel. Esttico. Que permanece en un mismo estado y no experimenta cambios. Puntero. Es una variable que referencia una regin de memoria. Sintaxis. Conjunto de reglas que definen las secuencias correctas de los elementos de un lenguaje de programacin.

58

Div: es el resultado de una divisin entre 2 nmeros, si la variable donde se guarda este resultado es declarada como entero, entonces solo se guardara la parte entera del resultado (no la decimal). Mod: es el residuo de la divisin entre 2 nmeros. Operadores: es un smbolo matemtico que indica que debe ser llevada a cabo una operacin especificada sobre un cierto nmero de operando. Operando: es una de las entradas (argumentos) de un operador. Unicode: es un estndar de codificacin de caracteres diseado para facilitar el tratamiento informtico, transmisin y visualizacin de textos de mltiples lenguajes y disciplinas tcnicas adems de textos clsicos de lenguas muertas. El trmino Unicode proviene de los tres objetivos perseguidos: universalidad, uniformidad y unicidad. Compilador. Programa que convierte el lenguaje informtico empleado por el usuario en lenguaje propio del computador. Literal. Conforme a la letra del texto, o al sentido exacto y propio, y no lato ni figurado, de las palabras empleadas en l. Carcter. Es una unidad de informacin que corresponde aproximadamente con un grafema o con una unidad o smbolo parecido, como los de un alfabeto o silabario de la forma escrita de un lenguaje natural. Identificador. Son smbolos lxicos que nombran entidades. Unicode. Es un estndar de codificacin de caracteres diseado para facilitar el tratamiento informtico, transmisin y visualizacin de textos de mltiples lenguajes y disciplinas tcnicas adems de textos clsicos de lenguas muertas. El trmino Unicode proviene de los tres objetivos perseguidos: universalidad, uniformidad y unicidad

59

Fuentes Consultadas.

http://es.scribd.com/doc/50195809/15/Tipos-de-datos-simples http://es.wikipedia.org/wiki/Tipo_de_dato http://teleformacion.edu.aytolacoruna.es/PASCAL/document/tipos.htm http://es.wikipedia.org/wiki/Car%C3%A1cter_%28tipo_de_dato%29 http://es.scribd.com/doc/4079447/27/TIPOS-DE-DATOS-STRING http://es.scribd.com/Infolliure/d/519125/53-Tipos-de-datos-dinamicos http://es.wikipedia.org/wiki/Identificador

60

También podría gustarte