Download Apendice3_2009
Document related concepts
Transcript
Cátedra de Computación Apéndice 3: Expresiones, fórmulas y formatos para escritura Apéndice 3: Expresiones, fórmulas, funciones predefinidas y formatos para la escritura en el lenguaje Pascal 1 – Expresiones y operadores Pascal incluye los siguientes tipos de expresiones, de acuerdo con los operadores que intervienen en las mismas: - aritméticas - relacionales - lógicas y - carácter (o cadena de caracteres) A continuación se describen los operadores básicos, los resultados que se obtienen de su aplicación y el orden de precedencia para un correcto funcionamiento. 1.1- Operadores aritméticos básicos Los operadores aritméticos (+, -, *) pueden ser utilizados con tipos enteros o reales. Si ambos son enteros, el resultado es entero; si alguno de ellos es real, el resultado es real. Ejemplo: 2+5 =7 2+5.0 =7.0 2.0+5 =7.0 2.0+5.0=7.0 El operador / produce un resultado de tipo real, independientemente del tipo de los operandos. Ejemplo: 7/2 =3.5 7.0 / 2 =3.5 7.0 / 2.0 =3.5 Los operadores mod y div sólo pueden utilizarse con números enteros. El operador div calcula el cociente entero de la división de dos números enteros, y el operador mod calcula el resto de dicha división. Formato: a div b a mod b con a y b enteros, y b0 con a y b enteros, y b0 Ejemplo: 7 div 2 = 3 7 mod 2 = 1 7 1 2 3 Resultado de div Resultado de mod Existe una diferencia entre el Álgebra tradicional y cuando se opera con un a<0. Veamos un ejemplo: Para el álgebra -5 2 +6 -3 1 Para Pascal -5 2 +4 -2 -1 COMPUTACION – Apéndice3 1 Cátedra de Computación Apéndice 3: Expresiones, fórmulas y formatos para escritura -8 +9 1 -3 3 -8 +6 -2 -3 +2 Algebraicamente, el resto de una división tiene que ser siempre positivo, mientras que acá puede no serlo. Otros ejemplos: 3 3 -5 -5 Expresión div mod div mod -1 -1 2 2 Resultado -3 0 -2 -1 Expresión -3 div -3 mod -2 div -2 mod -8 -8 7 7 Resultado 2 -2 -3 1 1.2 - Operadores de relación Los operadores de relación (o relacionales) se utilizan para expresar condiciones y describen una relación entre dos valores. El resultado de una expresión relacional es de tipo lógico (boolean), es decir devuelve un valor Verdad (TRUE) o Falso (FALSE). Los operadores relacionales son: =(igual) <>(distinto) >(mayor) <(menor) <=(menor o igual) >=(mayor o igual) Los operandos pueden ser del tipo escalar (numérico, char o boolean) o cadena de caracteres (con la misma longitud) Ejemplos: Expresión 6.3< 6.3 7>=7 5+4 < 2*4 ‘A’<‘B’ ‘abc’=‘abc’ 2<8 = 5>6 Resultado FALSE TRUE FALSE TRUE TRUE FALSE 1.3 - Operadores lógicos: Las expresiones lógicas pueden combinarse para formar expresiones más complejas utilizando los operadores lógicos: and (conjunción), or (disyunción) y not (negación). Las expresiones lógicas devuelven un valor de tipo booleano. Los dos valores standard tipo Boolean están definidos por los identificadores TRUE y FALSE. Los operadores booleanos de conjunción, disyunción y negación están representados en la siguiente tabla, donde p y q representan dos operandos lógicos. p q p and q p or q not p TRUE TRUE FALSE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE TRUE TRUE TRUE FALSE FALSE FALSE TRUE TRUE Ejemplos: Expresión (3<4) and (4=4) (1<=0) or (3>5) not (3=3) Resultado TRUE FALSE FALSE COMPUTACION – Apéndice3 2 Cátedra de Computación Apéndice 3: Expresiones, fórmulas y formatos para escritura 1.4 - Operador carácter: El Pascal permite concatenar caracteres (o cadena de caracteres) utilizando el operador de concatenación (+). Ejemplos: Expresión ‘z’+’z ‘hola’+’que’+ ‘tal’ Resultado ‘zz’ ‘holaquetal’ A continuación se muestra una tabla con los conceptos explicados: OPERADORES ARITMETICOS * / div mod + RELACIONALES = <> < > <= >= LOGICOS not and or CARACTER + OPERACION TIPOS de OPERANDOS multiplicación reales, enteros división reales, enteros div.entera enteros módulo (resto de la enteros división) suma reales, enteros resta reales, enteros TIPO de RESULTADO real, entero real entero entero real, entero real, entero escalares, cadena de caracteres booleano negación conjunción disyunción booleano booleano booleano booleano booleano booleano concatenación caracter , cadena de caracteres cadena de caracteres 1.5 - Prioridad de operadores Cuando el lenguaje evalúa una expresión de más de dos operandos, sigue las siguientes reglas para encontrar el valor del resultado: OPERADOR not *, /, div, mod, and +, -, or <,<=,=,<>,>=,< PRIORIDAD 1ra (Más alta , se evalúa primero) 2da 3ra 4ta (Más baja, se evalúa último) Todas las expresiones entre paréntesis se evalúan primero. Si hay paréntesis anidados, se evalúan de adentro hacia afuera (la expresión encerrada en el paréntesis interior se evalúa primero). Los operadores en una misma expresión con igual nivel de prioridad (tal como * y / ) se evalúan de izquierda a derecha. 2 – Estructura de las fórmulas matemáticas en Pascal En Pascal, las fórmulas matemáticas se deben escribir en una línea. Esto obliga al uso frecuente de paréntesis, para su correcta evaluación. Ejemplos: Fórmulas matemáticas a = bc b2 – 4ac Expresión Pascal a := b * c b*b-4*a*c COMPUTACION – Apéndice3 3 Cátedra de Computación Apéndice 3: Expresiones, fórmulas y formatos para escritura m= x-y xy m:=(x-y)/(x+y) 3 – Funciones predefinidas El lenguaje Pascal incluye un número determinado de funciones estándar predefinidas que se encuentran ya incorporadas y no necesitan ser declaradas y codificadas en el programa. Se hallan disponibles funciones matemáticas, funciones de cadenas y otras específicas que permiten resolver problemas numéricos, de simulación, estadísticos, números de bytes ocupados por los argumentos, etc. A continuación se describen las funciones predefinidas más utilizadas: 3.1 - Funciones aritméticas y trigonométricas. Nombre Abs(x) ArcTan(x) Cos(x) Exp(x) Frac(x) Int(x) Ln(x) Round(x) Sin(x) Sqr(x) Sqrt(x) Trunc(x) Pi Tipo del argumento Real o Integer Real o Integer Real o Integer Real o Integer Real Real Real o Integer Real o Integer Real o Integer Real o Integer Real o Integer Real no posee Resultado el valor absoluto del argumento el arco tangente del argumento el coseno del argumento el exponencial del argumento la parte decimal del argumento la parte entera del argumento el logaritmo natural del argumento el entero más próximo al argumento el seno del argumento el cuadrado del argumento la raíz cuadrada del argumento la parte entera del argumento 3.1415926535897932385 Tipo del resultado Real o Integer Real Real Real Real Real Real Integer Real Real Real Integer Real Nota 1: El argumento de las funciones trigonométricas está expresado en radianes. Nota 2: No existe operador exponencial en Pascal. Para calcular x a la i-ésima potencia, se emplea : exp(i*ln(x)) 3.2 - Funciones ordinales Función Resultado Ord(x) devuelve el número ordinal correspondiente al argumento. Chr(x) devuelve el carácter en el código ASCII correspondiente al argumento Succ(x) devuelve el sucesor del argumento, produce error si no tiene sucesor Pred(x) devuelve el predecesor del argumento. Nota: El argumento de las funciones ordinales es de tipo ordinal así como su resultado. 3.3 - Funciones especiales Función de paridad Odd(x) Odd verifica si el argumento de la función es un número impar. Recibe un argumento entero y devuelve un resultado lógico (el resultado es True si x es impar y False si x es par). Función Random [ (n) ] Random genera números aleatorios. El argumento es opcional. Si no existe, la función devuelve un número aleatorio real entre 0 y 1. Si existe, la función devuelve un número entero aleatorio entre 0 y n -1. La sentencia Randomize La primera vez que Random se ejecuta, Pascal genera, resolviendo operaciones matemáticas muy complejas, una serie de números aleatorios a partir de un número inicial denominado semilla. Cada semilla genera una serie diferente. Esto significa que las series se repetirán cada vez que el programa se ejecute, a menos que cambie el valor de la semilla. COMPUTACION – Apéndice3 4 Cátedra de Computación Apéndice 3: Expresiones, fórmulas y formatos para escritura La sentencia Randomize es la encargada de reinicializar la semilla y debe ejecutarse antes de llamar a la función Random. 3.4 - Funciones de cadenas de caracteres: Además de las funciones predefinidas para el tratamiento de cadena de caracteres que se describen a continuación, existen procedimientos predefinidos que hacen que el tratamiento de las cadenas sea muy versátil. Por su utilidad se anexan en esta tabla. Función Concat (S1...Sn) Length (S) Pos (S1, S2) Argumentos Si: cadenas de caracteres S: cadena de caracteres S1 y S2: cadenas de caracteres Copy (S, p, n) S: cadena de caracteres n y p : números enteros Procedimiento Delete (S,p,n) Argumentos S: cadena de caracteres p y n : expresiones enteras C y S: cadenas de caracteres p: expresión entera Insert (C,S, p) Descripción Concatena las Si Proporciona la longitud lógica de S Devuelve la posición donde comienza la cadena S1 en la cadena S2; si no existe, devuelve el valor 0. Devuelve la cadena de longitud n extraída de la cadena S a partir de la posición p . Descripción Borra de la cadena S a partir de la posición p, n caracteres Inserta en la cadena S, a partir de la posición p, la cadena C 4 – Escritura con formato Turbo Pascal permite controlar en cierta medida las instrucciones de salida que presentan resultados. Es posible especificar el número de posiciones del campo de escritura. Para los números reales se puede precisar la cantidad de decimales deseada . Writeln(ítem : ancho); Ancho es una expresión entera que especifica la cantidad de caracteres total del campo en que se escribe el ítem Writeln(expresión real : ancho: dígitos); Ancho es una expresión entera que especifica la cantidad total de dígitos del número real (contando parte entera, punto decimal y dígitos decimales) Dígitos es una expresión entera que especifica la cantidad de decimales con que se escribirá el número real. Ejemplos: S A L I D A C O L U MN A S a:= 3.456 ; b:=8 ; Write(a: 8:2) ; Write(b:10) ; Write(a:2:4) ; 1 2 3 4 5 6 7 8 9 10 3 . 4 5 8 3 . 4 5 6 0 COMPUTACION – Apéndice3 5