SlideShare una empresa de Scribd logo
Introducción a la
programación
Oriol Borrás Gené @oriolUPM
Repaso general
Curso 2017/18
Identificadores
Definidos por el programador
Criterios:
● Letras y dígitos, empezando por letra solo
● No se permiten espacios en blanco
● No hay distinción entre mayúscula y minúscula
● No se permiten caracteres especiales.
● Evitar identificadores muy largos
● No pueden ser palabras reservadas
● Únicos en un programa
LetraAZ
Dígito
Definiendo un programa en Pascal
Program <identificador>;
ENCABEZAMIENTO
DECLARACIONES
CUERPO
USES
idUnidad1, idUnidad2;
CONST
IDENTIFICADOR1 = valor1;
TYPE
XXXX
VAR
idVar1 : tipo;
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.
CONST
IDENTIFICADOR1 = valor1;
IDENTIFICADOR2 = valor2;
…
IDENTIFICADORn = valorn;
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.
El tipo de una variable permanece a lo largo de todo el programa
VAR
Identificador1,Identificador2, … identificadorn: tipo1;
Identificador11, Identificador12, … identificador1n: tipo2;
Tipos de datos (simples)
Predefinidos
Tipo integer (definición)
● Dominio 𝕫 (incluye enteros positivos o negativos)
● Acotado por la constante predefinida MaxInt
● En Turbo Pascal (2 bytes) su valor es 32767 -> {-32767 … 32767}
● Sin espacios ni puntos, el signo precede al número
● Posibilidad de desbordamiento
Tipos de datos (simples)
Predefinidos
Tipo real (definición)
● Dominio ℝ (incluye valores numéricos con parte decimal)
● Intervalo acotado (4 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
Tipos de datos (simples)
Predefinidos
Tipo char (definición)
● Dominio C (juego de caracteres disponibles en
la computadora)
● Intervalo acotado: juego de caracteres ASCII de
8 bits (256 caracteres)
● Se escribe entre apóstrofes ´
Fuente: https://es.wikipedia.org/wiki/ASCI
Tipos de datos (simples)
Predefinidos
Tipo boolean (definición)
● Proviene del álgebra de Boole, dominio ß (incluye dos valores lógicos)
● Intervalo acotado: true y false
● Se utiliza en expresiones lógicas
Operadores lógicos
● not (negación lógica)
● and (conjunción lógica)
● or (disyunción lógica)
Operadores relacionales
= (igual) > (mayor)
<> (distinto) >= (mayor o igual)
< (menor)
<= (menor o igual)
Tipos de datos (simples)
Predefinidos
Tipo string (definición)
● String = Cadenas de Caracteres (TURBO PASCAL
= array de Caracteres (PASCAL)
● Sintaxis:
identificador: string[MAX];
MAX es una constante entera que
especifica el número máximo de
caracteres que puede llegar a tener la
cadena (por defecto 255).
Tipos de datos (simples)
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. =, <>, <, <=, >, >=
Tipos de datos (simples - type)
Definidos por el programador
TYPE
identificadorTipo = <tipo_dato_definido>;
Tipos de datos (simples - type)
Definidos por el programador
Datos enumerados (sintaxis):
identificadorTipo = (listado de identificadores);
● Son tipos ordinales al igual que los tipos predefinidos integer, char y boolean
y los operadores relacionales son aplicables a los tipos enumerados.
● Los valores de un tipo enumerado no se pueden leer ni escribir directamente.
● No se pueden repetir valores en diferentes definiciones de tipos enumerados.
● Los valores de un tipo enumerado siempre son identificadores.
Tipos de datos (simples - type)
Definidos por el programador
Datos subrango (sintaxis):
identificadorTipo = CONST .. CONST;
● Intervalo de un dominio ordinal ya existente, bien de un tipo predefinido, o bien
de un tipo creado con anterioridad
● Ord (constante 1)<= Ord (constante 2)
Tipos de datos (simples - type)
Definidos por el programador
Arrays (sintaxis):
identificadorTipo = ARRAY [listado de TipoIndices] OF Tipobase
● Integer:
● Array de una dimensión recorrido por un indice i de tipo ¿integer, char, definido por
usuario?
5 9 29 234 0 -23 56 …
i
Tipos de datos (simples - type)
Definidos por el programador
Arrays (sintaxis):
identificadorTipo = ARRAY [listado de TipoIndices] OF Tipobase
● Real:
● Array de dos dimensiones recorrido por dos indices i,j de tipo ¿integer, char, definido por
usuario?
5.5 9.0 67.7 -23.6 0.02 -23.0 56.4 …
4.5 45.2
i
j
Tipos de datos (compuestos)
Registros
identificadorTipo = RECORD
idCampo1, idCampo2, … : idTipo1;
idCampo3, idCampo4, … : idTipo2;
…
END;
idTipo puede ser cualquier tipo de los vistos:
● Predefinidos: integer, char, boolean o real
● Definidos por el usuario: array, enumerados, subrango o registro
Ejemplo
tRegistro
Integer
Real
String
A R R A Y
(l,m,x,j,v)
Tipos de datos (compuestos)
Arrays de registros
TYPE
identificadorTipo = RECORD
idCampo1, idCampo2, … : idTipo1;
idCampo3, idCampo4, … : idTipo2;
…
END;
tArray = ARRAY (1..100) OF identificadorTipo;
1 2 3 4 5 6 … 100
Tipos de datos (resumen)
Asignación e inicialización de variables
En general para asignar un valor a una variable tipo dato simple:
identificador := expresion
Arrays:
identificadorArray[i] := expresion
Registros
identificadorRegistro.idCampo := expresion
Acceso a variables
En general para acceder a un valor de una variable tipo dato simple:
Uso del identificador directamente que representa a la variable
que almacena un valor en función del tipo definido.
Arrays y registros:
Acceso elemento a elemento mediante bucles.
Subprogramas
Subprogramas
Procedimientos
● Instrucciones definidas por el programador
● Ejecuta un proceso especifico y devuelve varios (más de uno) o ningún
resultado.
● Se usan cuando las funciones no son apropiadas.
PROCEDURE idenProced [( [VAR] [idenparam:tipo,...];...) ];
[declaraciones ]
BEGIN
[Cuerpo de instrucciones ]
END;
Subprogramas
Funciones
● Expresiones definidas por el programador.
● Es una operación que normalmente toma uno o más valores denominados
argumentos y produce un valor denominado resultado.
● Es similar a la función matemática.
FUNCTION idenfunc [( [VAR] [idenparam:tipo,...];...) ]: tipo;
[declaraciones ]
BEGIN
[Cuerpo de instrucciones ]
idenfunc := expresion;
END;
Subprogramas
Parámetros
● Parámetros formales o ficticios (en el subprograma) / reales (en el programa
principal).
● Los parámetros formales serán de dos tipos: por valor (entrada) / referencia
(entrada/salida o salida) [VAR]
● Variables locales / globales
Efectos LATERALES:
● No se pasan variables como parámetros
● Quedan absolutamente prohibidas (disminuyen la reusabilidad del subprograma y
dificultan la depuración y verificación del programa).
Subprogramas
Recursividad
● Un subprograma es recursivo si se llama a sí mismo, bien directamente o bien
a través de otro subprograma.
● Forma natural de implementar relaciones recurrentes.
● Es una técnica de repetición (alternativa al uso de bucles).
● Sintaxis habitual de las llamadas a subprogramas.
● El proceso se repite, hasta que se llegue a un caso base (una llamada que
devuelve un resultado o no provoca una llamada recursiva).
Subprogramas
Recursividad
Ejemplo: Factorial (mediante iteración)
PROGRAM ejemplo;
…
FUNCTION factorial (num:integer):integer;
BEGIN
IF (num=0) THEN
factorial :=1
ELSE
factorial := num * factorial(num-1);
END;
Caso base:
• dados los parámetros de entrada, la solución
del problema es “simple”.
• no se generan llamadas recursivas, y se
devuelve directamente una solución.
• Ejemplo: 0! = 1
Caso recurrente:
• caso más complejo: no hay solución trivial.
• se reduce a otro caso más simple.
• Ejemplo: 4! = 4*3!
Cuerpo programa principal
1. Inicializar variables
2. Es el índice y el resumen del programa:
● No abusar de instrucciones
● Tampoco dejarlo vacío sin información
Instrucciones
Predefinidas
abs (): valor absoluto
sqr (): cuadrado
sqrt (): raíz cuadrada
sin (): seno
cos (): coseno
arctan (): arcotangente
ln (): logaritmo neperiano
exp (): función exponencial
pred (): predecesor
succ (): sucesor
ord (): nº orden ASCII del carácter
chr (): carácter asociado a un nº de orden
Funciones de conversión de ℝ a 𝕫:
• trunc (x): devuelve la parte entera de x
• round (x): redondea x al entero más próximo
Instrucciones
Predefinidas (strings)
Concat (cadena1, cadena2): concatenación de las dos cadenas
length (cadena): devuelve la longitud de la cadena
pos(cadena1, cadena2): devuelve la posición (valor entero) en la que comienza la cadena1 dentro de
cadena2, o el valor 0 cuando cadena1 no está incluida en cadena2.
copy (cadena, posición, tamaño): devuelve una subcadena de cadena, formada por tamaño caracteres a
partir de posición.
delete (cadena, posición, tamaño): borra tamaño caracteres de cadena a partir de posición. La cadena
reduce su longitud en el número de caracteres eliminados.
Insert (cadena1, cadena2, posición): inserta cadena1 en cadena2 a partir de posición. La cadena2 aumenta
su longitud con el número de caracteres igual a la longitud de la cadena1.
str (expresion-numerica, cadena): convierte el valor de expresión-numérica en cadena (su representación
como cadena de caracteres).
val (cadena, valorNumérico, código-error): convierte cadena en su valor numérico real valorNumérico
(también puede ser un entero) y devuelve un código-error (integer) cuyo valor podrá ser: 0 si se puede
hacer la conversión, o la posición del primer carácter que produjo el error en caso contrario.
Instrucciones
Predefinidas (lectura y escritura)
Escritura
● 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
write (<nombre_fichero>, expresion1, expresion2, …, expresionn)
writeln (<nombre_fichero>, expresion1, expresion2, …, expresionn)
write (expresionReal:m:n, …)
Instrucciones
Predefinidas (lectura y escritura)
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.
read (<nombre_fichero>, var1, var2, …, varn)
readln (<nombre_fichero>, var1, var2, …, varn)
Instrucciones
Bloque de instrucciones o instrucciones compuestas:
BEGIN
Secuencia de instrucciones separadas por el carácter “;”
END (sin punto)
Instrucciones
Estructuras de selección: IF
IF <ExpresionBooleana> THEN
<Instruccion1>
[ELSE]
<Instruccion2>
IF <ExpresionBooleana1> THEN
<Instruccion1>
[ELSE IF <ExpresionBooleana2>
THEN]
<Instruccion2>
[ELSE IF <ExpresionBooleana2> THEN]
<Instruccionn>
[ELSE]
<Instruccion B>
Instrucciones
Estructuras de selección: CASE
CASE <expresionSelectora> OF
<etiqueta1>: <Instrucción1>;
<etiqueta2>: <Instrucción2>;
. . .
<etiquetaN>: <InstrucciónN>
[ELSE
<InstrucciónELSE>; ]
END {CASE}
Instrucciones
Estructuras de iteracción : WHILE
WHILE <expresión booleana> DO
BEGIN
<instrucción1>;
<instrucción2>;
…
END;
Instrucciones
Estructuras de iteracción : REPEAT
REPEAT
<instrucción1> ;
...
<instrucciónN> ;
UNTIL <expresión booleana>
Instrucciones
Estructuras de iteracción : FOR
FOR indice:= <expr. inicial> TO <expr. final> DO
<instrucción>
FOR indice:= <expr. inic> DOWNTO <expr. fin> DO
<instrucción>
Ficheros
● Secuencia homogénea de datos de tamaño no fijado de antemano que facilitan
● El almacenamiento de los datos se realiza en memoria externa o auxiliar
● Nombre físico de un fichero: el nombre que tiene asignado en memoria externa (disco,
etc.).
● Nombre lógico de un fichero: identificador válido Pascal asociado a un archivo o
nombre físico.
Assign (ficheroLogico, ficheroFisico); ->
assign(ficheroTarjetas,’c:tardatos.txt’);
EOF
Ficheros
● Se pasan siempre como parámetros por referencia (VAR).
● Todo fichero antes de ser procesado debe ser “abierto” y una vez procesado
debe ser “cerrado”.
● Los modos de apertura varían en función del tipo de operaciones (lectura,
escritura) que se realizarán con el fichero.
Ficheros
Ficheros de texto -> Acceso secuencial
● Son archivos de secuencias de caracteres de longitud variable (líneas) separadas por el
carácter de fin de línea (EOLN).
VAR
archivoTexto : text;
Apertura para lectura.
reset (ArchivoTexto);
● Este procedimiento abre el archivo sólo para lectura; no se puede escribir en él.
● Presupone que el fichero existe. Si el fichero no existe se produce un error.
Ficheros
Ficheros de texto
Apertura para lectura.
● Se lleva a cabo mediante Read o ReadLn (utilizando el formato explícito)
Read (varArchivoTexto, listaParametros);
ReadLn (varArchivoTexto, listaParametros);
● Hay dos funciones asociadas a la detección de la marca de fin de línea y de fin de
fichero
EOLN(varArchivo): boolean
EOF(varArchivo): boolean
Ficheros
Ficheros de texto
Apertura para lectura.
● Si se quieren leer todas las líneas del fichero habrá que incluir en el cuerpo de un bucle
la instrucción de lectura:
ReadLn (varArchivoTexto, listaParametros);
● La condición de salida del bucle se producirá cuando se detecte el fin del fichero
Ficheros
Ficheros de texto
Apertura para escritura
REWRITE (archivoTexto);
● Este procedimiento abre el archivo sólo para escritura, no para lectura, y coloca el
apuntador al principio del archivo
● Cada llamada a Rewrite destruye el contenido previo del archivo (si es que existe) y, una
vez ejecutada, el archivo queda preparado para escribir en él.
● Se lleva a cabo mediante Write o WriteLn (utilizando el formato explícito):
Write (archivoTexto, listaParametros);
WriteLn (archivoTexto,listaParametros);
Ficheros
Ficheros de texto
Apertura para escritura
APPEND (VAR archivoTexto:text);
● Abre el archivo de texto en modo escritura para poder añadir más texto al final del
mismo.
Cierre de ficheros
CLOSE (archivoTexto);
Ficheros
Ficheros binarios -> Acceso directo
● Archivos cuyos componentes se almacenan en la representación interna de la máquina;
es decir, con los mismos patrones de bits con los que se almacenan en memoria principal
TYPE
nombreTipoFichero = File OF tipoBase;
● Secuencia homogénea de datos de tamaño no fijado de antemano que facilitan
● El almacenamiento de los datos se realiza en memoria externa o auxiliar
● La función EOLN no se utiliza con ficheros binarios
● Writeln no se utiliza con ficheros binarios
● Readln no se utiliza con ficheros binarios
Ficheros
Ficheros binarios
Apertura para lectura.
reset (archivoBinario);
● Es una apertura que con ficheros binarios permite tanto operaciones de lectura como de
escritura (no es así para archivos de texto) indistintamente.
● Cada llamada a Reset coloca el apuntador de los datos al principio del archivo
Read (varArchivo, varcomponente);
● Nunca readln
Ejemplo:
ASSIGN(f,’c:programasdatos.dat’);
...
RESET(f);
WHILE NOT EOF(f) DO BEGIN
READ(f,r);
Procesar la variable r}
END; {WHILE}
Ficheros
Ficheros binarios
Apertura para escritura
REWRITE (archivoBinario); {primera vez, las siguientes veces una vez
creado se utilizará para abrirlo RESET (archivoBinario))
● Este procedimiento abre el archivo sólo para escritura, no para lectura, y coloca el
apuntador al principio del archivo
● Cada llamada a Rewrite destruye el contenido previo del archivo (si es que existe) y, una
vez ejecutada, el archivo queda preparado para escribir en él.
● Nunca writeln
write(archivoBinario,varComponente);
Ficheros
Ficheros binarios
Ficheros de acceso directo (Turbo Pascal)
SEEK (varFichero, puntero)
varFichero: tipo fichero binario
Puntero: longint (entero largo)
● Sitúa el puntero en la posición que indica puntero.
● Recuérdese que el primer registro ocupa la posición 0.
Ficheros
Ficheros binarios
Ficheros de acceso directo (Turbo Pascal)
FILEPOS (var_fichero)
● Devuelve la posición del elemento sobre el que se encuentra el puntero
FILESIZE (var_fichero)
● Devuelve el número de elementos que tiene el fichero.
● Última posición escrita:
Seek (varFichero, FileSize(varFichero));
Ficheros
Ficheros binarios
Control de errores de E/S con ficheros
● Para evitar que el programa detenga su ejecución se puede desactivar el sistema de
detección de errores ({$I-}) y realizar ese control desde el propio programa
● Este control se realiza con la función IOResult
- Devuelve valor 0 si la última operación de E/S se ha realizado con éxito
- Otro valor en caso contrario BEGIN
…
{$I-} {se desactiva para controlar Reset}
RESET(archivo);
{$I+} {se activa para que detecte otros posibles errores}
IF (IOResult= 0) THEN
…
Ficheros: Tabla Resumen Operaciones
Operaciones Ficheros de texto Ficheros Binarios
Asignación assign() assign()
Apertura para lectura reset() reset()
Apertura para escritura rewrite()
append()
rewrite()
reset()
Lectura read()
readln()
read()
Escritura write()
writeln()
write()
Cierre close() close()
Detección fin línea eoln()
Detección fin fichero eof() eof()
Ficheros: Tabla Resumen Operaciones
Operaciones Ficheros de texto Ficheros Binarios
Posicionar el puntero seek()
Obtener posición del puntero filepos()
Obtener nº componentes filesize()
Obtener dir. Actual getdir() getdir()
Cambiar dir. Actual chdir() chdir()
Crear directorio mkdir() mkdir()
Eliminar directorio rmdir() rmdir()
Cambiar nombre físico del fichero rename() rename()

Más contenido relacionado

PDF
Tema 1. elementos básicos de pascal #ipg2murjc
PDF
01 - Introducción al lenguaje de programación Python 3
PDF
02 - Tipos de datos escalares en Python 3
PDF
04 j flex
PDF
Introducción a la programación y la informática. Tema 7
PPT
Transpar Tema1a
PPT
Claselexico
PDF
Cómo hacer un parser en go (y no morir en el intento)
Tema 1. elementos básicos de pascal #ipg2murjc
01 - Introducción al lenguaje de programación Python 3
02 - Tipos de datos escalares en Python 3
04 j flex
Introducción a la programación y la informática. Tema 7
Transpar Tema1a
Claselexico
Cómo hacer un parser en go (y no morir en el intento)

La actualidad más candente (20)

PPTX
Introduccion a la programacion
PDF
Maraton de-programacion-10-nov-2007
PDF
PDF
Tema 1. elementos básicos de pascal #ipg2murjc
PPTX
Desarrollo aplicaciones visuales
PPTX
Desarrollo aplicaciones visuales
PPTX
Desarrollo aplicaciones visuales
PDF
Compiladores, Analisis Lexico Conceptos
ODP
Introducción a DSL (Lenguajes Específicos de Dominios) con Python
PPT
Introducci _ã_n a c - unidad 02 - elementos del lenguaje
PPT
IC - Estructuras de Secuencia - Ejercicios
DOCX
Compuertas lógicas
DOCX
Manual basico arduino
DOCX
37 tarazona karen programacion
DOCX
Informe tecnico u4 final
PPTX
Nuevo presentación de microsoft power point (2)
PPT
IC estructuras de secuencia
PDF
Chuleta de lenguaje C para principiantes
PPTX
Fundamentos de Programación - Unidad II: Introducción a la Programación
PDF
Apuntes arduino nivel_pardillo
Introduccion a la programacion
Maraton de-programacion-10-nov-2007
Tema 1. elementos básicos de pascal #ipg2murjc
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
Compiladores, Analisis Lexico Conceptos
Introducción a DSL (Lenguajes Específicos de Dominios) con Python
Introducci _ã_n a c - unidad 02 - elementos del lenguaje
IC - Estructuras de Secuencia - Ejercicios
Compuertas lógicas
Manual basico arduino
37 tarazona karen programacion
Informe tecnico u4 final
Nuevo presentación de microsoft power point (2)
IC estructuras de secuencia
Chuleta de lenguaje C para principiantes
Fundamentos de Programación - Unidad II: Introducción a la Programación
Apuntes arduino nivel_pardillo
Publicidad

Similar a Resumen asignatura de Introducción a la Programación (20)

PDF
Elementos basicos de_programacion
PDF
ELEMENTOS DE PROGRA 30-05.pdf
PPTX
02.1 - Estructura_General_De_Programa.pptx
PPT
Introduccion al lenguaje c_EderHenriquez
PDF
Elementos basicos de programacion
PDF
Pascal [modo de compatibilidad]
PPTX
programación Milton.pptx
PPT
Clase 3introduccion a_lenguace_c
PPTX
Introducción al lenguaje c
ODP
Introducción a la programación en Python
PPT
Lenguajec diapositivas
PPTX
Introducción
PPTX
Introducción
PDF
P03.Programación en c para pics
PDF
conceptos basicos lenguajes de programacion.pdf
PPT
Clases 2 dfd y basico 2011
PDF
Grupo 6 turbopascal apesteguia (1)
PPT
Lenguajec 1
PDF
Java8 : Más allá de las Expresiones Lambdas
Elementos basicos de_programacion
ELEMENTOS DE PROGRA 30-05.pdf
02.1 - Estructura_General_De_Programa.pptx
Introduccion al lenguaje c_EderHenriquez
Elementos basicos de programacion
Pascal [modo de compatibilidad]
programación Milton.pptx
Clase 3introduccion a_lenguace_c
Introducción al lenguaje c
Introducción a la programación en Python
Lenguajec diapositivas
Introducción
Introducción
P03.Programación en c para pics
conceptos basicos lenguajes de programacion.pdf
Clases 2 dfd y basico 2011
Grupo 6 turbopascal apesteguia (1)
Lenguajec 1
Java8 : Más allá de las Expresiones Lambdas
Publicidad

Más de Oriol Borras Gene (20)

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

Último (20)

DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PDF
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
PDF
IPERC...................................
PDF
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
PDF
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
PDF
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
informe tipos de Informatica perfiles profesionales _pdf
DOCX
Programa_Sintetico_Fase_4.docx 3° Y 4°..
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE_COM.pdf
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PPTX
Doctrina 1 Soteriologuia y sus diferente
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
2.0 Introduccion a processing, y como obtenerlo
PDF
Nadie puede salvarte excepto Tú - Madame Rouge Ccesa007.pdf
PDF
Esc. Sab. Lección 7. El pan y el agua de vida.pdf
V UNIDAD - SEGUNDO GRADO. del mes de agosto
Iniciación Al Aprendizaje Basado En Proyectos ABP Ccesa007.pdf
IPERC...................................
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
Aqui No Hay Reglas Hastings-Meyer Ccesa007.pdf
Tomo 1 de biologia gratis ultra plusenmas
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
informe tipos de Informatica perfiles profesionales _pdf
Programa_Sintetico_Fase_4.docx 3° Y 4°..
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE.pdf
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE_COM.pdf
Escuelas Desarmando una mirada subjetiva a la educación
Doctrina 1 Soteriologuia y sus diferente
V UNIDAD - PRIMER GRADO. del mes de agosto
2.0 Introduccion a processing, y como obtenerlo
Nadie puede salvarte excepto Tú - Madame Rouge Ccesa007.pdf
Esc. Sab. Lección 7. El pan y el agua de vida.pdf

Resumen asignatura de Introducción a la Programación

  • 1. Introducción a la programación Oriol Borrás Gené @oriolUPM Repaso general Curso 2017/18
  • 2. Identificadores Definidos por el programador Criterios: ● Letras y dígitos, empezando por letra solo ● No se permiten espacios en blanco ● No hay distinción entre mayúscula y minúscula ● No se permiten caracteres especiales. ● Evitar identificadores muy largos ● No pueden ser palabras reservadas ● Únicos en un programa LetraAZ Dígito
  • 3. Definiendo un programa en Pascal Program <identificador>; ENCABEZAMIENTO DECLARACIONES CUERPO USES idUnidad1, idUnidad2; CONST IDENTIFICADOR1 = valor1; TYPE XXXX VAR idVar1 : tipo;
  • 4. 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. CONST IDENTIFICADOR1 = valor1; IDENTIFICADOR2 = valor2; … IDENTIFICADORn = valorn;
  • 5. 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. El tipo de una variable permanece a lo largo de todo el programa VAR Identificador1,Identificador2, … identificadorn: tipo1; Identificador11, Identificador12, … identificador1n: tipo2;
  • 6. Tipos de datos (simples) Predefinidos Tipo integer (definición) ● Dominio 𝕫 (incluye enteros positivos o negativos) ● Acotado por la constante predefinida MaxInt ● En Turbo Pascal (2 bytes) su valor es 32767 -> {-32767 … 32767} ● Sin espacios ni puntos, el signo precede al número ● Posibilidad de desbordamiento
  • 7. Tipos de datos (simples) Predefinidos Tipo real (definición) ● Dominio ℝ (incluye valores numéricos con parte decimal) ● Intervalo acotado (4 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
  • 8. Tipos de datos (simples) Predefinidos Tipo char (definición) ● Dominio C (juego de caracteres disponibles en la computadora) ● Intervalo acotado: juego de caracteres ASCII de 8 bits (256 caracteres) ● Se escribe entre apóstrofes ´ Fuente: https://es.wikipedia.org/wiki/ASCI
  • 9. Tipos de datos (simples) Predefinidos Tipo boolean (definición) ● Proviene del álgebra de Boole, dominio ß (incluye dos valores lógicos) ● Intervalo acotado: true y false ● Se utiliza en expresiones lógicas Operadores lógicos ● not (negación lógica) ● and (conjunción lógica) ● or (disyunción lógica) Operadores relacionales = (igual) > (mayor) <> (distinto) >= (mayor o igual) < (menor) <= (menor o igual)
  • 10. Tipos de datos (simples) Predefinidos Tipo string (definición) ● String = Cadenas de Caracteres (TURBO PASCAL = array de Caracteres (PASCAL) ● Sintaxis: identificador: string[MAX]; MAX es una constante entera que especifica el número máximo de caracteres que puede llegar a tener la cadena (por defecto 255).
  • 11. Tipos de datos (simples) 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. =, <>, <, <=, >, >=
  • 12. Tipos de datos (simples - type) Definidos por el programador TYPE identificadorTipo = <tipo_dato_definido>;
  • 13. Tipos de datos (simples - type) Definidos por el programador Datos enumerados (sintaxis): identificadorTipo = (listado de identificadores); ● Son tipos ordinales al igual que los tipos predefinidos integer, char y boolean y los operadores relacionales son aplicables a los tipos enumerados. ● Los valores de un tipo enumerado no se pueden leer ni escribir directamente. ● No se pueden repetir valores en diferentes definiciones de tipos enumerados. ● Los valores de un tipo enumerado siempre son identificadores.
  • 14. Tipos de datos (simples - type) Definidos por el programador Datos subrango (sintaxis): identificadorTipo = CONST .. CONST; ● Intervalo de un dominio ordinal ya existente, bien de un tipo predefinido, o bien de un tipo creado con anterioridad ● Ord (constante 1)<= Ord (constante 2)
  • 15. Tipos de datos (simples - type) Definidos por el programador Arrays (sintaxis): identificadorTipo = ARRAY [listado de TipoIndices] OF Tipobase ● Integer: ● Array de una dimensión recorrido por un indice i de tipo ¿integer, char, definido por usuario? 5 9 29 234 0 -23 56 … i
  • 16. Tipos de datos (simples - type) Definidos por el programador Arrays (sintaxis): identificadorTipo = ARRAY [listado de TipoIndices] OF Tipobase ● Real: ● Array de dos dimensiones recorrido por dos indices i,j de tipo ¿integer, char, definido por usuario? 5.5 9.0 67.7 -23.6 0.02 -23.0 56.4 … 4.5 45.2 i j
  • 17. Tipos de datos (compuestos) Registros identificadorTipo = RECORD idCampo1, idCampo2, … : idTipo1; idCampo3, idCampo4, … : idTipo2; … END; idTipo puede ser cualquier tipo de los vistos: ● Predefinidos: integer, char, boolean o real ● Definidos por el usuario: array, enumerados, subrango o registro Ejemplo tRegistro Integer Real String A R R A Y (l,m,x,j,v)
  • 18. Tipos de datos (compuestos) Arrays de registros TYPE identificadorTipo = RECORD idCampo1, idCampo2, … : idTipo1; idCampo3, idCampo4, … : idTipo2; … END; tArray = ARRAY (1..100) OF identificadorTipo; 1 2 3 4 5 6 … 100
  • 19. Tipos de datos (resumen)
  • 20. Asignación e inicialización de variables En general para asignar un valor a una variable tipo dato simple: identificador := expresion Arrays: identificadorArray[i] := expresion Registros identificadorRegistro.idCampo := expresion
  • 21. Acceso a variables En general para acceder a un valor de una variable tipo dato simple: Uso del identificador directamente que representa a la variable que almacena un valor en función del tipo definido. Arrays y registros: Acceso elemento a elemento mediante bucles.
  • 23. Subprogramas Procedimientos ● Instrucciones definidas por el programador ● Ejecuta un proceso especifico y devuelve varios (más de uno) o ningún resultado. ● Se usan cuando las funciones no son apropiadas. PROCEDURE idenProced [( [VAR] [idenparam:tipo,...];...) ]; [declaraciones ] BEGIN [Cuerpo de instrucciones ] END;
  • 24. Subprogramas Funciones ● Expresiones definidas por el programador. ● Es una operación que normalmente toma uno o más valores denominados argumentos y produce un valor denominado resultado. ● Es similar a la función matemática. FUNCTION idenfunc [( [VAR] [idenparam:tipo,...];...) ]: tipo; [declaraciones ] BEGIN [Cuerpo de instrucciones ] idenfunc := expresion; END;
  • 25. Subprogramas Parámetros ● Parámetros formales o ficticios (en el subprograma) / reales (en el programa principal). ● Los parámetros formales serán de dos tipos: por valor (entrada) / referencia (entrada/salida o salida) [VAR] ● Variables locales / globales Efectos LATERALES: ● No se pasan variables como parámetros ● Quedan absolutamente prohibidas (disminuyen la reusabilidad del subprograma y dificultan la depuración y verificación del programa).
  • 26. Subprogramas Recursividad ● Un subprograma es recursivo si se llama a sí mismo, bien directamente o bien a través de otro subprograma. ● Forma natural de implementar relaciones recurrentes. ● Es una técnica de repetición (alternativa al uso de bucles). ● Sintaxis habitual de las llamadas a subprogramas. ● El proceso se repite, hasta que se llegue a un caso base (una llamada que devuelve un resultado o no provoca una llamada recursiva).
  • 27. Subprogramas Recursividad Ejemplo: Factorial (mediante iteración) PROGRAM ejemplo; … FUNCTION factorial (num:integer):integer; BEGIN IF (num=0) THEN factorial :=1 ELSE factorial := num * factorial(num-1); END; Caso base: • dados los parámetros de entrada, la solución del problema es “simple”. • no se generan llamadas recursivas, y se devuelve directamente una solución. • Ejemplo: 0! = 1 Caso recurrente: • caso más complejo: no hay solución trivial. • se reduce a otro caso más simple. • Ejemplo: 4! = 4*3!
  • 28. Cuerpo programa principal 1. Inicializar variables 2. Es el índice y el resumen del programa: ● No abusar de instrucciones ● Tampoco dejarlo vacío sin información
  • 29. Instrucciones Predefinidas abs (): valor absoluto sqr (): cuadrado sqrt (): raíz cuadrada sin (): seno cos (): coseno arctan (): arcotangente ln (): logaritmo neperiano exp (): función exponencial pred (): predecesor succ (): sucesor ord (): nº orden ASCII del carácter chr (): carácter asociado a un nº de orden Funciones de conversión de ℝ a 𝕫: • trunc (x): devuelve la parte entera de x • round (x): redondea x al entero más próximo
  • 30. Instrucciones Predefinidas (strings) Concat (cadena1, cadena2): concatenación de las dos cadenas length (cadena): devuelve la longitud de la cadena pos(cadena1, cadena2): devuelve la posición (valor entero) en la que comienza la cadena1 dentro de cadena2, o el valor 0 cuando cadena1 no está incluida en cadena2. copy (cadena, posición, tamaño): devuelve una subcadena de cadena, formada por tamaño caracteres a partir de posición. delete (cadena, posición, tamaño): borra tamaño caracteres de cadena a partir de posición. La cadena reduce su longitud en el número de caracteres eliminados. Insert (cadena1, cadena2, posición): inserta cadena1 en cadena2 a partir de posición. La cadena2 aumenta su longitud con el número de caracteres igual a la longitud de la cadena1. str (expresion-numerica, cadena): convierte el valor de expresión-numérica en cadena (su representación como cadena de caracteres). val (cadena, valorNumérico, código-error): convierte cadena en su valor numérico real valorNumérico (también puede ser un entero) y devuelve un código-error (integer) cuyo valor podrá ser: 0 si se puede hacer la conversión, o la posición del primer carácter que produjo el error en caso contrario.
  • 31. Instrucciones Predefinidas (lectura y escritura) Escritura ● 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 write (<nombre_fichero>, expresion1, expresion2, …, expresionn) writeln (<nombre_fichero>, expresion1, expresion2, …, expresionn) write (expresionReal:m:n, …)
  • 32. Instrucciones Predefinidas (lectura y escritura) 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. read (<nombre_fichero>, var1, var2, …, varn) readln (<nombre_fichero>, var1, var2, …, varn)
  • 33. Instrucciones Bloque de instrucciones o instrucciones compuestas: BEGIN Secuencia de instrucciones separadas por el carácter “;” END (sin punto)
  • 34. Instrucciones Estructuras de selección: IF IF <ExpresionBooleana> THEN <Instruccion1> [ELSE] <Instruccion2> IF <ExpresionBooleana1> THEN <Instruccion1> [ELSE IF <ExpresionBooleana2> THEN] <Instruccion2> [ELSE IF <ExpresionBooleana2> THEN] <Instruccionn> [ELSE] <Instruccion B>
  • 35. Instrucciones Estructuras de selección: CASE CASE <expresionSelectora> OF <etiqueta1>: <Instrucción1>; <etiqueta2>: <Instrucción2>; . . . <etiquetaN>: <InstrucciónN> [ELSE <InstrucciónELSE>; ] END {CASE}
  • 36. Instrucciones Estructuras de iteracción : WHILE WHILE <expresión booleana> DO BEGIN <instrucción1>; <instrucción2>; … END;
  • 37. Instrucciones Estructuras de iteracción : REPEAT REPEAT <instrucción1> ; ... <instrucciónN> ; UNTIL <expresión booleana>
  • 38. Instrucciones Estructuras de iteracción : FOR FOR indice:= <expr. inicial> TO <expr. final> DO <instrucción> FOR indice:= <expr. inic> DOWNTO <expr. fin> DO <instrucción>
  • 39. Ficheros ● Secuencia homogénea de datos de tamaño no fijado de antemano que facilitan ● El almacenamiento de los datos se realiza en memoria externa o auxiliar ● Nombre físico de un fichero: el nombre que tiene asignado en memoria externa (disco, etc.). ● Nombre lógico de un fichero: identificador válido Pascal asociado a un archivo o nombre físico. Assign (ficheroLogico, ficheroFisico); -> assign(ficheroTarjetas,’c:tardatos.txt’); EOF
  • 40. Ficheros ● Se pasan siempre como parámetros por referencia (VAR). ● Todo fichero antes de ser procesado debe ser “abierto” y una vez procesado debe ser “cerrado”. ● Los modos de apertura varían en función del tipo de operaciones (lectura, escritura) que se realizarán con el fichero.
  • 41. Ficheros Ficheros de texto -> Acceso secuencial ● Son archivos de secuencias de caracteres de longitud variable (líneas) separadas por el carácter de fin de línea (EOLN). VAR archivoTexto : text; Apertura para lectura. reset (ArchivoTexto); ● Este procedimiento abre el archivo sólo para lectura; no se puede escribir en él. ● Presupone que el fichero existe. Si el fichero no existe se produce un error.
  • 42. Ficheros Ficheros de texto Apertura para lectura. ● Se lleva a cabo mediante Read o ReadLn (utilizando el formato explícito) Read (varArchivoTexto, listaParametros); ReadLn (varArchivoTexto, listaParametros); ● Hay dos funciones asociadas a la detección de la marca de fin de línea y de fin de fichero EOLN(varArchivo): boolean EOF(varArchivo): boolean
  • 43. Ficheros Ficheros de texto Apertura para lectura. ● Si se quieren leer todas las líneas del fichero habrá que incluir en el cuerpo de un bucle la instrucción de lectura: ReadLn (varArchivoTexto, listaParametros); ● La condición de salida del bucle se producirá cuando se detecte el fin del fichero
  • 44. Ficheros Ficheros de texto Apertura para escritura REWRITE (archivoTexto); ● Este procedimiento abre el archivo sólo para escritura, no para lectura, y coloca el apuntador al principio del archivo ● Cada llamada a Rewrite destruye el contenido previo del archivo (si es que existe) y, una vez ejecutada, el archivo queda preparado para escribir en él. ● Se lleva a cabo mediante Write o WriteLn (utilizando el formato explícito): Write (archivoTexto, listaParametros); WriteLn (archivoTexto,listaParametros);
  • 45. Ficheros Ficheros de texto Apertura para escritura APPEND (VAR archivoTexto:text); ● Abre el archivo de texto en modo escritura para poder añadir más texto al final del mismo. Cierre de ficheros CLOSE (archivoTexto);
  • 46. Ficheros Ficheros binarios -> Acceso directo ● Archivos cuyos componentes se almacenan en la representación interna de la máquina; es decir, con los mismos patrones de bits con los que se almacenan en memoria principal TYPE nombreTipoFichero = File OF tipoBase; ● Secuencia homogénea de datos de tamaño no fijado de antemano que facilitan ● El almacenamiento de los datos se realiza en memoria externa o auxiliar ● La función EOLN no se utiliza con ficheros binarios ● Writeln no se utiliza con ficheros binarios ● Readln no se utiliza con ficheros binarios
  • 47. Ficheros Ficheros binarios Apertura para lectura. reset (archivoBinario); ● Es una apertura que con ficheros binarios permite tanto operaciones de lectura como de escritura (no es así para archivos de texto) indistintamente. ● Cada llamada a Reset coloca el apuntador de los datos al principio del archivo Read (varArchivo, varcomponente); ● Nunca readln Ejemplo: ASSIGN(f,’c:programasdatos.dat’); ... RESET(f); WHILE NOT EOF(f) DO BEGIN READ(f,r); Procesar la variable r} END; {WHILE}
  • 48. Ficheros Ficheros binarios Apertura para escritura REWRITE (archivoBinario); {primera vez, las siguientes veces una vez creado se utilizará para abrirlo RESET (archivoBinario)) ● Este procedimiento abre el archivo sólo para escritura, no para lectura, y coloca el apuntador al principio del archivo ● Cada llamada a Rewrite destruye el contenido previo del archivo (si es que existe) y, una vez ejecutada, el archivo queda preparado para escribir en él. ● Nunca writeln write(archivoBinario,varComponente);
  • 49. Ficheros Ficheros binarios Ficheros de acceso directo (Turbo Pascal) SEEK (varFichero, puntero) varFichero: tipo fichero binario Puntero: longint (entero largo) ● Sitúa el puntero en la posición que indica puntero. ● Recuérdese que el primer registro ocupa la posición 0.
  • 50. Ficheros Ficheros binarios Ficheros de acceso directo (Turbo Pascal) FILEPOS (var_fichero) ● Devuelve la posición del elemento sobre el que se encuentra el puntero FILESIZE (var_fichero) ● Devuelve el número de elementos que tiene el fichero. ● Última posición escrita: Seek (varFichero, FileSize(varFichero));
  • 51. Ficheros Ficheros binarios Control de errores de E/S con ficheros ● Para evitar que el programa detenga su ejecución se puede desactivar el sistema de detección de errores ({$I-}) y realizar ese control desde el propio programa ● Este control se realiza con la función IOResult - Devuelve valor 0 si la última operación de E/S se ha realizado con éxito - Otro valor en caso contrario BEGIN … {$I-} {se desactiva para controlar Reset} RESET(archivo); {$I+} {se activa para que detecte otros posibles errores} IF (IOResult= 0) THEN …
  • 52. Ficheros: Tabla Resumen Operaciones Operaciones Ficheros de texto Ficheros Binarios Asignación assign() assign() Apertura para lectura reset() reset() Apertura para escritura rewrite() append() rewrite() reset() Lectura read() readln() read() Escritura write() writeln() write() Cierre close() close() Detección fin línea eoln() Detección fin fichero eof() eof()
  • 53. Ficheros: Tabla Resumen Operaciones Operaciones Ficheros de texto Ficheros Binarios Posicionar el puntero seek() Obtener posición del puntero filepos() Obtener nº componentes filesize() Obtener dir. Actual getdir() getdir() Cambiar dir. Actual chdir() chdir() Crear directorio mkdir() mkdir() Eliminar directorio rmdir() rmdir() Cambiar nombre físico del fichero rename() rename()