Descargar

Pascal: Instrucciones y tipos de datos simples

Enviado por Pablo Turmero


Partes: 1, 2, 3

    edu.red

    Title: Pascal, un lenguaje de programación Other Placeholder: En este tema estudiamos aspectos comunes a muchos lenguajes de programación Prácticamente todos los lenguajes que siguen el paradigma imperativo (= dar órdenes al ordenador) Por estudiar un lenguaje concreto usaremos Pascal que, como dijimos, es un lenguaje apropiado para aprender ¿Cómo podemos explicar Pascal? De manera informal (lo habitual al principio) De manera formal (usando BNF, EBNF o diagramas sintácticos para describir la sintaxis del lenguaje, por ejemplo)

    edu.red

    Forma básica de un programa en Pascal

    Datos deentrada Datos desalida Algoritmo program nombre-programa; const idCte1 = valor1; … idCteN = valorN; var lista-variables1 : tipo1; … lista-variablesM : tipoM; begin sentencia1; … sentenciaK-1; sentenciaK end. Sección de declaración de datos Sección de código(programa principal)

    edu.red

    Forma básica de un programa en Pascal Ej: Programa que convierte un valor expresado en pulgadas, proporcionado por el usuario a través de teclado, en el equivalente expresado en centímetros y lo muestra por pantalla

    Implementación del algoritmo en Pascal program conversion; const centPorPulg = 2.54; var pulgadas, cent: real; begin writeln('¿Longitud?'); readln(pulgadas); cent:= pulgadas * centPorPulg; writeln('En cms:', cent) end. Datos de entrada Pulgadas Datos de salida Centímetros Algoritmo Obtención del valor expresado en pulgadas Conversión al valor equivalente Visualización del valor equivalente

    edu.red

    program conversion; const centPorPulg = 2.54 ; var pulgadas , cent : real ; begin writeln ( '¿Longitud?' ); readln ( pulgadas ); cent:= pulgadas * centPorPulg; writeln ( 'En cms:' , cent ) end. (Gp:) Palabrasreservadas

    (Gp:) Identificadoresnormales

    (Gp:) Identificadorespredefinidos (Gp:) Identificadorespredefinidos

    (Gp:) Literales

    edu.red

    Uso del espacio “en blanco” y de los comentarios Los elementos léxicos (que marcábamos con colores antes) pueden separarse por un número cualquiera de espacios en blanco, saltos de línea y tabuladores El espacio dejado a la izquierda de cada línea (indentación) no tiene significado para la máquina El objetivo de estos “arreglos en el formato” es simplemente hacer más legibles los programas para otros programadores En cualquier parte del programa el programador puede escribir comentarios para explicar su código Si son de una sola línea basta con comenzarlos por // Si son varias líneas deben ir entre (* y *) necesariamente // Conversor PulgCent, por Federico Peinado.(* Este programa convierte un número de pulgadas a su equivalente en centímetros. Ha sido escrito por Federico Peinado. *) ¡Los comentarios ayudan a documentar bien nuestro trabajo!

    edu.red

    (********************************** Este programa convierte pulgadas a centímetros. Por Federico Peinado **********************************)program conversion; const centPorPulg = 2.54; var pulgadas, cent: real; begin writeln('¿Longitud?'); readln(pulgadas); cent:= pulgadas * centPorPulg; writeln('En cms:', cent) end. program conversion; const centPorPulg = 2.54; var pulgadas,cent:real; begin writeln('¿Longitud?');readln(pulgadas); cent:= pulgadas * centPorPulg; writeln('En cms:', cent) end. Mismo programa, pero… ¿qué formato es más cómodo de leer?

    edu.red

    Datos de un programa Todos los datos tienen: Identificador Nombre simbólico que se usa para representar el dato Identifica de forma legible las celdas de memoria donde está guardado el dato Tipo El tipo de los valores que puede tener el dato Ej: Números enteros, números reales, cadenas de texto… Clasificación como Constante o Variable Constante, si el valor del dato no cambia nunca en ningún momento de la ejecución del programa Variable, si el valor del dato cambia o puede cambiar en algún momento de la ejecución del programa

    edu.red

    Un identificador es un nombre para un dato concreto Si el valor de ese dato no cambia nunca, el identificador es una constante Si el valor de ese dato puede cambiar durante la ejecución del programa, el identificador será una variable Los identificadores deben ser autoexplicativos Ej: numero_alumnos está bastante claro Ej: nx6 no hay quien lo entienda Sintaxis en EBNF: Identificador ::= Letra {[Subrayado] Letra | Dígito} Letra ::= “a” | “b”| … | “z” | “A” | “B”| … | “Z” Dígito ::= “0” | “1” | … | “9” Subrayado ::= “_”

    Identificadores en Pascal

    edu.red

    Identificadores en Pascal Resumen informal de la sintaxis de un identificador de Pascal: No puede ser un número solo Ha de empezar necesariamente por una letra La ñ no es una letra válida, ni las vocales con tildes o con diéresis (se usa solamente el alfabeto inglés) No puede acabar en subrayado (_), ni puede haber dos subrayados seguidos (__) Y por supuesto… ¡no puede ser una palabra reservada! Identificadores predefinidos en Pascal, por ejemplo program

    La longitud de los identificadores en teoría no tiene límite Pascal no distingue entre letras mayúsculas y minúsculas NUMEntero, numEntero, numENTERO… ¡todos hacen referencia exactamente al mismo dato! No puede haber identificadores con nombres repetidos dentro de un mismo bloque de programa, para evitar confusiones

    edu.red

    Identificadores en Pascal ¿Los siguientes son identificadores válidos en Pascal?

    pulgadas cent valido

    2veces salu2 duda?

    x x_ x_a

    edu.red

    Datos cuyo valor no cambia a lo largo de la ejecución del programa

    Tipos de constantes en Pascal Literales: se usan “a pelo” en el programa, sin identificador ‘Longitud’ 2.54 ‘a’ true Constantes con nombre: llevan un identificadorpi = 3.1416

    La sentencia const de Pascal anuncia que se van a declarar e inicializar las constantes con nombre del programa program conversion; const centPorPulg = 2.54; …

    Constantes

    edu.red

    Sintaxis de la sección de declaración de constantes en Pascal SeccionConstantes ::= [ “const” DefCte “;” { DefCte “;” }] DefCte ::= Identificador “=” Valor Identificador ::= No terminal que ya hemos descrito antes…

    Valor ::= Ventero | Vreal | Vcaracter | Vbooleano | Cadena | [Signo] Identificador Ventero ::= [Signo] Digito {Digito} Signo ::= “+” | “-” Vreal ::= Fnormal | Fcientifico Fnormal ::= [Signo] Pentera “.” Pdecimal Pentera ::= Digito {Digito} Pdecimal ::= {Digito} Fcientifico ::= Fnormal “E” Signo Pentera Vbooleano ::= “true” | “false” Vcaracter ::= “ ’ ” Car “ ’ ” Car ::= “a” | “b”| … | “z” | “A” | “B”| … | “Z” | “ ” | “?” | … Cadena ::= “ ’ ” {Car} “ ’ ”

    edu.red

    ¿Este es un ejemplo válido de declaración de constantes? const pi = 3.1416; centPorPulg = 2.54; iva = 0.16; dolar = ‘$’; cinco = 5; max = 100; min = -max; mensaje = ‘Error’; El tipo de una constante se decide de manera automática al inicializarse, según el tipo del dato que reciba Por ejemplo cinco será de tipo entero e iva será de tipo real Constantes

    edu.red

    Variables Datos cuyo valor cambia o puede cambiar a lo largo de la ejecución del programa

    La sentencia var de Pascal anuncia que se van a declarar las variables del programa program conversion; const centPorPulg = 2.54; var pulgadas, cent: real; …

    edu.red

    SeccionVariables ::= [ “var” DefVar “;” {DefVar “;”}] DefVar ::= Identificador { “,” Identificador} “:” Tipo Identificador ::= No terminal que ya hemos descrito antes… Tipo ::= “integer” | “real” | “char” | “boolean” | DefinidoPorUsuario

    Sintaxis de la sección de declaración de variables en Pascal var pulgadas, cent: real; letra: char; valido: boolean; base: integer; altura: integer; (Gp:) Lo explicaremos en el Tema 5

    edu.red

    program conversion; const centPorPulg = 2.54; var pulgadas, cent: real; begin … end.

    Situación de constantes y variables en memoria

    edu.red

    La cadena 01110010 puede ser… … un número entero (¿el primer bit representa el signo?) … un número real (¿dónde estaría la coma y la parte decimal?) … un carácter textual (¿en que tipo de codificación?) … un valor booleano (¿sólo es significativo el último bit?) ¡Para programar hay que saber qué significan esos 0’s y 1’s!

    Asignar un tipo a un dato es una manera de indicar: Cuál es la interpretación correcta de las cadenas de 0’s y 1’s Qué rango de posibles valores puede tomar el dato Cuáles son las operaciones posibles sobre dicho dato Los lenguajes de alto nivel, como Pascal, tienen una fuerte comprobación de tipos para evitar que el programador use los datos de manera incorrecta, sin tener en cuenta sus tipos Ej: No te deja multiplicar un número entero por un carácter textual

    Representación interna de los datos en memoria

    Partes: 1, 2, 3
    Página siguiente