SlideShare una empresa de Scribd logo
1 de 133
Descargar para leer sin conexión
Tema 1. Elementos básicos de Pascal
Oriol Borrás Gené @oriolUPM
Introducción a la programación
Curso 2018/19
Tema 1.
Elementos básicos
de Pascal
Índice:
1.1. Introducción y conceptos de programación.
1.2. Tipos de datos básicos.
1.3. Elementos básicos de Pascal. Tipos de
datos definidos por el programador.
1.4. La documentación del programa.
1.5. Normas de estilo.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Informática o Computer Science
“Conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento
automático de la información por medio de computadores”.
Computador u ordenador
Máquina electrónica, analógica o digital que bajo el control de uno o más
programas, de forma automática acepta y procesa datos, efectuando operaciones
lógicas y aritméticas con ellos hasta proporcionar unos datos de salida que serán
la solución a un problema dado.
Oriol Borrás Gené @oriolupm
Hardware y Software
Hardware (soporte físico)
Conjunto de componentes físicos (cables, circuitos, etc.)
que integran un computador. Ej.: Placa base, disco duro,
tarjeta gráfica, etc.
Software (soporte lógico)
Conjunto de programas que encontramos en un
computador.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Esquema de un computador
CPU
(Unidad Central
de Proceso)
DISPOSITIVOS
DE ENTRADA
DISPOSITIVOS
DE SALIDA
MEMORIA
PROGRAMA
DATOS
ENTRADA DATOS
SALIDA
Teclado
Ratón
Escáner
...
Monitor
Impresora
Altavoz
...
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Arquitectura de Von Neumann (1945)
● Arquitectura de diseño para un
computador digital electrónico
● CPU:
○ Unidad Aritmético-Lógica
○ Unidad de control
● Memoria
● Dispositivos de E/S
Fuente:
https://frikosfera.wordpress.com/2015/02/2
7/que-es-la-arquitectura-von-neumann/
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
¿Qué es programar?
Proporcionar un conjunto de instrucciones a un ordenador mediante un lenguaje de
programación que “entienda”.
¿Qué es un programa?
Conjunto ordenado de instrucciones entendible por un computador y tienen el
objetivo de resolver un problema.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
¿Qué es programar? (fases)
1.1. Introducción y conceptos de programación
Solución de un problema
(Programa)
Análisis
del
problema
Definir el
problema
Identificar
datos de
entrada
Identificar
datos de
salida
Diseño y
verificación
del
algoritmo
Codificación
del
algoritmo
Ejecución
del
programa
Diseño
descendente
Refinamiento
por pasos
Herramientas programación:
● Diagramas de flujo
● Pseudocódigo
Prueba del
programa
Resultados General -> particular
Oriol Borrás Gené @oriolupm
¿Qué es un programa?
Programa = Algoritmos + Estructuras de datos
Algoritmo
Secuencia precisa de pasos y operaciones que permiten obtener unos resultados a
partir de unos datos.
Estructuras de datos
Elementos que utilizamos para guardar datos en memoria. Ej.: Variables.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
PROGRAMAENTRADA SALIDA
1.1. Introducción y conceptos de programación
¿Qué es un programa?
Oriol Borrás Gené @oriolupm
Características de los algoritmos:
● Precisos (no ambiguo) en cuanto a:
○ Orden (secuencia de pasos)
○ Contenido (qué se realiza en cada paso)
● Deterministas, responder siempre igual ante las mismas condiciones
● Finitos
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Aspectos deseables de los algoritmos:
● Generalidad: de solución al mayor tipo de problemas posible.
● Eficiencia, menor número de pasos posible
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Lenguajes algorítmicos
Permiten describir un algoritmo sin ser tan formales como un lenguaje de
programación (serán más genéricos) y más precisos que el lenguaje natural.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Diagramas de flujo
Fuente:
https://es.wikipedia.org
/wiki/Archivo:Graf_algo
_bisiesto.PNG
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Pseudocódigo
Programa: TablaMultiplicar
Inicio
Escribir ‘Introduce un número’
Leer num
InicioDesde
Desde t=1 hasta t=10 repetir
hacer total = num*t
Escribir: total
finDesde
Fin
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
¿Qué son los datos?
Un dato es cualquier información codificada de forma que pueda ser aceptada y
procesada por un ordenador.
La información se almacena en la memoria de la computadora en formato binario:
1 0
Un dígito binario o bit es la unidad más pequeña y fundamental de información.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
1 Byte = 8 bits
1 Kilobyte (KB) = 210
bytes = 1024 bytes ~103
bytes
1 Megabyte (MB) = 210
KB = 220
bytes = 1048576 bytes ~106
bytes
1 Gigabyte (GB) = 210
MB = 230
bytes = 1073741824 bytes ~109
bytes
1 Terabyte (TB) = 210
GB = 240
bytes ~1012
bytes
1 Petabyte (PB) = 210
TB = 250
bytes ~103
bytes
1 Exabyte (EB) = 210
PB = 260
bytes ~103
bytes
1 bit = 0 ó 1
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
A partir de los datos binarios (0 y 1) con los que trabajan las computadoras
podremos codificarlos en diferentes formatos.
Código binario
Cada dígito tiene distinto valor dependiendo de la posición que ocupe. El valor de
cada posición es el de una potencia de base 2, elevada a un exponente igual a la
posición del dígito menos uno.
2 (n-1)
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Código binario
Dígito-> X X X X
Posición (n) -> 4 3 2 1
Valor (2 (n-1)
)-> 8 4 2 1
● Posición n = 1 (dígito = 1 y valor = 2 (1-1)
= 2 0
= 1) -> 1*1
0 1 0 1● Posición n = 2 (dígito = 0 y valor = 2 (2-1)
= 2 1
= 2) -> 0*2
Dígito * Valor
● Posición n = 3 (dígito = 1 y valor = 2 (3-1)
= 2 2
= 4) -> 1*4
● Posición n = 4 (dígito = 0 y valor = 2 (4-1)
= 2 4
= 8) -> 0*8
= 5
Ejemplo: Valor en decimal del número en binario 0101
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Conversiones de formatos:
● Decimal:
○ Sin signo
○ Signo-magnitud
○ Complemento a 2
○ Exponente desplazado
● BCD (Binary Code Decimal)
● Hexadecimal
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Lenguajes de programación
Son un conjunto de caracteres, reglas para combinarlos y reglas que especifican
sus efectos cuando se ejecuta por un ordenador.
Están diseñados para representar los algoritmos de forma que el ordenador los
entienda.
Son lenguajes artificiales y más formales, rigurosos a la par que simples en su
sintaxis y semántica frente al lenguaje natural.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Lenguaje o código máquina
Es el sistema de códigos hexadecimales directamente interpretable por la
computadora que representan instrucciones, registros de la CPU, direcciones de
memoria o datos.
● Lenguaje de bajo nivel
● Es difícil de programar
● Depende de cada máquina
Ejemplo: A0 2F (instrucción) -> acceder a la celda de memoria 2F
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Lenguaje ensamblador
Conjunto de mnemónicos que representan instrucciones básicas para la
computadora.
Estos mnemotécnicos nos ofrecen una mayor legibilidad de lo que se ejecuta y
están asociados a los códigos hexadecimales que interpreta la computadora
(lenguaje máquina). Ej.: A0 -> READ.
● Lenguaje de nivel medio
● Más sencillo de programar
● Depende de cada máquina
Ejemplo: READ 2F (instrucción) ->
acceder a la celda de memoria 2F
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Lenguaje de alto nivel
Son más cercanos al lenguaje natural y matemático, siendo más legibles.
Características:
● Sintaxis
● Semántica
● Traducción y ejecución
● Tipos de errores
FORTRAN
ALGOL Lisp
COBOL APL
SIMULA
BASIC Prolog
C Pascal Scheme Modula Ada
C++ Perl Python Ruby Java
PHP C#
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Sintaxis
Conjunto de reglas que determinan cómo se construyen y secuencian los
elementos del lenguaje.
Especificación de la sintaxis:
● Notación BNF (Backus-Naur)
● Diagramas sintácticos
Ejemplo BNF
<registry expression> ::= <Add Key>
(Registry expression es equivalente a Add
Key)
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Diagrama sintáctico
1.1. Introducción y conceptos de programación
Sintaxis
Conjunto de reglas que determinan cómo se construyen y secuencian los
elementos del lenguaje.
Especificación de la sintaxis:
● Notación BNF (Backus-Naur)
● Diagramas sintácticos
Oriol Borrás Gené @oriolupm
Semántica
Indica el significado de cada elemento del lenguaje (para qué sirve).
Traducción y ejecución
Es necesario traducir el programa (código fuente) escrito en lenguaje de alto nivel a
lenguaje máquina que entienda la computadora (código objeto), se hará mediante
un programa denominado compilador.
COMPILADOR
CÓDIGO FUENTE
(programa en alto nivel)
CÓDIGO OBJETO
(lenguaje máquina)
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Traducción y ejecución
Normalmente existen más partes de programa en otros ficheros objeto, mediante
un programa enlazador juntaremos todos los ficheros en uno que pueda ejecutarse.
CÓDIGO OBJETO ENLAZADOR PROGRAMA EJECUTABLE
OTROS CÓDIGOS
OBJETO
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Evolución de los lenguajes de programación
Existen una serie de motores que impulsan la evolución hacia nuevos lenguajes de
programación:
● Abstracción
● Encapsulación
● Modularidad
● Jerarquía
● + comprensión
● + legibilidad
● + fácil mantenimiento
● - coste
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Paradigmas de programación
Definen un conjunto de reglas, patrones y estilos de programación usados por un
grupo de lenguajes de programación.
Existen cuatro grandes paradigmas: funcional, lógico, imperativo o procedural y
orientado a objetos.
No existe una separación estricta entre paradigmas y lenguajes de programación.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Paradigma funcional
La computación se realiza mediante la evaluación de expresiones:
● Definición de funciones
● El valor generado por una función depende exclusivamente de los argumentos
alimentados a la función
● Programación declarativa
● Ej.: LISP, Scala, Scheme.
Se especifican un conjunto de condiciones, proposiciones,
afirmaciones, restricciones, ecuaciones o transformaciones
que describen el problema. La solución es obtenida mediante
mecanismos internos de control, sin especificar exactamente
cómo encontrarla.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Paradigma lógico
La computación se basa en la definición de relaciones lógicas, modelando los
problemas con enunciados de lógica de primer orden:
● Definición de reglas
● Programación declarativa
● Ej.: Prolog, Mercury, Oz. No se listan los pasos a llevar a cabo
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Paradigma imperativo
Se caracteriza por tener un estado implícito que es modificado mediante
instrucciones o comandos del lenguaje:
● Definición de procedimientos
● Definición de tipos de datos
● Ejecución secuencial
● Cambio de estado de variables
● Ejemplos: Pascal, Basic, C.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Paradigma orientado a objetos
El comportamiento del programa es llevado a cabo por objetos (variables y
funciones), se basa en la programación imperativa:
● Definición de clases y herencia
● Objetos como abstracción de datos y procedimientos
● Ejemplos: Java, Python, C++.
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Ingeniería del software
“Aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el
desarrollo, operación y mantenimiento del software” (IEEE, 1993).
PLANIFICACIÓN
ANÁLISIS
DISEÑO
PROGRAMACIÓN
PRUEBA Y DEPURACIÓN
MANTENIMIENTO
Determinar necesidades, recursos, presupuesto, tiempos, ...
¿Qué? definir funciones por módulo, trabajo conjunto de los módulos,
criterios de validación, redactar especificaciones, ...
¿Cómo? Diseño módulos, dividir en tareas, asignar tareas a equipos de
trabajo
Codificar en el lenguaje elegido
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Historia de Pascal
Creado por Niklaus Wirth en 1970 para facilitar a sus
alumnos el aprendizaje de la programación estructurada.
Su nombre se debe al matemático y filósofo francés
Blaise Pascal inventor de la primera máquina de calcular.
Fuente:
https://es.wikipedia.org/wiki/Blaise_Pascal#/media/Fil
e:Arts_et_Metiers_Pascaline_dsc03869.jpg
Evolución de la versión inicial o estándar de Pascal a la extendida con TurboPascal y
otras como Delphi (orientada a objetos).
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Características de Pascal
● Lenguaje de alto nivel
● Propósito general
● Paradigma imperativo
● Estructurado (datos y control)
● Modular
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
¿Por qué Pascal?
1.1. Introducción y conceptos de programación
● Objetivo: pensamiento computacional
● Cómo aprendemos a leer
● JAVA: ¿y si usáramos Twitter para aprender a leer?
Diferencias entre C y Pascal:
http://compu-monse.blogspot.com.es/2012/05/diferencias-entre-lenguaje-c-y-lenguaje.html
Oriol Borrás Gené @oriolupm
Errores en un programa
● Errores de compilación: impiden al compilador generar el ejecutable por algún
error de sintaxis, de tipo, etc.
● Errores de ejecución: se producen cuando se ejecuta el programa y este deja
de funcionar en algún momento.
● Errores lógicos: el programa se ejecuta pero los resultados no son los
esperados.
BUG
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
¿Qué es programar? (fases)
1.1. Introducción y conceptos de programación
Solución de un problema
(Programa)
Análisis
del
problema
Definir el
problema
Identificar
datos de
entrada
Identificar
datos de
salida
Diseño y
verificación
del
algoritmo
Codificación
del
algoritmo
Ejecución
del
programa
Diseño
descendente
Refinamiento
por pasos
Herramientas programación:
● Diagramas de flujo
● Pseudocódigo
Prueba del
programa
Resultados General -> particular
Errores de
compilación
Errores de
ejecución
Errores
lógicos
Herramientas programación:
● Diagramas de flujo
● Pseudocódigo
Oriol Borrás Gené @oriolupm
Pseudocódigo
● Definir primero el problema: datos de entrada y salida
● Siempre tiene un Inicio y un fin
● Se suelen usar verbos de acción: leer, escribir, asignar, …
● No es necesario definir las variables (se citan en la definición del problema
como datos)
● No hay que seguir normas de léxico de programación: “;”, “for”, “while”, ...
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Pseudocódigo
1. Analizar y definir el problema: datos de entrada y salida
2. Diseñar el algoritmo
a. Inicio y fin
b. Subdividir el proceso en pasos
c. Precisar todos los pasos
1.1. Introducción y conceptos de programación
Más información y ejemplos:
https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=213:conceptos-d
e-algoritmos-pseudocodigo-y-diagramas-de-flujo-una-introduccion-cu00123a&catid=28&Itemid=59
Oriol Borrás Gené @oriolupm
Pseudocódigo (ejercicio 0)
¿Cuál sería el algoritmo para la acción de colgar un cuadro?
1. Analizar y definir el problema
● Datos de entrada:
● Datos de salida:
1.1. Introducción y conceptos de programación
Cuadro, martillo y un clavo.
Cuadro colgado
Oriol Borrás Gené @oriolupm
Pseudocódigo (ejercicio 0)
¿Cuál sería el algoritmo para la acción de colgar un cuadro?
2. Diseñar
1.1. Introducción y conceptos de programación
Algoritmo ColgarCuadro
Inicio
Fin
Elegir ubicación
Apoyar el clavo en la pared y golpear con el
martillo hasta que se quede bien clavado
Colgar el cuadro
Oriol Borrás Gené @oriolupm
Pseudocódigo (ejercicio 1)
Desarrollar un algoritmo que calcule el volumen de aire que contiene una pelota,
perfectamente esférica, a partir de un valor del radio aportado por el usuario.
1. Analizar y definir el problema
● Datos de entrada: radio de la esfera
● Datos de salida: volumen de la esfera
1.1. Introducción y conceptos de programación
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Pseudocódigo (ejercicio 1)
2. Diseñar
Algoritmo Vesfera
Radio, volumen : Real
Inicio
Escribir ("Escriba el valor del radio de la esfera" )
Leer (Radio)
Volumen ← 4/3 * π * radio^3
Escribir ("El volumen de la esfera es", Volumen)
Fin
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Pseudocódigo (ejercicio 2)
Desarrollar un algoritmo que detecte si un número dado es positivo o negativo.
1. Analizar y definir el problema
● Datos de entrada: número
● Datos de salida: mensaje indicando si el número es
positivo o negativo
1.1. Introducción y conceptos de programación
Oriol Borrás Gené @oriolupm
Pseudocódigo (ejercicio 2)
2. Diseñar
Algoritmo Detectar
a : Entero
Inicio
Escribir ("Escriba un número" )
Leer (a)
Si a>= 0 entonces
Escribir (“El número es positivo”)
Sino
Escribir (“El número es negativo”)
Fin
Oriol Borrás Gené @oriolupm
Pseudocódigo: ejercicio
Definir un algoritmo para una receta sencilla de cocina, indicando:
● Datos de entrada/salida
● Diseño (pseudocódigo)
1.1. Introducción y conceptos de programación
1.2. Tipos de datos básicos
Oriol Borrás Gené @oriolupm
Un dato es cualquier información codificada de forma que pueda ser aceptada
y procesada por un ordenador.
En Pascal hay datos básicos o simples (predefinidos/definidos por el usuario)
y datos estructurados (definidos por el usuario), estos últimos son: arrays,
cadenas de caracteres, registros, archivos, etc.
1.2. Tipos de datos básicos
Oriol Borrás Gené @oriolupm
Datos básicos
Un dato es cualquier información codificada de forma que pueda ser aceptada y
procesada por un ordenador.
Los datos básicos también se conocen como predefinidos o estándar:
● Enteros: integer
● Real: real
● Carácter: char
● Booleano: boolean
1.2. Tipos de datos básicos: enteros
Oriol Borrás Gené @oriolupm
Tipo integer (definición)
● Dominio (incluye enteros positivos o negativos)
● Para definirlo se utiliza la palabra integer
● Acotado por la constante predefinida MaxInt
● En Turbo Pascal (2 bytes) su valor es 65536 -> {-32768 … 32767}
● Sin espacios ni puntos, el signo precede al número
● Posibilidad de desbordamiento
Entero sin signo
Dígito
16 bits -> 216
= 65536 valores
1.2. Tipos de datos básicos: enteros
Oriol Borrás Gené @oriolupm
Otros tipo entero:
● Sin signo:
○ Byte (1 byte) -> 0 .. 255
○ Word (2 byte) -> 65535
● Con signo:
○ Shortint (1 byte) -> -128 .. 127
○ Integer (2 byte) -> -32768 .. 32767
○ Longint (4 byte) -> -2147483648 ..2147483647
Ejemplo almacén
1.2. Tipos de datos básicos: enteros
Tipo integer (operaciones)
+ (suma) x → (Ej.: 2+5 → 7)
- (resta) x → (Ej.: 3-6 → -3)
* (multiplicación) x → (Ej.: 4*5 → 20)
div (división) x → (Ej.: 10/3 → 3)
mod (resto de la división entera) x → (Ej.: 10/3 → 1)
Oriol Borrás Gené @oriolupm
- (cambio de signo) → (Ej.: -2)
1.2. Tipos de datos básicos: enteros
Tipo integer (funciones)
abs (valor absoluto). Ej.: abs(-3) → 3
sqr (cuadrado). Ej.: sqr(9) → 81
pred (predecesor). Ej.: pred (-5) → -6; pred (5) → 4
succ (sucesor). Ej.: succ (-5) → -4; succ (4) → 5
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos: enteros
Tipo integer (expresiones)
Entendemos por expresión entera como la combinación de números, operaciones,
y/o funciones cuyo resultado tras evaluarlas es un entero.
Precedencias:
1. ()
2. Funciones
3. *. div ,mod
4. +, -
Oriol Borrás Gené @oriolupm
2 + 3 * 5
1º2º
= 2 + 15 = 17
4 + 2 * 7 + sqr (2) = 4 + 2*7 + 4 = 4 + 14 + 4 = 22
(4 + 2) * 7 + sqr (2) = 6*7 + sqr(2)= 6 * 7 + 4
= 42 + 4 = 46
1.2. Tipos de datos básicos: enteros
Tipo integer (expresiones)
Entendemos por expresión entera como la combinación de números, operaciones,
y/o funciones cuyo resultado tras evaluarlas es un entero.
Precedencias:
1. ()
2. Funciones
3. *. div ,mod
4. +, -
Oriol Borrás Gené @oriolupm
4 div 2 * 2 = 4
Asociatividad de izquierda a derecha
1.2. Tipos de datos básicos: reales
Tipo real (definición)
● Dominio ℝ (incluye valores numéricos con parte decimal)
● Para definirlo se utiliza la palabra real
● Intervalo acotado (6 bytes):
○ Comprendido entre 士2.9*10-39
y 1.7*10+38
○ Precisión entre 11 y 12 cifras
● Representación:
○ Usando punto decimal (ej.: -2.4, 4.034, -0.45)
○ Notación científica (ej.: 7.93E+25)
● Posibilidad de desbordamiento y de error de redondeo
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos: reales
Oriol Borrás Gené @oriolupm
Otros tipo real:
○ Single (4 byte) -> -1.5*1045
.. 3.4*1038
■ Precisión: 7 y 8 cifras
○ Real (6 byte)
○ Double (8 byte) -> -5.0*10324
.. 1.7*10308
■ Precisión: 15 y 16 cifras
○ Extended...
No abusar de los tipos de datos de gran tamaño hacen al sistema más lento y
ocupan mucha memoria
1.2. Tipos de datos básicos: reales
Oriol Borrás Gené @oriolupm
Tipo real (definición)
Real sin signo
Dígito
Cifras
1.2. Tipos de datos básicos: reales
Oriol Borrás Gené @oriolupm
Tipo real (operaciones)
+ (suma) ℝ x ℝ → ℝ (Ej.: 0.5+5.3 →5.8)
- (resta) ℝ x ℝ → ℝ (Ej.: 2.5-1.5 → 1.0)
* (multiplicación) ℝ x ℝ → ℝ (Ej.: 4.1*5.2 → 21.32)
/ (división) ℝ x ℝ→ ℝ (Ej.: 10.4/3.5 → 2.9714)
- (cambio de signo) ℝ → ℝ (Ej.: -5.8)
1.2. Tipos de datos básicos: reales
ln (logaritmo neperiano)
exp (función exponencial)
Oriol Borrás Gené @oriolupm
Tipo real (funciones)
abs (valor absoluto)
sqr (cuadrado)
sqrt (raíz cuadrada)
sin (seno)
cos (coseno)
arctan (arcotangente)
Ángulo en radianes Base e
1.2. Tipos de datos básicos: reales
Tipo real (expresiones)
Entendemos por expresión entera como la combinación de números, operaciones,
y/o funciones cuyo resultado tras evaluarlas es un real.
Precedencias:
1. ()
2. Funciones
3. *, /
4. +, -
Oriol Borrás Gené @oriolupm
Asociatividad de izquierda a derecha
1.2. Tipos de datos básicos: reales
Tipo real (expresiones)
A partir de las funciones que nos ofrece Pascal y mediante expresiones podremos
llegar a otras funciones matemáticas habituales
Función Expresión equivalente
xy
exp (y * ln (x)) para x > 0
tg (x) sin (x) /cos (x) para x ≠ π/2 + kπ
arcsen (x) arctan (x/sqrt(1-sqr(x)) para 0 < x < 1
Logb
(x) ln (x) / ln (b) para b>1, x>0
Oriol Borrás Gené @oriolupm
Logb
(X) = Ln (X) / Ln (b)
1.2. Tipos de datos básicos: reales
Oriol Borrás Gené @oriolupm
Sobrecarga de operadores y funciones
Se pueden utilizar tanto con enteros como reales:
● +, - y *
● abs y sqr
1.2. Tipos de datos básicos: reales
Oriol Borrás Gené @oriolupm
Conversión de tipos (inter y real)
● ⊂ ℝ, por lo tanto x ℝ → ℝ
● Conversión automática de a ℝ (ej.: 8 * 2.4 = 19,2)
● Funciones de conversión de ℝ a :
○ trunc (x): devuelve la parte entera de x
○ round (x): redondea x al entero más próximo
Ejemplo:
round (5.9)=6 mientras que trunc (5.9)=5
1.2. Tipos de datos básicos: Caracteres
Tipo char (definición)
● Dominio C (juego de caracteres disponibles en la computadora)
● Intervalo acotado: juego de caracteres ASCII de 8 bits (256 caracteres), 1 byte
● Se escribe entre apóstrofes ´
Ejemplo:
´A´, ´h´, ‘@’
● Excepción: el carácter apóstrofe se escribe doble entre apóstrofes
´´´´
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos: Caracteres
Oriol Borrás Gené @oriolupm
Tipo char (tabla códigos ASCII en Pascal)
Fuente: https://es.wikipedia.org/wiki/ASCII
1.2. Tipos de datos básicos: Caracteres
Oriol Borrás Gené @oriolupm
Tipo char (operaciones y funciones)
+ (concatenación de caracteres). Ej.: ´a´+ ´b´= ´ab´
pred (carácter anterior en la tabla ASCII) C → C
succ (carácter siguiente en la tabla ASCII) C → C
1.2. Tipos de datos básicos: Caracteres
Funciones de conversión de tipos (integer y char)
ord (nº orden ASCII del carácter) C→
chr (carácter asociado a un nº de orden ASCII) → C
Ejemplo:
chr (ord(‘B’) + 4) = chr (66 + 4) = chr (70) = ´F´
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos: Caracteres
Cadenas de caracteres en Pascal
● No existen en Pascal estándar, string en TurboPascal
● El dominio incluye: secuencia de caracteres con espacios en blanco, eñes,
acentos, etc.
● Se escribe entre apóstrofes ´ ´
● Un tipo char SOLO tiene 1 caracter NO es una cadena.
Ejemplos:
´hola buenos días´ o ´ejemplo con apóstrofe ´´ entre medias ´
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos: booleano
Oriol Borrás Gené @oriolupm
Tipo boolean (definición)
● Proviene del álgebra de Boole, dominio ß (incluye dos valores lógicos)
● 1 byte
● Intervalo acotado: true y false
● Se utiliza en expresiones lógicas
1.2. Tipos de datos básicos: booleano
Oriol Borrás Gené @oriolupm
Tipo boolean (operaciones)
Operadores lógicos
not (negación lógica) ß → ß
and (conjunción lógica) ß x ß → ß
or (disyunción lógica) ß x ß → ß
1.2. Tipos de datos básicos: booleano
Oriol Borrás Gené @oriolupm
Tipo boolean (operaciones)
Tabla de verdad
A B A and B A or B not A
False False
False True
True False
True True
False
False
False
False
False
FalseTrue
True
True
True
True
True
1.2. Tipos de datos básicos: booleano
Tipo boolean (operaciones)
Operadores relacionales
= (igual) > (mayor)
<> (distinto) >= (mayor o igual)
< (menor)
<= (menor o igual)
Oriol Borrás Gené @oriolupm
Todos están sobrecargados
Permiten la comparación entre dos
valores de cualquiera de los tipos
básicos:
x → ß
ℝ x ℝ → ß
C x C → ß
ß x ß → ß
Sobrecarga es la capacidad de un lenguaje de programación, que permite
nombrar con el mismo identificador diferentes variables u operaciones.
1.2. Tipos de datos básicos: booleano
Tipo boolean (operaciones)
Operadores relacionales
= (igual) > (mayor)
<> (distinto) >= (mayor o igual)
< (menor)
<= (menor o igual)
Oriol Borrás Gené @oriolupm
Pascal solo acepta
comparación entre
elementos del mismo tipo
excepto: integer y real
1.2. Tipos de datos básicos: booleano
Tipo boolean (operaciones)
Operadores relacionales lógicos
Cuando se aplican a tipo booleano reciben nombres específicos:
= (equivalencia lógica)
<> (or exclusivo lógico)
<= (implicación lógica)
Oriol Borrás Gené @oriolupm
A B A = B A <> B A <= B
False False
False True
True False
True True
False
False
False
False False
True = 1
False = 0
True
True
True
True
True
True
True
1.2. Tipos de datos básicos: booleano
Tipo boolean (Funciones)
succ (valor siguiente) ß → ß Ej.: succ (FALSE) = TRUE
pred (valor anterior) ß → ß Ej.: pred (FALSE) = TRUE
ord (número de orden) ß →
odd (indica si un entero es impar) → ß
Oriol Borrás Gené @oriolupm
ord (FALSE) = 0
ord (TRUE) = 1
odd (n) =
TRUE si n es impar
False en otro caso
odd (n) es equivalente a n mod 2 = 1
1.2. Tipos de datos básicos
Circuito largo-corto
Con la opción de circuito corto el compilador no evalúa de manera completa una
expresión si no es necesario.
Pascal establece la evaluación con circuito largo, y TurboPascal permite escoger
entre ambos modos (por defecto circuito corto).
Ejemplo: Sean num, den números reales, si den=0
(den <> 0) and (num/den = 0)
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos
Expresiones (general)
Una expresión estará formada por una constante o una variable o una función
aplicada a una expresión o una operación entre expresiones.
Precedencias:
1. ()
2. Funciones
3. -, not
4. *, /, div, mod, and
5. +, -, or
6. =, <>, <, <=, >, >=
Oriol Borrás Gené @oriolupm
Asociatividad de izquierda a derecha
1.2. Tipos de datos básicos
Expresiones (general)
Cada expresión tiene un tipo (integer, real, char o boolean).
Para funciones u operadores aplicadas a expresiones el tipo de la expresión tiene
que coincidir con el tipo requerido.
Ejemplos:
Oriol Borrás Gené @oriolupm
pred(3.4)
NO
´a´+ 2
NO
1.2. Tipos de datos básicos
Expresiones (general) - Ejemplo
Oriol Borrás Gené @oriolupm
(( 2 + 3 ) * 2.1 < ord (´a´) ) or TRUE
¿(( 2 + 3 ) * 2.1 < ord (´a´) ) or TRUE = 2?
Posición ASCII a = 97
¿(( 2 + 3 ) * 2.1 < ord (´a´) ) or TRUE = TRUE?
Tipos ordinales (general)
● integer, char y boolean
● Se pueden enumerar sus dominios asignando a sus elementos una posición
○ ord ()
● Las funciones pred () y succ () son exclusivas de los tipos ordinales
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos
1.2. Tipos de datos básicos
EJERCICIOS
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos
EJERCICIOS
1. Dadas las variables A, B y C, ¿cuál será el valor que queda almacenado en
cada una de ellas?
A = 5
B = 10
C = 15
A = B + C * 2
B = A * (2 + C)
C = A + B
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos
EJERCICIOS
2. Dadas las variables A = 2 y B=7 marca aquellas que sean verdaderas
a. A = B
b. A < B
c. A > B
d. A <= B
e. A <> B
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos
EJERCICIOS
3. Cual de las siguientes expresiones en Pascal es incorrecta en cuanto a su
sintaxis:
a. x = y
b. odd (´4´) or odd (succ(´5´))
c. odd (m) or odd (succ(m))
d. ord (´c´) - ord (succ(´c´)) > 0
Oriol Borrás Gené @oriolupm
1.2. Tipos de datos básicos
EJERCICIOS
4. Dadas las variables A = -2 y B = 120 indicar si la expresión se evalúa como
TRUE o FALSE:
a. (A > 0) OR (B > 100)
b. (A <= 0) AND ( B > 100)
c. NOT (A<>B)
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Palabras reservadas
Tienen un significado predefinido e inalterable en cada lenguaje y no se pueden
utilizar para otros cometidos.
● Pascal: and, array, begin, case, const, div, do, downto, else, end, file, for,
forward, function, goto, if, in, label, mod, nil, not, of, or, packed, procedure,
program, record, repeat, set, then, to, type, until, var, while, with.
● TurboPascal: implementation, interface, string, unit, uses.
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Identificadores
Palabras asociadas a diferentes elementos de un lenguaje (dispositivos, tipos,
constantes, variables, funciones, procedimientos, etc.). Vienen predefinidos.
Predefinidos
● Archivos estándar: input, output
● Constantes: FALSE, TRUE, MAXINT, PI
● Tipos: boolean, char, integer, real, text
● Funciones: abs, arctan, sqr, sin, trunc, etc.
● Procedimientos: dispose, get, new, pack, page, put, read, readln, reset, rewrite,
unpack, write, writeln
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Identificadores
Definidos por el programador
Permiten representar archivos, variables, constantes, tipos, funciones y
procedimientos a medida que los vamos necesitando.
Oriol Borrás Gené @oriolupm
LetraAZ
Dígito
1.3. Tipos de datos definidos por el programador
Identificadores
Definidos por el programador (reglas):
● Construidos solo mediante letras y dígitos, empezando por letra solo
● No se permiten espacios en blanco (en TurboPascal se permite el carácter
subrayado: _ )
● No hay distinción entre mayúscula y minúscula
● No se permiten caracteres especiales, ej.: ñ, acentos, etc.
● Evitar identificadores muy largos
● No pueden ser palabras reservadas
● Únicos en un programa
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
EJERCICIOS
¿Identificador correcto o incorrecto?
Oriol Borrás Gené @oriolupm
1var
var1
numero a
númeroa
numeroa
numeroA
char
numero#
numero_2
1.3. Tipos de datos definidos por el programador
Símbolos especiales
+ – * / := . , ; : = < > <= >= <>
( ) [ ] (* *) { } (. .) _ . .
Literales
Valores concretos de uno de los tipos básicos de Pascal escritos directamemte.
Ejemplos:
integer: -3, 12, etc. char: ´a´, ´5´, ´@´, etc. string: ´buenos días´
boolean: FALSE real: 2.54, -0.435, etc.
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Comentarios
Texto que se intercala en el código fuente para explicar su contenido.
Los compiladores ignoran los comentarios, indicándose mediante:
(* * ) o { }
Ejemplos:
(* esto es un ejemplo de comentario *)
{ y otro ejemplo}
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Datos definidos por el programador
Constantes
Son datos que no cambian su valor a lo largo de la ejecución del programa.
Cuentan con un identificador (normalmente definido por el programador) y un valor,
este valor según sus características definirá el tipo. Por ejemplo si es 1.3 será un
tipo real.
Se pueden clasificar en:
● Constantes literales. Ej.: 5, 0.66, ´t´
● Constantes predefinidas. Ej.: PI, MAXINT, TRUE, FALSE
● Expresiones constantes.
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Datos definidos por el programador
Constantes
● Expresiones constantes.
Ejemplos:
2,5 * PI
alto * largo ← siendo “alto” y “largo” constantes literales predefinidas previamente
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Datos definidos por el programador
Definición de constantes (sintaxis)
Palabra reservada: const
CONST IDENTIFICADOR1 = valor1;
IDENTIFICADOR2 = valor2;
…
IDENTIFICADORn = valorn;
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Datos definidos por el programador
Variables
Son datos que pueden cambiar su valor a lo largo de la ejecución del programa, se
definen por un identificador, y un tipo. Su valor es desconocido al definirlas.
Se corresponden con un espacio de memoria con nombre donde se guardará el
valor asignado posteriormente y que variará a lo largo del programa.
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Datos definidos por el programador
Declaración de variables (sintaxis)
Palabra reservada: var.
VAR Identificador1, Identificador2, … identificadorn: tipo1;
Identificador11, Identificador12, … identificador1n: tipo2;
...
Oriol Borrás Gené @oriolupm
El tipo de una variable permanece a lo largo de todo el programa
1.3. Tipos de datos definidos por el programador
Estructura de un programa en Pascal
Pascal es un lenguaje estructurado que requiere de una forma
específica de escritura para que lo comprenda el compilador.
● Encabezamiento / cabecera
● Declaraciones y definiciones
● Cuerpo
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Estructura de un programa en Pascal
Encabezamiento
Establece la identificación (o título) del programa.
Su estructura es la siguiente:
Program <identificador> (<parámetro de E/S 1>, <parámetro de E/S 2>, …);
Oriol Borrás Gené @oriolupm
ENCABEZAMIENTO
DECLARACIONES
CUERPO
Opcional en TurboPascal
1.3. Tipos de datos definidos por el programador
Estructura de un programa en Pascal
Declaraciones
Aquí el programador indicará al compilador todos los
identificadores no predefinidos que requerirá el programa.
● Definición de constantes
● Declaración de variables
● Definición de unidades
● Definición de procedimientos, funciones, etc.
Oriol Borrás Gené @oriolupm
ENCABEZAMIENTO
DECLARACIONES
CUERPO
1.3. Tipos de datos definidos por el programador
Estructura de un programa en Pascal
Declaraciones
● Definición de unidades:
Permite utilizar desde un programa otros módulos compilados
previamente (TurboPascal). Palabra reservada: USES
Sintaxis:
Oriol Borrás Gené @oriolupm
ENCABEZAMIENTO
DECLARACIONES
CUERPO
USES idUnidad1, idUnidad2;
1.3. Tipos de datos definidos por el programador
Estructura de un programa en Pascal
Declaraciones
Permiten al compilador:
● Reservar espacio de memoria para cada identificador
● Verificar el correcto uso de los constructores
Oriol Borrás Gené @oriolupm
ENCABEZAMIENTO
DECLARACIONES
CUERPO
1.3. Tipos de datos definidos por el programador
Estructura de un programa en Pascal
Cuerpo del programa
Contiene el conjunto de instrucciones ejecutables que
constituyen un programa
Comienza con la palabra reservada begin y finaliza con la
palabra reservada end y un punto “.”
Cada instrucción se separa con el símbolo “;”
Oriol Borrás Gené @oriolupm
ENCABEZAMIENTO
DECLARACIONES
CUERPO
1.3. Tipos de datos definidos por el programador
Estructura de un programa en Pascal
Cuerpo del programa (sintaxis):
BEGIN
instruccion1;
instruccion2;
…
instruccionn;
END.
Oriol Borrás Gené @oriolupm
ENCABEZAMIENTO
DECLARACIONES
CUERPO
1.3. Tipos de datos definidos por el programador
Estructura de un programa en Pascal (resumen)
PASCAL PSEUDOCÓDIGO
PROGRAM nombre; Algoritmo Nombre
{declaraciones} ¿{declaraciones}? -> Datos de E/S
BEGIN Inicio
{sentencias} {sentencias}
END. Fin
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “asignación”:
Se utiliza para dar un valor inicial a las variables o para modificar el que ya tienen a
lo largo de un programa.
El símbolo de la asignación es := y su sintaxis:
identificador := expresion;
Oriol Borrás Gené @oriolupm
La expresión o su resultado ha de ser del mismo tipo que la variable.
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “asignación”:
Ejemplos:
base := 3
altura := 4.2
area := base * altura / 2
indice := indice +1
acumulador := acumulador + valor
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “asignación”:
No confundir asignación := con igualdad =, esta última es un operador relacional
cuya función es comparar expresiones y su resultado es un valor booleano.
Pascal asigna un valor indefinido a las variables creadas (valor basura) al iniciarse
el programa, habrá que tenerlo en cuenta y asignar previamente un valor si
consideramos que es necesario para el programa.
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
Todo programa se comunica con el exterior a través de entradas y salidas de
datos.
● La escritura o salida de datos siempre se hace a un archivo.
● El archivo especial OUTPUT es el monitor o pantalla de la computadora.
● El resto de archivos se denominan mediante un identificador definido por el
usuario.
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
Se realiza mediante las órdenes write o writeln con la siguiente sintaxis:
write (<nombre_fichero>, expresion1, expresion2, …, expresionn)
writeln (<nombre_fichero>, expresion1, expresion2, …, expresionn)
Ambas órdenes evalúan sus argumentos (expresiones) y escriben el resultado en
<nombre_fichero>.
Oriol Borrás Gené @oriolupm
Si se omite el <nombre_fichero> la salida será al archivo output (monitor).
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
El resultado de writeln es el mismo que write más un salto de línea. Si escribimos
sólo write no ocurre nada si escribimos sólo writeln provoca un salto de línea.
->Compilador online Rextester pascal
http://rextester.com/l/pascal_online_compiler
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
Ejemplos
(http://rextester.com/LSV79282)
Oriol Borrás Gené @oriolupm
write (´hola´)
write (2*4)
writeln
write (23,54)
write(23)
writeln(56)
writeln (´->2 + ´,2,’ es igual a ´, 2+2)
write (‘adios’,34)
program tema1;
// Constantes
// Variables
begin
end.
Ahora con:
● Constantes
● Variables y asignación de variables
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
Parámetros de formato de salida (entero)
write (expresionEntera:m, …)
Oriol Borrás Gené @oriolupm
● Escribe el entero o el resultado de la expresión entera justificado por la
derecha un valor “m”.
● La salida puede ser mayor al espacio indicado por m.
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
Parámetros de formato de salida (entero) ◻ = espacio en blanco
Ejemplos:
write (23:6) >> ◻◻◻◻23
write (1:4, 44:4, 222:4) >> ◻◻◻1◻◻44◻222
write (3333:2) >> 3333
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
Parámetros de formato de salida (real)
write (expresionReal:m:n, …)
Oriol Borrás Gené @oriolupm
● Por defecto la salida de valores reales se escribe en notación científica.
Ej.: 2.57384570E+2
● Escribe el entero o el resultado de la expresión entera justificado por la
derecha un valor “m”.
● La salida puede ser mayor al espacio indicado por m.
● n indica el número de decimales (con redondeo)
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
Parámetros de formato de salida (real) ◻ = espacio en blanco
Ejemplos:
a -> 4123.456700
write (a);
write (a:29); write (a:1); write (a:16); write (a:100)
write (a:7:2); write (a:19:2); write (a:1:2);
(se muestra el real en formato decimal y no científico)
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
Parámetros de formato de salida (booleanos)
write (booleanos:m, …)
Oriol Borrás Gené @oriolupm
● Escribe el booleano justificado por la derecha un valor “m”.
Ejemplo: ◻ = espacio en blanco
writeln (true:5) >> ◻true
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “escritura”:
Ejercicios
1. a := 15.389; 3. writeln (5 * 7 + 2:5);
writeln (a:8:2); write (3.5E-3:3:4);
writeln(555:8);
2. writeln (‘Hola que tal’); 4. writeln (5 * 7 = 5);
write (‘estoy’); 5. writeln (5 * 1 = 5:2);
write (‘bien’:5);
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “lectura”:
● La lectura o entrada de datos siempre se hace desde un archivo.
● El archivo especial INPUT es el teclado de la computadora, almacenando en
este archivo todas las pulsaciones del teclado.
● El resto de archivos se denominan mediante un identificador definido por el
usuario.
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “lectura”:
Se realiza mediante las órdenes read o readln con la siguiente sintaxis:
read (<nombre_fichero>, var1, var2, …, varn)
readln (<nombre_fichero>, var1, var2, …, varn)
Las variables no pueden ser de tipo boolean.
Oriol Borrás Gené @oriolupm
Si se omite el <nombre_fichero> la entrada será por el archivo input.
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “lectura”:
El resultado de readln es el mismo que read leyendo los “n” datos del
<nombre_fichero> (o archivo input - teclado-) y los asigna a las “n” variables
expresadas como argumentos. Para el caso de readln además una vez leídos
sus argumentos ignora si hay más valores en el fichero y posiciona la siguiente
lectura en la línea siguiente.
● Readln escrito solo hará una pausa hasta que se pulse “Intro”
● El salto de línea ↵ lo incluye como salto de línea
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “lectura”:
Ejercicio
http://rextester.com/l/pascal_online_compiler
program leer;
var
a,b,c: char;
begin
writeln('pruebas varias');
¿readln?
¿read?
writeln('a = ',a,' b = ',b,' c = ',c, '.');
end.
Oriol Borrás Gené @oriolupm
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “lectura”:
Lectura (ejercicio casa)
PROGRAM lectura;
VAR
a, b : integer;
r : real;
l, m : char;
BEGIN
read (l,a);
readln (r,m);
read (m,b):
readln;
read (a);
END.
Oriol Borrás Gené @oriolupm
Entradas teclado:
a 4 3↵
buenas↵
71 23 4 ↵
10 30
¿Valor final de a, b, r, l y m?
1.3. Tipos de datos definidos por el programador
Instrucciones básicas “lectura”:
Ejercicio casa
PROGRAM lectura;
VAR
a, b : integer;
r : real;
l, m : char;
BEGIN
read (l,a);
readln (r,m);
read (m,b):
readln;
read (a);
END.
Entradas teclado:
a 4 3↵
buenas↵
71 23 4 ↵
10 30
Pasos a b r l m
0 4 ¿? ¿? ‘a’ ¿?
1 4 ¿? 3.0 ‘a’ ↵
2 4 1 3.0 ‘a’ ‘7’
3 4 1 3.0 ‘a’ ‘7’
4 10 1 3.0 ‘a’ ‘7’
1.4. La documentación del programa
1.4. La documentación del programa
Oriol Borrás Gené @oriolupm
Aspectos relevantes
● Comentarios:
○ Descripción del funcionamiento: subprogramas, bloques, etc.
○ Condiciones de entrada
○ Condiciones de salida
○ ...
● Estructuración del programa fuente
● Elección de identificadores
● ...
1.5. Normas de estilo
Oriol Borrás Gené @oriolupm
Claridad del texto en el programa:
● Una instrucción por línea -> Retornos de línea
● Reflejar la estructura del programa de manera visual -> Tabuladores
● No exceder la longitud de pantalla -> Longitud de línea
Elegir un criterio de escritura:
● Constantes en mayúscula
● Variables en minúscula
-> nombres compuestos la inicial de la segunda palabra en mayúscula
● Palabras clave o reservadas en mayúscula
● Tipos comienzan con T
Oriol Borrás Gené @oriolupm
PROGRAM NombrePrograma(input, output);
{ Propósito/objetivo: }
{ Entrada: }
{ Salida: }
CONST {Definición de constantes}
CONSTANTES = #VALOR; {}
VAR {Declaración de variables}
variables : tipo; {}
BEGIN {Programa principal}
Instrucción1;
Instrucción2;
...;
InstrucciónN;
END. {Programa principal}
1.5. Normas de estilo
1.5. Normas de estilo
Oriol Borrás Gené @oriolupm
Elección de identificadores
● Criterio para la semántica:
○ Buscar una palabras o palabras que representen el objetivo o el
significado del identificador
● Criterio para la sintaxis:
○ Evitar identificadores de gran longitud
Ejercicios para casa
Oriol Borrás Gené @oriolupm
Ejercicios de autoevaluación tema 1 (Casa)
https://goo.gl/forms/tsYfkwmIGTHB01072
Bibliografía
PAREJA, C. (1997). Desarrollo de Algoritmos y Técnicas de programación en Pascal.
http://antares.sip.ucm.es/cpareja/libroAlgoritmos/
URJC. Apuntes de la asignatura.
Hernández Yáñez, L. (2013). Fundamentos de la programación (apuntes de clase).
https://www.fdi.ucm.es/profesor/luis/fp/FP.pdf
Zayas Alzamora, R. y Escobar Santiesteban, R. (2013). Aprenda Pascal.
https://milenguaje.files.wordpress.com/2009/03/aprenda-pascal.pdf
Enlaces:
http://recursos.salonesvirtuales.com/wp-content/uploads/bloques/2012/07/AlgoritmoSoluciondeProb
lema.pdf

Más contenido relacionado

Similar a Tema 1. elementos básicos de pascal #ipg2murjc

Sesión1 Algoritmia Básica.ppt
Sesión1 Algoritmia Básica.pptSesión1 Algoritmia Básica.ppt
Sesión1 Algoritmia Básica.pptsamirvidal1
 
Intro A Computadoras
Intro A ComputadorasIntro A Computadoras
Intro A Computadoraslichic
 
Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programaciónRonny Parra
 
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONLENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONSol López
 
Conceptos basicos de programacion
Conceptos basicos de programacionConceptos basicos de programacion
Conceptos basicos de programacionBarbara brice?
 
Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01Fernando Jim
 
Portafolio de evidencias actividades
Portafolio de evidencias actividadesPortafolio de evidencias actividades
Portafolio de evidencias actividadesJames Logan
 
Fase3 t1-introduccion- a-la- programacion new
Fase3 t1-introduccion- a-la- programacion newFase3 t1-introduccion- a-la- programacion new
Fase3 t1-introduccion- a-la- programacion newINGJOINER
 
01 lenguaje-c
01 lenguaje-c01 lenguaje-c
01 lenguaje-cPablo
 
Giseproi curso de programación - sesión 1 a - introducción a la programación
Giseproi   curso de programación - sesión 1 a - introducción a la programaciónGiseproi   curso de programación - sesión 1 a - introducción a la programación
Giseproi curso de programación - sesión 1 a - introducción a la programacióngiseproi
 
Presentacion info
Presentacion infoPresentacion info
Presentacion infomariopoza00
 

Similar a Tema 1. elementos básicos de pascal #ipg2murjc (20)

Sesión1 Algoritmia Básica.ppt
Sesión1 Algoritmia Básica.pptSesión1 Algoritmia Básica.ppt
Sesión1 Algoritmia Básica.ppt
 
Intro A Computadoras
Intro A ComputadorasIntro A Computadoras
Intro A Computadoras
 
Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programación
 
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCIONLENGUAJE DE PROGRAMACION C++ INTRODUCCION
LENGUAJE DE PROGRAMACION C++ INTRODUCCION
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Lab algoritmos 1
Lab algoritmos 1Lab algoritmos 1
Lab algoritmos 1
 
Conceptos basicos de programacion
Conceptos basicos de programacionConceptos basicos de programacion
Conceptos basicos de programacion
 
Tema1
Tema1Tema1
Tema1
 
Tema1.ppt
Tema1.pptTema1.ppt
Tema1.ppt
 
Presentación Informática
Presentación InformáticaPresentación Informática
Presentación Informática
 
Miguillen recursos
Miguillen recursosMiguillen recursos
Miguillen recursos
 
Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01Tema1b 120417003759-phpapp01
Tema1b 120417003759-phpapp01
 
ALGORITMOS.ppsx
ALGORITMOS.ppsxALGORITMOS.ppsx
ALGORITMOS.ppsx
 
Portafolio de evidencias actividades
Portafolio de evidencias actividadesPortafolio de evidencias actividades
Portafolio de evidencias actividades
 
Fase3 t1-introduccion- a-la- programacion new
Fase3 t1-introduccion- a-la- programacion newFase3 t1-introduccion- a-la- programacion new
Fase3 t1-introduccion- a-la- programacion new
 
01 lenguaje-c
01 lenguaje-c01 lenguaje-c
01 lenguaje-c
 
Giseproi curso de programación - sesión 1 a - introducción a la programación
Giseproi   curso de programación - sesión 1 a - introducción a la programaciónGiseproi   curso de programación - sesión 1 a - introducción a la programación
Giseproi curso de programación - sesión 1 a - introducción a la programación
 
Presentacion info
Presentacion infoPresentacion info
Presentacion info
 
Presentacion c
Presentacion cPresentacion c
Presentacion c
 
Algoritmos - Curso UNE
Algoritmos - Curso UNEAlgoritmos - Curso UNE
Algoritmos - Curso UNE
 

Más de Oriol Borras Gene

Las Insignias Digitales en Educación
Las Insignias Digitales en EducaciónLas Insignias Digitales en Educación
Las Insignias Digitales en EducaciónOriol Borras Gene
 
Taller "La identidad digital profesional para estudiantes de la ETSII"
Taller "La identidad digital profesional para estudiantes de la ETSII"Taller "La identidad digital profesional para estudiantes de la ETSII"
Taller "La identidad digital profesional para estudiantes de la ETSII"Oriol Borras Gene
 
Redes Sociales en educación: Instagram y TikTok
Redes Sociales en educación: Instagram y TikTokRedes Sociales en educación: Instagram y TikTok
Redes Sociales en educación: Instagram y TikTokOriol Borras Gene
 
Insignias Digitales: reconocimiento y motivación
Insignias Digitales: reconocimiento y motivación Insignias Digitales: reconocimiento y motivación
Insignias Digitales: reconocimiento y motivación Oriol Borras Gene
 
Uso de Telegram en ingeniería dentro de la Universidad
Uso de Telegram en ingeniería dentro de la UniversidadUso de Telegram en ingeniería dentro de la Universidad
Uso de Telegram en ingeniería dentro de la UniversidadOriol Borras Gene
 
Insignias digitales y MOOCS, una nueva forma de profesionalizarse
Insignias digitales y MOOCS, una nueva forma de profesionalizarseInsignias digitales y MOOCS, una nueva forma de profesionalizarse
Insignias digitales y MOOCS, una nueva forma de profesionalizarseOriol Borras Gene
 
LinkedIn: consejos y su algoritmo 2020
LinkedIn: consejos y su algoritmo 2020LinkedIn: consejos y su algoritmo 2020
LinkedIn: consejos y su algoritmo 2020Oriol Borras Gene
 
Taller La Identidad Digital profesional del universitario (ETSII - URJC)
Taller La Identidad Digital profesional del universitario (ETSII - URJC)Taller La Identidad Digital profesional del universitario (ETSII - URJC)
Taller La Identidad Digital profesional del universitario (ETSII - URJC)Oriol Borras Gene
 
Collaborative digital badges in MOOC 25/06/20
Collaborative digital badges in MOOC 25/06/20Collaborative digital badges in MOOC 25/06/20
Collaborative digital badges in MOOC 25/06/20Oriol Borras Gene
 
COMUNICAR CIENCIA EN REDES SOCIALES 2020
COMUNICAR CIENCIA EN REDES SOCIALES 2020COMUNICAR CIENCIA EN REDES SOCIALES 2020
COMUNICAR CIENCIA EN REDES SOCIALES 2020Oriol Borras Gene
 
Trabajo en equipo en entornos digitales #DirectoINAP
Trabajo en equipo en entornos digitales #DirectoINAPTrabajo en equipo en entornos digitales #DirectoINAP
Trabajo en equipo en entornos digitales #DirectoINAPOriol Borras Gene
 
Taller de Identidad Digital 2020 #idUPM
Taller de Identidad Digital 2020 #idUPMTaller de Identidad Digital 2020 #idUPM
Taller de Identidad Digital 2020 #idUPMOriol Borras Gene
 
Taller "Redes sociales digitales como apoyo a la docencia" 2019 #URJC
Taller "Redes sociales digitales como apoyo a la docencia" 2019 #URJCTaller "Redes sociales digitales como apoyo a la docencia" 2019 #URJC
Taller "Redes sociales digitales como apoyo a la docencia" 2019 #URJCOriol Borras Gene
 
¡Escapándonos del aula de Empresa! (Escape room Educativo)
¡Escapándonos del aula de Empresa! (Escape room Educativo) ¡Escapándonos del aula de Empresa! (Escape room Educativo)
¡Escapándonos del aula de Empresa! (Escape room Educativo) Oriol Borras Gene
 
Comunicar ciencia en Redes Sociales
Comunicar ciencia en Redes Sociales Comunicar ciencia en Redes Sociales
Comunicar ciencia en Redes Sociales Oriol Borras Gene
 
Hacia un MOOC más colectivo: herramientas útiles para fomentar y recuperar co...
Hacia un MOOC más colectivo: herramientas útiles para fomentar y recuperar co...Hacia un MOOC más colectivo: herramientas útiles para fomentar y recuperar co...
Hacia un MOOC más colectivo: herramientas útiles para fomentar y recuperar co...Oriol Borras Gene
 
Comunidades de aprendizaje con redes sociales: docencia online y presencial #...
Comunidades de aprendizaje con redes sociales: docencia online y presencial #...Comunidades de aprendizaje con redes sociales: docencia online y presencial #...
Comunidades de aprendizaje con redes sociales: docencia online y presencial #...Oriol Borras Gene
 
Adaptación al Marco Común de Competencia Digital Docente
Adaptación al Marco Común de Competencia Digital DocenteAdaptación al Marco Común de Competencia Digital Docente
Adaptación al Marco Común de Competencia Digital DocenteOriol Borras Gene
 
Potenciando el elemento social en la gamificación
Potenciando el elemento social en la gamificaciónPotenciando el elemento social en la gamificación
Potenciando el elemento social en la gamificaciónOriol Borras Gene
 
Experiencia en Ingeniería Informática mediante el uso de videos adaptados a l...
Experiencia en Ingeniería Informática mediante el uso de videos adaptados a l...Experiencia en Ingeniería Informática mediante el uso de videos adaptados a l...
Experiencia en Ingeniería Informática mediante el uso de videos adaptados a l...Oriol Borras Gene
 

Más de Oriol Borras Gene (20)

Las Insignias Digitales en Educación
Las Insignias Digitales en EducaciónLas Insignias Digitales en Educación
Las Insignias Digitales en Educación
 
Taller "La identidad digital profesional para estudiantes de la ETSII"
Taller "La identidad digital profesional para estudiantes de la ETSII"Taller "La identidad digital profesional para estudiantes de la ETSII"
Taller "La identidad digital profesional para estudiantes de la ETSII"
 
Redes Sociales en educación: Instagram y TikTok
Redes Sociales en educación: Instagram y TikTokRedes Sociales en educación: Instagram y TikTok
Redes Sociales en educación: Instagram y TikTok
 
Insignias Digitales: reconocimiento y motivación
Insignias Digitales: reconocimiento y motivación Insignias Digitales: reconocimiento y motivación
Insignias Digitales: reconocimiento y motivación
 
Uso de Telegram en ingeniería dentro de la Universidad
Uso de Telegram en ingeniería dentro de la UniversidadUso de Telegram en ingeniería dentro de la Universidad
Uso de Telegram en ingeniería dentro de la Universidad
 
Insignias digitales y MOOCS, una nueva forma de profesionalizarse
Insignias digitales y MOOCS, una nueva forma de profesionalizarseInsignias digitales y MOOCS, una nueva forma de profesionalizarse
Insignias digitales y MOOCS, una nueva forma de profesionalizarse
 
LinkedIn: consejos y su algoritmo 2020
LinkedIn: consejos y su algoritmo 2020LinkedIn: consejos y su algoritmo 2020
LinkedIn: consejos y su algoritmo 2020
 
Taller La Identidad Digital profesional del universitario (ETSII - URJC)
Taller La Identidad Digital profesional del universitario (ETSII - URJC)Taller La Identidad Digital profesional del universitario (ETSII - URJC)
Taller La Identidad Digital profesional del universitario (ETSII - URJC)
 
Collaborative digital badges in MOOC 25/06/20
Collaborative digital badges in MOOC 25/06/20Collaborative digital badges in MOOC 25/06/20
Collaborative digital badges in MOOC 25/06/20
 
COMUNICAR CIENCIA EN REDES SOCIALES 2020
COMUNICAR CIENCIA EN REDES SOCIALES 2020COMUNICAR CIENCIA EN REDES SOCIALES 2020
COMUNICAR CIENCIA EN REDES SOCIALES 2020
 
Trabajo en equipo en entornos digitales #DirectoINAP
Trabajo en equipo en entornos digitales #DirectoINAPTrabajo en equipo en entornos digitales #DirectoINAP
Trabajo en equipo en entornos digitales #DirectoINAP
 
Taller de Identidad Digital 2020 #idUPM
Taller de Identidad Digital 2020 #idUPMTaller de Identidad Digital 2020 #idUPM
Taller de Identidad Digital 2020 #idUPM
 
Taller "Redes sociales digitales como apoyo a la docencia" 2019 #URJC
Taller "Redes sociales digitales como apoyo a la docencia" 2019 #URJCTaller "Redes sociales digitales como apoyo a la docencia" 2019 #URJC
Taller "Redes sociales digitales como apoyo a la docencia" 2019 #URJC
 
¡Escapándonos del aula de Empresa! (Escape room Educativo)
¡Escapándonos del aula de Empresa! (Escape room Educativo) ¡Escapándonos del aula de Empresa! (Escape room Educativo)
¡Escapándonos del aula de Empresa! (Escape room Educativo)
 
Comunicar ciencia en Redes Sociales
Comunicar ciencia en Redes Sociales Comunicar ciencia en Redes Sociales
Comunicar ciencia en Redes Sociales
 
Hacia un MOOC más colectivo: herramientas útiles para fomentar y recuperar co...
Hacia un MOOC más colectivo: herramientas útiles para fomentar y recuperar co...Hacia un MOOC más colectivo: herramientas útiles para fomentar y recuperar co...
Hacia un MOOC más colectivo: herramientas útiles para fomentar y recuperar co...
 
Comunidades de aprendizaje con redes sociales: docencia online y presencial #...
Comunidades de aprendizaje con redes sociales: docencia online y presencial #...Comunidades de aprendizaje con redes sociales: docencia online y presencial #...
Comunidades de aprendizaje con redes sociales: docencia online y presencial #...
 
Adaptación al Marco Común de Competencia Digital Docente
Adaptación al Marco Común de Competencia Digital DocenteAdaptación al Marco Común de Competencia Digital Docente
Adaptación al Marco Común de Competencia Digital Docente
 
Potenciando el elemento social en la gamificación
Potenciando el elemento social en la gamificaciónPotenciando el elemento social en la gamificación
Potenciando el elemento social en la gamificación
 
Experiencia en Ingeniería Informática mediante el uso de videos adaptados a l...
Experiencia en Ingeniería Informática mediante el uso de videos adaptados a l...Experiencia en Ingeniería Informática mediante el uso de videos adaptados a l...
Experiencia en Ingeniería Informática mediante el uso de videos adaptados a l...
 

Último

el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleJonathanCovena1
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 

Último (20)

el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Introducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo SostenibleIntroducción:Los objetivos de Desarrollo Sostenible
Introducción:Los objetivos de Desarrollo Sostenible
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 

Tema 1. elementos básicos de pascal #ipg2murjc

  • 1. Tema 1. Elementos básicos de Pascal Oriol Borrás Gené @oriolUPM Introducción a la programación Curso 2018/19
  • 2. Tema 1. Elementos básicos de Pascal Índice: 1.1. Introducción y conceptos de programación. 1.2. Tipos de datos básicos. 1.3. Elementos básicos de Pascal. Tipos de datos definidos por el programador. 1.4. La documentación del programa. 1.5. Normas de estilo.
  • 3. 1.1. Introducción y conceptos de programación Oriol Borrás Gené @oriolupm Informática o Computer Science “Conjunto de conocimientos científicos y técnicas que hacen posible el tratamiento automático de la información por medio de computadores”. Computador u ordenador Máquina electrónica, analógica o digital que bajo el control de uno o más programas, de forma automática acepta y procesa datos, efectuando operaciones lógicas y aritméticas con ellos hasta proporcionar unos datos de salida que serán la solución a un problema dado.
  • 4. Oriol Borrás Gené @oriolupm Hardware y Software Hardware (soporte físico) Conjunto de componentes físicos (cables, circuitos, etc.) que integran un computador. Ej.: Placa base, disco duro, tarjeta gráfica, etc. Software (soporte lógico) Conjunto de programas que encontramos en un computador. 1.1. Introducción y conceptos de programación
  • 5. Oriol Borrás Gené @oriolupm Esquema de un computador CPU (Unidad Central de Proceso) DISPOSITIVOS DE ENTRADA DISPOSITIVOS DE SALIDA MEMORIA PROGRAMA DATOS ENTRADA DATOS SALIDA Teclado Ratón Escáner ... Monitor Impresora Altavoz ... 1.1. Introducción y conceptos de programación
  • 6. Oriol Borrás Gené @oriolupm Arquitectura de Von Neumann (1945) ● Arquitectura de diseño para un computador digital electrónico ● CPU: ○ Unidad Aritmético-Lógica ○ Unidad de control ● Memoria ● Dispositivos de E/S Fuente: https://frikosfera.wordpress.com/2015/02/2 7/que-es-la-arquitectura-von-neumann/ 1.1. Introducción y conceptos de programación
  • 7. Oriol Borrás Gené @oriolupm ¿Qué es programar? Proporcionar un conjunto de instrucciones a un ordenador mediante un lenguaje de programación que “entienda”. ¿Qué es un programa? Conjunto ordenado de instrucciones entendible por un computador y tienen el objetivo de resolver un problema. 1.1. Introducción y conceptos de programación
  • 8. Oriol Borrás Gené @oriolupm ¿Qué es programar? (fases) 1.1. Introducción y conceptos de programación Solución de un problema (Programa) Análisis del problema Definir el problema Identificar datos de entrada Identificar datos de salida Diseño y verificación del algoritmo Codificación del algoritmo Ejecución del programa Diseño descendente Refinamiento por pasos Herramientas programación: ● Diagramas de flujo ● Pseudocódigo Prueba del programa Resultados General -> particular
  • 9. Oriol Borrás Gené @oriolupm ¿Qué es un programa? Programa = Algoritmos + Estructuras de datos Algoritmo Secuencia precisa de pasos y operaciones que permiten obtener unos resultados a partir de unos datos. Estructuras de datos Elementos que utilizamos para guardar datos en memoria. Ej.: Variables. 1.1. Introducción y conceptos de programación
  • 10. Oriol Borrás Gené @oriolupm PROGRAMAENTRADA SALIDA 1.1. Introducción y conceptos de programación ¿Qué es un programa?
  • 11. Oriol Borrás Gené @oriolupm Características de los algoritmos: ● Precisos (no ambiguo) en cuanto a: ○ Orden (secuencia de pasos) ○ Contenido (qué se realiza en cada paso) ● Deterministas, responder siempre igual ante las mismas condiciones ● Finitos 1.1. Introducción y conceptos de programación
  • 12. Oriol Borrás Gené @oriolupm Aspectos deseables de los algoritmos: ● Generalidad: de solución al mayor tipo de problemas posible. ● Eficiencia, menor número de pasos posible 1.1. Introducción y conceptos de programación
  • 13. Oriol Borrás Gené @oriolupm Lenguajes algorítmicos Permiten describir un algoritmo sin ser tan formales como un lenguaje de programación (serán más genéricos) y más precisos que el lenguaje natural. 1.1. Introducción y conceptos de programación
  • 14. Oriol Borrás Gené @oriolupm Diagramas de flujo Fuente: https://es.wikipedia.org /wiki/Archivo:Graf_algo _bisiesto.PNG 1.1. Introducción y conceptos de programación
  • 15. Oriol Borrás Gené @oriolupm Pseudocódigo Programa: TablaMultiplicar Inicio Escribir ‘Introduce un número’ Leer num InicioDesde Desde t=1 hasta t=10 repetir hacer total = num*t Escribir: total finDesde Fin 1.1. Introducción y conceptos de programación
  • 16. Oriol Borrás Gené @oriolupm ¿Qué son los datos? Un dato es cualquier información codificada de forma que pueda ser aceptada y procesada por un ordenador. La información se almacena en la memoria de la computadora en formato binario: 1 0 Un dígito binario o bit es la unidad más pequeña y fundamental de información. 1.1. Introducción y conceptos de programación
  • 17. Oriol Borrás Gené @oriolupm 1 Byte = 8 bits 1 Kilobyte (KB) = 210 bytes = 1024 bytes ~103 bytes 1 Megabyte (MB) = 210 KB = 220 bytes = 1048576 bytes ~106 bytes 1 Gigabyte (GB) = 210 MB = 230 bytes = 1073741824 bytes ~109 bytes 1 Terabyte (TB) = 210 GB = 240 bytes ~1012 bytes 1 Petabyte (PB) = 210 TB = 250 bytes ~103 bytes 1 Exabyte (EB) = 210 PB = 260 bytes ~103 bytes 1 bit = 0 ó 1 1.1. Introducción y conceptos de programación
  • 18. Oriol Borrás Gené @oriolupm A partir de los datos binarios (0 y 1) con los que trabajan las computadoras podremos codificarlos en diferentes formatos. Código binario Cada dígito tiene distinto valor dependiendo de la posición que ocupe. El valor de cada posición es el de una potencia de base 2, elevada a un exponente igual a la posición del dígito menos uno. 2 (n-1) 1.1. Introducción y conceptos de programación
  • 19. Oriol Borrás Gené @oriolupm Código binario Dígito-> X X X X Posición (n) -> 4 3 2 1 Valor (2 (n-1) )-> 8 4 2 1 ● Posición n = 1 (dígito = 1 y valor = 2 (1-1) = 2 0 = 1) -> 1*1 0 1 0 1● Posición n = 2 (dígito = 0 y valor = 2 (2-1) = 2 1 = 2) -> 0*2 Dígito * Valor ● Posición n = 3 (dígito = 1 y valor = 2 (3-1) = 2 2 = 4) -> 1*4 ● Posición n = 4 (dígito = 0 y valor = 2 (4-1) = 2 4 = 8) -> 0*8 = 5 Ejemplo: Valor en decimal del número en binario 0101 1.1. Introducción y conceptos de programación
  • 20. Oriol Borrás Gené @oriolupm Conversiones de formatos: ● Decimal: ○ Sin signo ○ Signo-magnitud ○ Complemento a 2 ○ Exponente desplazado ● BCD (Binary Code Decimal) ● Hexadecimal 1.1. Introducción y conceptos de programación
  • 21. Oriol Borrás Gené @oriolupm Lenguajes de programación Son un conjunto de caracteres, reglas para combinarlos y reglas que especifican sus efectos cuando se ejecuta por un ordenador. Están diseñados para representar los algoritmos de forma que el ordenador los entienda. Son lenguajes artificiales y más formales, rigurosos a la par que simples en su sintaxis y semántica frente al lenguaje natural. 1.1. Introducción y conceptos de programación
  • 22. Oriol Borrás Gené @oriolupm Lenguaje o código máquina Es el sistema de códigos hexadecimales directamente interpretable por la computadora que representan instrucciones, registros de la CPU, direcciones de memoria o datos. ● Lenguaje de bajo nivel ● Es difícil de programar ● Depende de cada máquina Ejemplo: A0 2F (instrucción) -> acceder a la celda de memoria 2F 1.1. Introducción y conceptos de programación
  • 23. Oriol Borrás Gené @oriolupm Lenguaje ensamblador Conjunto de mnemónicos que representan instrucciones básicas para la computadora. Estos mnemotécnicos nos ofrecen una mayor legibilidad de lo que se ejecuta y están asociados a los códigos hexadecimales que interpreta la computadora (lenguaje máquina). Ej.: A0 -> READ. ● Lenguaje de nivel medio ● Más sencillo de programar ● Depende de cada máquina Ejemplo: READ 2F (instrucción) -> acceder a la celda de memoria 2F 1.1. Introducción y conceptos de programación
  • 24. Oriol Borrás Gené @oriolupm Lenguaje de alto nivel Son más cercanos al lenguaje natural y matemático, siendo más legibles. Características: ● Sintaxis ● Semántica ● Traducción y ejecución ● Tipos de errores FORTRAN ALGOL Lisp COBOL APL SIMULA BASIC Prolog C Pascal Scheme Modula Ada C++ Perl Python Ruby Java PHP C# 1.1. Introducción y conceptos de programación
  • 25. Oriol Borrás Gené @oriolupm Sintaxis Conjunto de reglas que determinan cómo se construyen y secuencian los elementos del lenguaje. Especificación de la sintaxis: ● Notación BNF (Backus-Naur) ● Diagramas sintácticos Ejemplo BNF <registry expression> ::= <Add Key> (Registry expression es equivalente a Add Key) 1.1. Introducción y conceptos de programación
  • 26. Oriol Borrás Gené @oriolupm Diagrama sintáctico 1.1. Introducción y conceptos de programación Sintaxis Conjunto de reglas que determinan cómo se construyen y secuencian los elementos del lenguaje. Especificación de la sintaxis: ● Notación BNF (Backus-Naur) ● Diagramas sintácticos
  • 27. Oriol Borrás Gené @oriolupm Semántica Indica el significado de cada elemento del lenguaje (para qué sirve). Traducción y ejecución Es necesario traducir el programa (código fuente) escrito en lenguaje de alto nivel a lenguaje máquina que entienda la computadora (código objeto), se hará mediante un programa denominado compilador. COMPILADOR CÓDIGO FUENTE (programa en alto nivel) CÓDIGO OBJETO (lenguaje máquina) 1.1. Introducción y conceptos de programación
  • 28. Oriol Borrás Gené @oriolupm Traducción y ejecución Normalmente existen más partes de programa en otros ficheros objeto, mediante un programa enlazador juntaremos todos los ficheros en uno que pueda ejecutarse. CÓDIGO OBJETO ENLAZADOR PROGRAMA EJECUTABLE OTROS CÓDIGOS OBJETO 1.1. Introducción y conceptos de programación
  • 29. Oriol Borrás Gené @oriolupm Evolución de los lenguajes de programación Existen una serie de motores que impulsan la evolución hacia nuevos lenguajes de programación: ● Abstracción ● Encapsulación ● Modularidad ● Jerarquía ● + comprensión ● + legibilidad ● + fácil mantenimiento ● - coste 1.1. Introducción y conceptos de programación
  • 30. Oriol Borrás Gené @oriolupm Paradigmas de programación Definen un conjunto de reglas, patrones y estilos de programación usados por un grupo de lenguajes de programación. Existen cuatro grandes paradigmas: funcional, lógico, imperativo o procedural y orientado a objetos. No existe una separación estricta entre paradigmas y lenguajes de programación. 1.1. Introducción y conceptos de programación
  • 31. Oriol Borrás Gené @oriolupm Paradigma funcional La computación se realiza mediante la evaluación de expresiones: ● Definición de funciones ● El valor generado por una función depende exclusivamente de los argumentos alimentados a la función ● Programación declarativa ● Ej.: LISP, Scala, Scheme. Se especifican un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema. La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla. 1.1. Introducción y conceptos de programación
  • 32. Oriol Borrás Gené @oriolupm Paradigma lógico La computación se basa en la definición de relaciones lógicas, modelando los problemas con enunciados de lógica de primer orden: ● Definición de reglas ● Programación declarativa ● Ej.: Prolog, Mercury, Oz. No se listan los pasos a llevar a cabo 1.1. Introducción y conceptos de programación
  • 33. Oriol Borrás Gené @oriolupm Paradigma imperativo Se caracteriza por tener un estado implícito que es modificado mediante instrucciones o comandos del lenguaje: ● Definición de procedimientos ● Definición de tipos de datos ● Ejecución secuencial ● Cambio de estado de variables ● Ejemplos: Pascal, Basic, C. 1.1. Introducción y conceptos de programación
  • 34. Oriol Borrás Gené @oriolupm Paradigma orientado a objetos El comportamiento del programa es llevado a cabo por objetos (variables y funciones), se basa en la programación imperativa: ● Definición de clases y herencia ● Objetos como abstracción de datos y procedimientos ● Ejemplos: Java, Python, C++. 1.1. Introducción y conceptos de programación
  • 35. Oriol Borrás Gené @oriolupm Ingeniería del software “Aplicación de un enfoque sistemático, disciplinado y cuantificable hacia el desarrollo, operación y mantenimiento del software” (IEEE, 1993). PLANIFICACIÓN ANÁLISIS DISEÑO PROGRAMACIÓN PRUEBA Y DEPURACIÓN MANTENIMIENTO Determinar necesidades, recursos, presupuesto, tiempos, ... ¿Qué? definir funciones por módulo, trabajo conjunto de los módulos, criterios de validación, redactar especificaciones, ... ¿Cómo? Diseño módulos, dividir en tareas, asignar tareas a equipos de trabajo Codificar en el lenguaje elegido 1.1. Introducción y conceptos de programación
  • 36. Oriol Borrás Gené @oriolupm Historia de Pascal Creado por Niklaus Wirth en 1970 para facilitar a sus alumnos el aprendizaje de la programación estructurada. Su nombre se debe al matemático y filósofo francés Blaise Pascal inventor de la primera máquina de calcular. Fuente: https://es.wikipedia.org/wiki/Blaise_Pascal#/media/Fil e:Arts_et_Metiers_Pascaline_dsc03869.jpg Evolución de la versión inicial o estándar de Pascal a la extendida con TurboPascal y otras como Delphi (orientada a objetos). 1.1. Introducción y conceptos de programación
  • 37. Oriol Borrás Gené @oriolupm Características de Pascal ● Lenguaje de alto nivel ● Propósito general ● Paradigma imperativo ● Estructurado (datos y control) ● Modular 1.1. Introducción y conceptos de programación
  • 38. Oriol Borrás Gené @oriolupm ¿Por qué Pascal? 1.1. Introducción y conceptos de programación ● Objetivo: pensamiento computacional ● Cómo aprendemos a leer ● JAVA: ¿y si usáramos Twitter para aprender a leer? Diferencias entre C y Pascal: http://compu-monse.blogspot.com.es/2012/05/diferencias-entre-lenguaje-c-y-lenguaje.html
  • 39. Oriol Borrás Gené @oriolupm Errores en un programa ● Errores de compilación: impiden al compilador generar el ejecutable por algún error de sintaxis, de tipo, etc. ● Errores de ejecución: se producen cuando se ejecuta el programa y este deja de funcionar en algún momento. ● Errores lógicos: el programa se ejecuta pero los resultados no son los esperados. BUG 1.1. Introducción y conceptos de programación
  • 40. Oriol Borrás Gené @oriolupm ¿Qué es programar? (fases) 1.1. Introducción y conceptos de programación Solución de un problema (Programa) Análisis del problema Definir el problema Identificar datos de entrada Identificar datos de salida Diseño y verificación del algoritmo Codificación del algoritmo Ejecución del programa Diseño descendente Refinamiento por pasos Herramientas programación: ● Diagramas de flujo ● Pseudocódigo Prueba del programa Resultados General -> particular Errores de compilación Errores de ejecución Errores lógicos Herramientas programación: ● Diagramas de flujo ● Pseudocódigo
  • 41. Oriol Borrás Gené @oriolupm Pseudocódigo ● Definir primero el problema: datos de entrada y salida ● Siempre tiene un Inicio y un fin ● Se suelen usar verbos de acción: leer, escribir, asignar, … ● No es necesario definir las variables (se citan en la definición del problema como datos) ● No hay que seguir normas de léxico de programación: “;”, “for”, “while”, ... 1.1. Introducción y conceptos de programación
  • 42. Oriol Borrás Gené @oriolupm Pseudocódigo 1. Analizar y definir el problema: datos de entrada y salida 2. Diseñar el algoritmo a. Inicio y fin b. Subdividir el proceso en pasos c. Precisar todos los pasos 1.1. Introducción y conceptos de programación Más información y ejemplos: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=213:conceptos-d e-algoritmos-pseudocodigo-y-diagramas-de-flujo-una-introduccion-cu00123a&catid=28&Itemid=59
  • 43. Oriol Borrás Gené @oriolupm Pseudocódigo (ejercicio 0) ¿Cuál sería el algoritmo para la acción de colgar un cuadro? 1. Analizar y definir el problema ● Datos de entrada: ● Datos de salida: 1.1. Introducción y conceptos de programación Cuadro, martillo y un clavo. Cuadro colgado
  • 44. Oriol Borrás Gené @oriolupm Pseudocódigo (ejercicio 0) ¿Cuál sería el algoritmo para la acción de colgar un cuadro? 2. Diseñar 1.1. Introducción y conceptos de programación Algoritmo ColgarCuadro Inicio Fin Elegir ubicación Apoyar el clavo en la pared y golpear con el martillo hasta que se quede bien clavado Colgar el cuadro
  • 45. Oriol Borrás Gené @oriolupm Pseudocódigo (ejercicio 1) Desarrollar un algoritmo que calcule el volumen de aire que contiene una pelota, perfectamente esférica, a partir de un valor del radio aportado por el usuario. 1. Analizar y definir el problema ● Datos de entrada: radio de la esfera ● Datos de salida: volumen de la esfera 1.1. Introducción y conceptos de programación
  • 46. 1.1. Introducción y conceptos de programación Oriol Borrás Gené @oriolupm Pseudocódigo (ejercicio 1) 2. Diseñar Algoritmo Vesfera Radio, volumen : Real Inicio Escribir ("Escriba el valor del radio de la esfera" ) Leer (Radio) Volumen ← 4/3 * π * radio^3 Escribir ("El volumen de la esfera es", Volumen) Fin
  • 47. 1.1. Introducción y conceptos de programación Oriol Borrás Gené @oriolupm Pseudocódigo (ejercicio 2) Desarrollar un algoritmo que detecte si un número dado es positivo o negativo. 1. Analizar y definir el problema ● Datos de entrada: número ● Datos de salida: mensaje indicando si el número es positivo o negativo
  • 48. 1.1. Introducción y conceptos de programación Oriol Borrás Gené @oriolupm Pseudocódigo (ejercicio 2) 2. Diseñar Algoritmo Detectar a : Entero Inicio Escribir ("Escriba un número" ) Leer (a) Si a>= 0 entonces Escribir (“El número es positivo”) Sino Escribir (“El número es negativo”) Fin
  • 49. Oriol Borrás Gené @oriolupm Pseudocódigo: ejercicio Definir un algoritmo para una receta sencilla de cocina, indicando: ● Datos de entrada/salida ● Diseño (pseudocódigo) 1.1. Introducción y conceptos de programación
  • 50. 1.2. Tipos de datos básicos Oriol Borrás Gené @oriolupm Un dato es cualquier información codificada de forma que pueda ser aceptada y procesada por un ordenador. En Pascal hay datos básicos o simples (predefinidos/definidos por el usuario) y datos estructurados (definidos por el usuario), estos últimos son: arrays, cadenas de caracteres, registros, archivos, etc.
  • 51. 1.2. Tipos de datos básicos Oriol Borrás Gené @oriolupm Datos básicos Un dato es cualquier información codificada de forma que pueda ser aceptada y procesada por un ordenador. Los datos básicos también se conocen como predefinidos o estándar: ● Enteros: integer ● Real: real ● Carácter: char ● Booleano: boolean
  • 52. 1.2. Tipos de datos básicos: enteros Oriol Borrás Gené @oriolupm Tipo integer (definición) ● Dominio (incluye enteros positivos o negativos) ● Para definirlo se utiliza la palabra integer ● Acotado por la constante predefinida MaxInt ● En Turbo Pascal (2 bytes) su valor es 65536 -> {-32768 … 32767} ● Sin espacios ni puntos, el signo precede al número ● Posibilidad de desbordamiento Entero sin signo Dígito 16 bits -> 216 = 65536 valores
  • 53. 1.2. Tipos de datos básicos: enteros Oriol Borrás Gené @oriolupm Otros tipo entero: ● Sin signo: ○ Byte (1 byte) -> 0 .. 255 ○ Word (2 byte) -> 65535 ● Con signo: ○ Shortint (1 byte) -> -128 .. 127 ○ Integer (2 byte) -> -32768 .. 32767 ○ Longint (4 byte) -> -2147483648 ..2147483647 Ejemplo almacén
  • 54. 1.2. Tipos de datos básicos: enteros Tipo integer (operaciones) + (suma) x → (Ej.: 2+5 → 7) - (resta) x → (Ej.: 3-6 → -3) * (multiplicación) x → (Ej.: 4*5 → 20) div (división) x → (Ej.: 10/3 → 3) mod (resto de la división entera) x → (Ej.: 10/3 → 1) Oriol Borrás Gené @oriolupm - (cambio de signo) → (Ej.: -2)
  • 55. 1.2. Tipos de datos básicos: enteros Tipo integer (funciones) abs (valor absoluto). Ej.: abs(-3) → 3 sqr (cuadrado). Ej.: sqr(9) → 81 pred (predecesor). Ej.: pred (-5) → -6; pred (5) → 4 succ (sucesor). Ej.: succ (-5) → -4; succ (4) → 5 Oriol Borrás Gené @oriolupm
  • 56. 1.2. Tipos de datos básicos: enteros Tipo integer (expresiones) Entendemos por expresión entera como la combinación de números, operaciones, y/o funciones cuyo resultado tras evaluarlas es un entero. Precedencias: 1. () 2. Funciones 3. *. div ,mod 4. +, - Oriol Borrás Gené @oriolupm 2 + 3 * 5 1º2º = 2 + 15 = 17 4 + 2 * 7 + sqr (2) = 4 + 2*7 + 4 = 4 + 14 + 4 = 22 (4 + 2) * 7 + sqr (2) = 6*7 + sqr(2)= 6 * 7 + 4 = 42 + 4 = 46
  • 57. 1.2. Tipos de datos básicos: enteros Tipo integer (expresiones) Entendemos por expresión entera como la combinación de números, operaciones, y/o funciones cuyo resultado tras evaluarlas es un entero. Precedencias: 1. () 2. Funciones 3. *. div ,mod 4. +, - Oriol Borrás Gené @oriolupm 4 div 2 * 2 = 4 Asociatividad de izquierda a derecha
  • 58. 1.2. Tipos de datos básicos: reales Tipo real (definición) ● Dominio ℝ (incluye valores numéricos con parte decimal) ● Para definirlo se utiliza la palabra real ● Intervalo acotado (6 bytes): ○ Comprendido entre 士2.9*10-39 y 1.7*10+38 ○ Precisión entre 11 y 12 cifras ● Representación: ○ Usando punto decimal (ej.: -2.4, 4.034, -0.45) ○ Notación científica (ej.: 7.93E+25) ● Posibilidad de desbordamiento y de error de redondeo Oriol Borrás Gené @oriolupm
  • 59. 1.2. Tipos de datos básicos: reales Oriol Borrás Gené @oriolupm Otros tipo real: ○ Single (4 byte) -> -1.5*1045 .. 3.4*1038 ■ Precisión: 7 y 8 cifras ○ Real (6 byte) ○ Double (8 byte) -> -5.0*10324 .. 1.7*10308 ■ Precisión: 15 y 16 cifras ○ Extended... No abusar de los tipos de datos de gran tamaño hacen al sistema más lento y ocupan mucha memoria
  • 60. 1.2. Tipos de datos básicos: reales Oriol Borrás Gené @oriolupm Tipo real (definición) Real sin signo Dígito Cifras
  • 61. 1.2. Tipos de datos básicos: reales Oriol Borrás Gené @oriolupm Tipo real (operaciones) + (suma) ℝ x ℝ → ℝ (Ej.: 0.5+5.3 →5.8) - (resta) ℝ x ℝ → ℝ (Ej.: 2.5-1.5 → 1.0) * (multiplicación) ℝ x ℝ → ℝ (Ej.: 4.1*5.2 → 21.32) / (división) ℝ x ℝ→ ℝ (Ej.: 10.4/3.5 → 2.9714) - (cambio de signo) ℝ → ℝ (Ej.: -5.8)
  • 62. 1.2. Tipos de datos básicos: reales ln (logaritmo neperiano) exp (función exponencial) Oriol Borrás Gené @oriolupm Tipo real (funciones) abs (valor absoluto) sqr (cuadrado) sqrt (raíz cuadrada) sin (seno) cos (coseno) arctan (arcotangente) Ángulo en radianes Base e
  • 63. 1.2. Tipos de datos básicos: reales Tipo real (expresiones) Entendemos por expresión entera como la combinación de números, operaciones, y/o funciones cuyo resultado tras evaluarlas es un real. Precedencias: 1. () 2. Funciones 3. *, / 4. +, - Oriol Borrás Gené @oriolupm Asociatividad de izquierda a derecha
  • 64. 1.2. Tipos de datos básicos: reales Tipo real (expresiones) A partir de las funciones que nos ofrece Pascal y mediante expresiones podremos llegar a otras funciones matemáticas habituales Función Expresión equivalente xy exp (y * ln (x)) para x > 0 tg (x) sin (x) /cos (x) para x ≠ π/2 + kπ arcsen (x) arctan (x/sqrt(1-sqr(x)) para 0 < x < 1 Logb (x) ln (x) / ln (b) para b>1, x>0 Oriol Borrás Gené @oriolupm Logb (X) = Ln (X) / Ln (b)
  • 65. 1.2. Tipos de datos básicos: reales Oriol Borrás Gené @oriolupm Sobrecarga de operadores y funciones Se pueden utilizar tanto con enteros como reales: ● +, - y * ● abs y sqr
  • 66. 1.2. Tipos de datos básicos: reales Oriol Borrás Gené @oriolupm Conversión de tipos (inter y real) ● ⊂ ℝ, por lo tanto x ℝ → ℝ ● Conversión automática de a ℝ (ej.: 8 * 2.4 = 19,2) ● Funciones de conversión de ℝ a : ○ trunc (x): devuelve la parte entera de x ○ round (x): redondea x al entero más próximo Ejemplo: round (5.9)=6 mientras que trunc (5.9)=5
  • 67. 1.2. Tipos de datos básicos: Caracteres Tipo char (definición) ● Dominio C (juego de caracteres disponibles en la computadora) ● Intervalo acotado: juego de caracteres ASCII de 8 bits (256 caracteres), 1 byte ● Se escribe entre apóstrofes ´ Ejemplo: ´A´, ´h´, ‘@’ ● Excepción: el carácter apóstrofe se escribe doble entre apóstrofes ´´´´ Oriol Borrás Gené @oriolupm
  • 68. 1.2. Tipos de datos básicos: Caracteres Oriol Borrás Gené @oriolupm Tipo char (tabla códigos ASCII en Pascal) Fuente: https://es.wikipedia.org/wiki/ASCII
  • 69. 1.2. Tipos de datos básicos: Caracteres Oriol Borrás Gené @oriolupm Tipo char (operaciones y funciones) + (concatenación de caracteres). Ej.: ´a´+ ´b´= ´ab´ pred (carácter anterior en la tabla ASCII) C → C succ (carácter siguiente en la tabla ASCII) C → C
  • 70. 1.2. Tipos de datos básicos: Caracteres Funciones de conversión de tipos (integer y char) ord (nº orden ASCII del carácter) C→ chr (carácter asociado a un nº de orden ASCII) → C Ejemplo: chr (ord(‘B’) + 4) = chr (66 + 4) = chr (70) = ´F´ Oriol Borrás Gené @oriolupm
  • 71. 1.2. Tipos de datos básicos: Caracteres Cadenas de caracteres en Pascal ● No existen en Pascal estándar, string en TurboPascal ● El dominio incluye: secuencia de caracteres con espacios en blanco, eñes, acentos, etc. ● Se escribe entre apóstrofes ´ ´ ● Un tipo char SOLO tiene 1 caracter NO es una cadena. Ejemplos: ´hola buenos días´ o ´ejemplo con apóstrofe ´´ entre medias ´ Oriol Borrás Gené @oriolupm
  • 72. 1.2. Tipos de datos básicos: booleano Oriol Borrás Gené @oriolupm Tipo boolean (definición) ● Proviene del álgebra de Boole, dominio ß (incluye dos valores lógicos) ● 1 byte ● Intervalo acotado: true y false ● Se utiliza en expresiones lógicas
  • 73. 1.2. Tipos de datos básicos: booleano Oriol Borrás Gené @oriolupm Tipo boolean (operaciones) Operadores lógicos not (negación lógica) ß → ß and (conjunción lógica) ß x ß → ß or (disyunción lógica) ß x ß → ß
  • 74. 1.2. Tipos de datos básicos: booleano Oriol Borrás Gené @oriolupm Tipo boolean (operaciones) Tabla de verdad A B A and B A or B not A False False False True True False True True False False False False False FalseTrue True True True True True
  • 75. 1.2. Tipos de datos básicos: booleano Tipo boolean (operaciones) Operadores relacionales = (igual) > (mayor) <> (distinto) >= (mayor o igual) < (menor) <= (menor o igual) Oriol Borrás Gené @oriolupm Todos están sobrecargados Permiten la comparación entre dos valores de cualquiera de los tipos básicos: x → ß ℝ x ℝ → ß C x C → ß ß x ß → ß Sobrecarga es la capacidad de un lenguaje de programación, que permite nombrar con el mismo identificador diferentes variables u operaciones.
  • 76. 1.2. Tipos de datos básicos: booleano Tipo boolean (operaciones) Operadores relacionales = (igual) > (mayor) <> (distinto) >= (mayor o igual) < (menor) <= (menor o igual) Oriol Borrás Gené @oriolupm Pascal solo acepta comparación entre elementos del mismo tipo excepto: integer y real
  • 77. 1.2. Tipos de datos básicos: booleano Tipo boolean (operaciones) Operadores relacionales lógicos Cuando se aplican a tipo booleano reciben nombres específicos: = (equivalencia lógica) <> (or exclusivo lógico) <= (implicación lógica) Oriol Borrás Gené @oriolupm A B A = B A <> B A <= B False False False True True False True True False False False False False True = 1 False = 0 True True True True True True True
  • 78. 1.2. Tipos de datos básicos: booleano Tipo boolean (Funciones) succ (valor siguiente) ß → ß Ej.: succ (FALSE) = TRUE pred (valor anterior) ß → ß Ej.: pred (FALSE) = TRUE ord (número de orden) ß → odd (indica si un entero es impar) → ß Oriol Borrás Gené @oriolupm ord (FALSE) = 0 ord (TRUE) = 1 odd (n) = TRUE si n es impar False en otro caso odd (n) es equivalente a n mod 2 = 1
  • 79. 1.2. Tipos de datos básicos Circuito largo-corto Con la opción de circuito corto el compilador no evalúa de manera completa una expresión si no es necesario. Pascal establece la evaluación con circuito largo, y TurboPascal permite escoger entre ambos modos (por defecto circuito corto). Ejemplo: Sean num, den números reales, si den=0 (den <> 0) and (num/den = 0) Oriol Borrás Gené @oriolupm
  • 80. 1.2. Tipos de datos básicos Expresiones (general) Una expresión estará formada por una constante o una variable o una función aplicada a una expresión o una operación entre expresiones. Precedencias: 1. () 2. Funciones 3. -, not 4. *, /, div, mod, and 5. +, -, or 6. =, <>, <, <=, >, >= Oriol Borrás Gené @oriolupm Asociatividad de izquierda a derecha
  • 81. 1.2. Tipos de datos básicos Expresiones (general) Cada expresión tiene un tipo (integer, real, char o boolean). Para funciones u operadores aplicadas a expresiones el tipo de la expresión tiene que coincidir con el tipo requerido. Ejemplos: Oriol Borrás Gené @oriolupm pred(3.4) NO ´a´+ 2 NO
  • 82. 1.2. Tipos de datos básicos Expresiones (general) - Ejemplo Oriol Borrás Gené @oriolupm (( 2 + 3 ) * 2.1 < ord (´a´) ) or TRUE ¿(( 2 + 3 ) * 2.1 < ord (´a´) ) or TRUE = 2? Posición ASCII a = 97 ¿(( 2 + 3 ) * 2.1 < ord (´a´) ) or TRUE = TRUE?
  • 83. Tipos ordinales (general) ● integer, char y boolean ● Se pueden enumerar sus dominios asignando a sus elementos una posición ○ ord () ● Las funciones pred () y succ () son exclusivas de los tipos ordinales Oriol Borrás Gené @oriolupm 1.2. Tipos de datos básicos
  • 84. 1.2. Tipos de datos básicos EJERCICIOS Oriol Borrás Gené @oriolupm
  • 85. 1.2. Tipos de datos básicos EJERCICIOS 1. Dadas las variables A, B y C, ¿cuál será el valor que queda almacenado en cada una de ellas? A = 5 B = 10 C = 15 A = B + C * 2 B = A * (2 + C) C = A + B Oriol Borrás Gené @oriolupm
  • 86. 1.2. Tipos de datos básicos EJERCICIOS 2. Dadas las variables A = 2 y B=7 marca aquellas que sean verdaderas a. A = B b. A < B c. A > B d. A <= B e. A <> B Oriol Borrás Gené @oriolupm
  • 87. 1.2. Tipos de datos básicos EJERCICIOS 3. Cual de las siguientes expresiones en Pascal es incorrecta en cuanto a su sintaxis: a. x = y b. odd (´4´) or odd (succ(´5´)) c. odd (m) or odd (succ(m)) d. ord (´c´) - ord (succ(´c´)) > 0 Oriol Borrás Gené @oriolupm
  • 88. 1.2. Tipos de datos básicos EJERCICIOS 4. Dadas las variables A = -2 y B = 120 indicar si la expresión se evalúa como TRUE o FALSE: a. (A > 0) OR (B > 100) b. (A <= 0) AND ( B > 100) c. NOT (A<>B) Oriol Borrás Gené @oriolupm
  • 89. 1.3. Tipos de datos definidos por el programador Palabras reservadas Tienen un significado predefinido e inalterable en cada lenguaje y no se pueden utilizar para otros cometidos. ● Pascal: and, array, begin, case, const, div, do, downto, else, end, file, for, forward, function, goto, if, in, label, mod, nil, not, of, or, packed, procedure, program, record, repeat, set, then, to, type, until, var, while, with. ● TurboPascal: implementation, interface, string, unit, uses. Oriol Borrás Gené @oriolupm
  • 90. 1.3. Tipos de datos definidos por el programador Identificadores Palabras asociadas a diferentes elementos de un lenguaje (dispositivos, tipos, constantes, variables, funciones, procedimientos, etc.). Vienen predefinidos. Predefinidos ● Archivos estándar: input, output ● Constantes: FALSE, TRUE, MAXINT, PI ● Tipos: boolean, char, integer, real, text ● Funciones: abs, arctan, sqr, sin, trunc, etc. ● Procedimientos: dispose, get, new, pack, page, put, read, readln, reset, rewrite, unpack, write, writeln Oriol Borrás Gené @oriolupm
  • 91. 1.3. Tipos de datos definidos por el programador Identificadores Definidos por el programador Permiten representar archivos, variables, constantes, tipos, funciones y procedimientos a medida que los vamos necesitando. Oriol Borrás Gené @oriolupm LetraAZ Dígito
  • 92. 1.3. Tipos de datos definidos por el programador Identificadores Definidos por el programador (reglas): ● Construidos solo mediante letras y dígitos, empezando por letra solo ● No se permiten espacios en blanco (en TurboPascal se permite el carácter subrayado: _ ) ● No hay distinción entre mayúscula y minúscula ● No se permiten caracteres especiales, ej.: ñ, acentos, etc. ● Evitar identificadores muy largos ● No pueden ser palabras reservadas ● Únicos en un programa Oriol Borrás Gené @oriolupm
  • 93. 1.3. Tipos de datos definidos por el programador EJERCICIOS ¿Identificador correcto o incorrecto? Oriol Borrás Gené @oriolupm 1var var1 numero a númeroa numeroa numeroA char numero# numero_2
  • 94. 1.3. Tipos de datos definidos por el programador Símbolos especiales + – * / := . , ; : = < > <= >= <> ( ) [ ] (* *) { } (. .) _ . . Literales Valores concretos de uno de los tipos básicos de Pascal escritos directamemte. Ejemplos: integer: -3, 12, etc. char: ´a´, ´5´, ´@´, etc. string: ´buenos días´ boolean: FALSE real: 2.54, -0.435, etc. Oriol Borrás Gené @oriolupm
  • 95. 1.3. Tipos de datos definidos por el programador Comentarios Texto que se intercala en el código fuente para explicar su contenido. Los compiladores ignoran los comentarios, indicándose mediante: (* * ) o { } Ejemplos: (* esto es un ejemplo de comentario *) { y otro ejemplo} Oriol Borrás Gené @oriolupm
  • 96. 1.3. Tipos de datos definidos por el programador Datos definidos por el programador Constantes Son datos que no cambian su valor a lo largo de la ejecución del programa. Cuentan con un identificador (normalmente definido por el programador) y un valor, este valor según sus características definirá el tipo. Por ejemplo si es 1.3 será un tipo real. Se pueden clasificar en: ● Constantes literales. Ej.: 5, 0.66, ´t´ ● Constantes predefinidas. Ej.: PI, MAXINT, TRUE, FALSE ● Expresiones constantes. Oriol Borrás Gené @oriolupm
  • 97. 1.3. Tipos de datos definidos por el programador Datos definidos por el programador Constantes ● Expresiones constantes. Ejemplos: 2,5 * PI alto * largo ← siendo “alto” y “largo” constantes literales predefinidas previamente Oriol Borrás Gené @oriolupm
  • 98. 1.3. Tipos de datos definidos por el programador Datos definidos por el programador Definición de constantes (sintaxis) Palabra reservada: const CONST IDENTIFICADOR1 = valor1; IDENTIFICADOR2 = valor2; … IDENTIFICADORn = valorn; Oriol Borrás Gené @oriolupm
  • 99. 1.3. Tipos de datos definidos por el programador Datos definidos por el programador Variables Son datos que pueden cambiar su valor a lo largo de la ejecución del programa, se definen por un identificador, y un tipo. Su valor es desconocido al definirlas. Se corresponden con un espacio de memoria con nombre donde se guardará el valor asignado posteriormente y que variará a lo largo del programa. Oriol Borrás Gené @oriolupm
  • 100. 1.3. Tipos de datos definidos por el programador Datos definidos por el programador Declaración de variables (sintaxis) Palabra reservada: var. VAR Identificador1, Identificador2, … identificadorn: tipo1; Identificador11, Identificador12, … identificador1n: tipo2; ... Oriol Borrás Gené @oriolupm El tipo de una variable permanece a lo largo de todo el programa
  • 101. 1.3. Tipos de datos definidos por el programador Estructura de un programa en Pascal Pascal es un lenguaje estructurado que requiere de una forma específica de escritura para que lo comprenda el compilador. ● Encabezamiento / cabecera ● Declaraciones y definiciones ● Cuerpo Oriol Borrás Gené @oriolupm
  • 102. 1.3. Tipos de datos definidos por el programador Estructura de un programa en Pascal Encabezamiento Establece la identificación (o título) del programa. Su estructura es la siguiente: Program <identificador> (<parámetro de E/S 1>, <parámetro de E/S 2>, …); Oriol Borrás Gené @oriolupm ENCABEZAMIENTO DECLARACIONES CUERPO Opcional en TurboPascal
  • 103. 1.3. Tipos de datos definidos por el programador Estructura de un programa en Pascal Declaraciones Aquí el programador indicará al compilador todos los identificadores no predefinidos que requerirá el programa. ● Definición de constantes ● Declaración de variables ● Definición de unidades ● Definición de procedimientos, funciones, etc. Oriol Borrás Gené @oriolupm ENCABEZAMIENTO DECLARACIONES CUERPO
  • 104. 1.3. Tipos de datos definidos por el programador Estructura de un programa en Pascal Declaraciones ● Definición de unidades: Permite utilizar desde un programa otros módulos compilados previamente (TurboPascal). Palabra reservada: USES Sintaxis: Oriol Borrás Gené @oriolupm ENCABEZAMIENTO DECLARACIONES CUERPO USES idUnidad1, idUnidad2;
  • 105. 1.3. Tipos de datos definidos por el programador Estructura de un programa en Pascal Declaraciones Permiten al compilador: ● Reservar espacio de memoria para cada identificador ● Verificar el correcto uso de los constructores Oriol Borrás Gené @oriolupm ENCABEZAMIENTO DECLARACIONES CUERPO
  • 106. 1.3. Tipos de datos definidos por el programador Estructura de un programa en Pascal Cuerpo del programa Contiene el conjunto de instrucciones ejecutables que constituyen un programa Comienza con la palabra reservada begin y finaliza con la palabra reservada end y un punto “.” Cada instrucción se separa con el símbolo “;” Oriol Borrás Gené @oriolupm ENCABEZAMIENTO DECLARACIONES CUERPO
  • 107. 1.3. Tipos de datos definidos por el programador Estructura de un programa en Pascal Cuerpo del programa (sintaxis): BEGIN instruccion1; instruccion2; … instruccionn; END. Oriol Borrás Gené @oriolupm ENCABEZAMIENTO DECLARACIONES CUERPO
  • 108. 1.3. Tipos de datos definidos por el programador Estructura de un programa en Pascal (resumen) PASCAL PSEUDOCÓDIGO PROGRAM nombre; Algoritmo Nombre {declaraciones} ¿{declaraciones}? -> Datos de E/S BEGIN Inicio {sentencias} {sentencias} END. Fin Oriol Borrás Gené @oriolupm
  • 109. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “asignación”: Se utiliza para dar un valor inicial a las variables o para modificar el que ya tienen a lo largo de un programa. El símbolo de la asignación es := y su sintaxis: identificador := expresion; Oriol Borrás Gené @oriolupm La expresión o su resultado ha de ser del mismo tipo que la variable.
  • 110. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “asignación”: Ejemplos: base := 3 altura := 4.2 area := base * altura / 2 indice := indice +1 acumulador := acumulador + valor Oriol Borrás Gené @oriolupm
  • 111. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “asignación”: No confundir asignación := con igualdad =, esta última es un operador relacional cuya función es comparar expresiones y su resultado es un valor booleano. Pascal asigna un valor indefinido a las variables creadas (valor basura) al iniciarse el programa, habrá que tenerlo en cuenta y asignar previamente un valor si consideramos que es necesario para el programa. Oriol Borrás Gené @oriolupm
  • 112. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: Todo programa se comunica con el exterior a través de entradas y salidas de datos. ● La escritura o salida de datos siempre se hace a un archivo. ● El archivo especial OUTPUT es el monitor o pantalla de la computadora. ● El resto de archivos se denominan mediante un identificador definido por el usuario. Oriol Borrás Gené @oriolupm
  • 113. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: Se realiza mediante las órdenes write o writeln con la siguiente sintaxis: write (<nombre_fichero>, expresion1, expresion2, …, expresionn) writeln (<nombre_fichero>, expresion1, expresion2, …, expresionn) Ambas órdenes evalúan sus argumentos (expresiones) y escriben el resultado en <nombre_fichero>. Oriol Borrás Gené @oriolupm Si se omite el <nombre_fichero> la salida será al archivo output (monitor).
  • 114. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: El resultado de writeln es el mismo que write más un salto de línea. Si escribimos sólo write no ocurre nada si escribimos sólo writeln provoca un salto de línea. ->Compilador online Rextester pascal http://rextester.com/l/pascal_online_compiler Oriol Borrás Gené @oriolupm
  • 115. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: Ejemplos (http://rextester.com/LSV79282) Oriol Borrás Gené @oriolupm write (´hola´) write (2*4) writeln write (23,54) write(23) writeln(56) writeln (´->2 + ´,2,’ es igual a ´, 2+2) write (‘adios’,34) program tema1; // Constantes // Variables begin end. Ahora con: ● Constantes ● Variables y asignación de variables
  • 116. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: Parámetros de formato de salida (entero) write (expresionEntera:m, …) Oriol Borrás Gené @oriolupm ● Escribe el entero o el resultado de la expresión entera justificado por la derecha un valor “m”. ● La salida puede ser mayor al espacio indicado por m.
  • 117. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: Parámetros de formato de salida (entero) ◻ = espacio en blanco Ejemplos: write (23:6) >> ◻◻◻◻23 write (1:4, 44:4, 222:4) >> ◻◻◻1◻◻44◻222 write (3333:2) >> 3333 Oriol Borrás Gené @oriolupm
  • 118. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: Parámetros de formato de salida (real) write (expresionReal:m:n, …) Oriol Borrás Gené @oriolupm ● Por defecto la salida de valores reales se escribe en notación científica. Ej.: 2.57384570E+2 ● Escribe el entero o el resultado de la expresión entera justificado por la derecha un valor “m”. ● La salida puede ser mayor al espacio indicado por m. ● n indica el número de decimales (con redondeo)
  • 119. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: Parámetros de formato de salida (real) ◻ = espacio en blanco Ejemplos: a -> 4123.456700 write (a); write (a:29); write (a:1); write (a:16); write (a:100) write (a:7:2); write (a:19:2); write (a:1:2); (se muestra el real en formato decimal y no científico) Oriol Borrás Gené @oriolupm
  • 120. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: Parámetros de formato de salida (booleanos) write (booleanos:m, …) Oriol Borrás Gené @oriolupm ● Escribe el booleano justificado por la derecha un valor “m”. Ejemplo: ◻ = espacio en blanco writeln (true:5) >> ◻true
  • 121. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “escritura”: Ejercicios 1. a := 15.389; 3. writeln (5 * 7 + 2:5); writeln (a:8:2); write (3.5E-3:3:4); writeln(555:8); 2. writeln (‘Hola que tal’); 4. writeln (5 * 7 = 5); write (‘estoy’); 5. writeln (5 * 1 = 5:2); write (‘bien’:5); Oriol Borrás Gené @oriolupm
  • 122. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “lectura”: ● La lectura o entrada de datos siempre se hace desde un archivo. ● El archivo especial INPUT es el teclado de la computadora, almacenando en este archivo todas las pulsaciones del teclado. ● El resto de archivos se denominan mediante un identificador definido por el usuario. Oriol Borrás Gené @oriolupm
  • 123. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “lectura”: Se realiza mediante las órdenes read o readln con la siguiente sintaxis: read (<nombre_fichero>, var1, var2, …, varn) readln (<nombre_fichero>, var1, var2, …, varn) Las variables no pueden ser de tipo boolean. Oriol Borrás Gené @oriolupm Si se omite el <nombre_fichero> la entrada será por el archivo input.
  • 124. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “lectura”: El resultado de readln es el mismo que read leyendo los “n” datos del <nombre_fichero> (o archivo input - teclado-) y los asigna a las “n” variables expresadas como argumentos. Para el caso de readln además una vez leídos sus argumentos ignora si hay más valores en el fichero y posiciona la siguiente lectura en la línea siguiente. ● Readln escrito solo hará una pausa hasta que se pulse “Intro” ● El salto de línea ↵ lo incluye como salto de línea Oriol Borrás Gené @oriolupm
  • 125. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “lectura”: Ejercicio http://rextester.com/l/pascal_online_compiler program leer; var a,b,c: char; begin writeln('pruebas varias'); ¿readln? ¿read? writeln('a = ',a,' b = ',b,' c = ',c, '.'); end. Oriol Borrás Gené @oriolupm
  • 126. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “lectura”: Lectura (ejercicio casa) PROGRAM lectura; VAR a, b : integer; r : real; l, m : char; BEGIN read (l,a); readln (r,m); read (m,b): readln; read (a); END. Oriol Borrás Gené @oriolupm Entradas teclado: a 4 3↵ buenas↵ 71 23 4 ↵ 10 30 ¿Valor final de a, b, r, l y m?
  • 127. 1.3. Tipos de datos definidos por el programador Instrucciones básicas “lectura”: Ejercicio casa PROGRAM lectura; VAR a, b : integer; r : real; l, m : char; BEGIN read (l,a); readln (r,m); read (m,b): readln; read (a); END. Entradas teclado: a 4 3↵ buenas↵ 71 23 4 ↵ 10 30 Pasos a b r l m 0 4 ¿? ¿? ‘a’ ¿? 1 4 ¿? 3.0 ‘a’ ↵ 2 4 1 3.0 ‘a’ ‘7’ 3 4 1 3.0 ‘a’ ‘7’ 4 10 1 3.0 ‘a’ ‘7’
  • 128. 1.4. La documentación del programa 1.4. La documentación del programa Oriol Borrás Gené @oriolupm Aspectos relevantes ● Comentarios: ○ Descripción del funcionamiento: subprogramas, bloques, etc. ○ Condiciones de entrada ○ Condiciones de salida ○ ... ● Estructuración del programa fuente ● Elección de identificadores ● ...
  • 129. 1.5. Normas de estilo Oriol Borrás Gené @oriolupm Claridad del texto en el programa: ● Una instrucción por línea -> Retornos de línea ● Reflejar la estructura del programa de manera visual -> Tabuladores ● No exceder la longitud de pantalla -> Longitud de línea Elegir un criterio de escritura: ● Constantes en mayúscula ● Variables en minúscula -> nombres compuestos la inicial de la segunda palabra en mayúscula ● Palabras clave o reservadas en mayúscula ● Tipos comienzan con T
  • 130. Oriol Borrás Gené @oriolupm PROGRAM NombrePrograma(input, output); { Propósito/objetivo: } { Entrada: } { Salida: } CONST {Definición de constantes} CONSTANTES = #VALOR; {} VAR {Declaración de variables} variables : tipo; {} BEGIN {Programa principal} Instrucción1; Instrucción2; ...; InstrucciónN; END. {Programa principal} 1.5. Normas de estilo
  • 131. 1.5. Normas de estilo Oriol Borrás Gené @oriolupm Elección de identificadores ● Criterio para la semántica: ○ Buscar una palabras o palabras que representen el objetivo o el significado del identificador ● Criterio para la sintaxis: ○ Evitar identificadores de gran longitud
  • 132. Ejercicios para casa Oriol Borrás Gené @oriolupm Ejercicios de autoevaluación tema 1 (Casa) https://goo.gl/forms/tsYfkwmIGTHB01072
  • 133. Bibliografía PAREJA, C. (1997). Desarrollo de Algoritmos y Técnicas de programación en Pascal. http://antares.sip.ucm.es/cpareja/libroAlgoritmos/ URJC. Apuntes de la asignatura. Hernández Yáñez, L. (2013). Fundamentos de la programación (apuntes de clase). https://www.fdi.ucm.es/profesor/luis/fp/FP.pdf Zayas Alzamora, R. y Escobar Santiesteban, R. (2013). Aprenda Pascal. https://milenguaje.files.wordpress.com/2009/03/aprenda-pascal.pdf Enlaces: http://recursos.salonesvirtuales.com/wp-content/uploads/bloques/2012/07/AlgoritmoSoluciondeProb lema.pdf