









































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Llenguatges de Programació, Profesor: señor de la limpieza, Carrera: Enginyeria Informàtica, Universidad: UPC
Tipo: Apuntes
1 / 81
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!










































































Escuela Técnica Superior de Ingenieros Industriales de GijónEscuela Técnica Superior de Ingenieros Industriales de Gijón Apuntes de Informática. Metodología de la programación-Pascal. Curso 3ºApuntes de Informática. Metodología de la programación-Pascal. Curso 3º PáginaPágina 1
JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org
Antes de programar hay que analizar el proceso del problema y el planteamiento que le vamos a dar. Después resolveremos el problema mediante un algoritmo. Programar consiste en decir como se desarrolla el algoritmo y dar un resultado final.
Problema real ‡ Enunciado ‡ Algoritmo ‡ Programa
El Pascal es un lenguaje con fundamento algorítmico y el Pascal en cada máquina es distinto y por ello es necesario que se establezca un lenguaje standard de Pascal para que funcionen en todas las máquinas.
Hay dos maneras de meter los datos (objetos): constantes y variables. Los objetos pueden ser de distinto tipo:
a.- Tipo numérico : Entero (Z) sin decimales (32) Real (R) con decimales b.- Tipo carácter : una única letra imprimible del código ASCII ( ‘a’,’32’ ) c.- Tipo string : Es una secuencia de caracteres que se trata como un solo dato. d.- Tipo lógico o booleano : Pueden contener los valores de falso o verdadero
El tipo de variable determina el rango de valores que podemos almacenar en ella.
Los tipos de datos que manejaremos en nuestro programa pueden ser de dos clases: variables o constantes.
Como su nombre lo indica las variables pueden cambiar a lo largo de la ejecución de un programa, en cambio las constantes serán valores fijos durante todo el proceso.
Un ejemplo de una variable es cuando vamos a sumar dos números que serán introducidos por el usuario del programa, éste puede introducir dos valores cualesquiera y no sería nada útil restringirlo a dos valores predefinidos, así que dejamos que use los valores que el necesite sumar.
PáginaPágina 2
Apuntes de InformáticaApuntes de Informática Metodología de la programación-PascalMetodología de la programación-Pascal
© JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera
Ahora, si nuestro programa de operaciones matemáticas va a utilizar el valor de PI para algunos cálculos podemos definir un identificador PIPI con el valor de 3.1415926 constante, de tal forma que PI no pueda cambiar de valor, ahora en lugar de escribir todo el número cada vez que se necesite en nuestro programa, solo tenemos que escribir PI.
Las variables y constantes pueden ser de todos los tipos vistos anteriormente: numéricos tanto enteros como reales, caracteres, cadenas de caracteres, etc.
ComentariosComentarios
Es posible introducir comentarios en nuestro programa que sirvan únicamente para mejorar la comprensión del código fuente.
Un comentario no es tomado en cuenta al momento de la compilación del programa y es de enorme importancia al momento de crearlo, modificarlo o mantenerlo.
Existen dos formas de colocar comentarios en un programa de Turbo Pascal, entre llaves: {Comentario} o entre paréntesis y asteriscos: (Comentario).
Se pueden hacer dos tipos de operaciones:
Las operaciones aritméticas se aplican a tipos numéricos y son por orden de prioridad: *mod (resto de la div), div, /, +,-
,<,<=,>=,=,<> (distinto)**
Ej: 3+25>20 es 13>20 y es F*
Mezcla de valores de distintos tipos numéricos: Para la suma, la resta y el producto: OperandoOperando IzquierdaIzquierda
OperandoOperando DerechaDerecha
ResultadoResultado
Real Real Real Integer Integer Integer Real Integer Real Integer Real Real
PáginaPágina 4
Apuntes de InformáticaApuntes de Informática Metodología de la programación-PascalMetodología de la programación-Pascal
© JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera
Asignación: ExternaExterna (se lee un valor del dato por teclado) leerleer
Ejemplo: Dados tres números por teclado A,B,C, imprimir el mayor en pantalla. ComienzoComienzo leerleer (A,B,C); sisi (A>B) entoncesentonces sisi (A>C) entoncesentonces escribirescribir A; sinosino escribirescribir C; finsifinsi sinosino sisi (B>C) entonces entonces escribirescribir B; sino sino escribirescribir C; finsi finsi finsifinsi FinFin
Condicional generalizado : segúnsegún
Ejemplo: ComienzoComienzo leerleer (x);
Escuela Técnica Superior de Ingenieros Industriales de GijónEscuela Técnica Superior de Ingenieros Industriales de Gijón Apuntes de Informática. Metodología de la programación-Pascal. Curso 3ºApuntes de Informática. Metodología de la programación-Pascal. Curso 3º PáginaPágina 5
JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org
segúnsegún
**->Construir un programa que según la tabla, un semáforo regule la duración de el tiempo de luz en verde.
Flujo/Tiempo Escas o 0-
Medio 301- 500
**Alto
**
lluvia 30 50 60 nublado 30 45 50 soleado 30 45 45 Solución: Comienzo leerleer (tiempo,flujo); si flujo=escaso entoncesentonces t-apertura= sinosino sisi flujo=medio entoncesentonces sisi tiempo=lluvia entoncesentonces t-apertura= sino t-apertura= fsifsi sinosino sisi tiempo=lluvia entoncesentonces t-apertura= sinosino sisi tiempo=nubes entoncesentonces t-apertura= sinosino t-apertura= fsifsi fsifsi fsifsi fsifsi TerminarTerminar
Estructuras IterativasEstructuras Iterativas^11 1.- MientrasMientras
Puede que nunca ejecute la acción.
(^1) Las acciones no pueden modificar el predicado pq podría hacerse infinito. (bucle infinito).
Escuela Técnica Superior de Ingenieros Industriales de GijónEscuela Técnica Superior de Ingenieros Industriales de Gijón Apuntes de Informática. Metodología de la programación-Pascal. Curso 3ºApuntes de Informática. Metodología de la programación-Pascal. Curso 3º PáginaPágina 7
JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org
BarajarBarajar cont= cont sotas= MientrasMientras hay cartas hacerhacer mirarmirar carta cont=cont+ sisi carta=sota entoncesentonces cont sotas=contsotas finsifinsi fmientrasfmientras escribirescribir cont, contsotas
2.- Contar el nº de veces que aparecen 2 reyes seguidos mientrasmientras hay-cartas hacerhacer mirarmirar carta mirarmirar carta sisi carta1=rey y carta2=rey entoncesentonces cont=cont+ fsi fsi fmientrasfmientras^2
{} o (**) comentario dentro del programa. ; separa sentencias. El programa siempre acabará con END.END..
PROGRAM nombre_del_programa (input, output);
VAR {declara las variables del programa}
PROCEDURE {declaran procedimientos del programa}
(^2) Esta mal, no contaria 1R, R
PáginaPágina 8
Apuntes de InformáticaApuntes de Informática Metodología de la programación-PascalMetodología de la programación-Pascal
© JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera
FUNCTION {declara funciones} ...
BEGIN {cuerpo del programa} end.
8. 1. 1. Salida por consola:8. 1. 1. Salida por consola: WRITE
El Pascal nos proporciona dos procedimientos para mostrar resultados por la salida estándar. Estos son write y writeln.
procedimiento write write ( (^) variable )
,
constante
procedimiento writeln writeln ( (^) variable )
,
constante
Visualiza resultados por pantalla. Al finalizar, da un salto a la siguiente línea para visualizar el siguiente resultado. Su sintaxis es: WRITELN (lista_de_salidas). La lista_de_salidas es una serie de elementos separados por , (coma).
PáginaPágina 10
Apuntes de InformáticaApuntes de Informática Metodología de la programación-PascalMetodología de la programación-Pascal
© JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera
WRITELN (R); WRITELN (R:8:6); WRITELN (R:8:5); WRITELN (R:8:4); WRITELN (R:8:3); WRITELN (R:8:2); WRITELN (R:8:1); WRITELN (R:8:0) END. En pantalla: 3.1415900000E + 00
3
8. 1. 2. Entrada por teclado:8. 1. 2. Entrada por teclado: READLN
buffer
Juan 21 75 EOLN Programa en Pascal
read readln
Juan 21 75
teclado
Los procedimientos de lectura que nos proporciona el Pascal son dos: read y readln. Su sintaxis para la entrada estándar es la siguiente.
procedimiento read read ( (^) variable ) , procedimiento readln readln ( (^) variable ) ,
La sentencia READLN:La sentencia READLN:
Solicita datos al usuario. Su sintaxis es: READLN(lista_de_variables). La lista_de _variables tiene que estar separada por ‘,’. Al finalizar de leer todas las variables salta a la siguiente línea.
Escuela Técnica Superior de Ingenieros Industriales de GijónEscuela Técnica Superior de Ingenieros Industriales de Gijón Apuntes de Informática. Metodología de la programación-Pascal. Curso 3ºApuntes de Informática. Metodología de la programación-Pascal. Curso 3º PáginaPágina 11
JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org
La sentencia READ:La sentencia READ:
Solicita datos al usuario. Su sintaxis es: READ(lista_de_variables). La lista_de _variables tiene que estar separada por ‘,’. Al finalizar de leer todas las variables no salta a la siguiente línea. La sentencia READLN(Ch1, Ch2, Ch3, Cantidad); se puede escribir como READ(Ch1, Ch2, Ch3, Cantidad); READLN;
Ejemplo:Ejemplo: VAR A, B, C, D: INTEGER;
SentenciaSentencia DatosDatos Valores leídosValores leídos READ(A, B); READ(C, D);
123 456 789
123 456 789
123 456 789
If-Then-ElseIf-Then-Else
i f t h e n e l s e s e n t e n c i a
s e n t e n c i a
Cada else va asociado a cada if inmediatamente anterior y la sentencia anterior al else no lleva ;.
if <condición> then
if a<> then c:=b/a else c:=b*a;
if a<>0 then begin writeln(‘a,b,c’); c:=b/a; end else c:=b*a;
Escuela Técnica Superior de Ingenieros Industriales de GijónEscuela Técnica Superior de Ingenieros Industriales de Gijón Apuntes de Informática. Metodología de la programación-Pascal. Curso 3ºApuntes de Informática. Metodología de la programación-Pascal. Curso 3º PáginaPágina 13
JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org
En este apartado se introduce una metodología que permite diseñar algoritmos de naturaleza iterativa, es decir, algoritmos en los que una determinada acción se repite un cierto número de veces, eventualmente ninguna.
Concretamente, hay que conseguir
Un conjunto finito de objetos está organizado en forma de secuencia si o bien
a) es el conjunto vacío, y en este caso diremos que se trata de la secuencia vacía , o bien b) es un conjunto no vacío y además es posible definir las nociones de
Desde el punto de vista del diseño de algoritmos, una información está organizada en forma de secuencia si es posible
PáginaPágina 14
Apuntes de InformáticaApuntes de Informática Metodología de la programación-PascalMetodología de la programación-Pascal
© JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera
Vamos a dar unos patrones o esquemas de programa que permiten resolver todos los problemas de naturaleza iterativa. Estos esquemas son como plantillas que deben ser cubiertas con los datos adecuados para el problema concreto de que se trate.
Siguiendo el texto proponemos tres esquemas distintos que resuelven otros tantos tipos de problemas iterativos diferentes. El programador que utilice este método de tratamiento secuencial debe
1.- Clasificar su problema en uno de estos tres grandes grupos 2.- Rellenar la plantilla o esquema, es decir 2.1.- Realizar la máquina de secuencias 2.2.- Realizar el tratamiento concreto que se debe aplicar a los elementos de la secuencia para resolver el problema
8. 3. 1. 1. Esquemas de recorrido8. 3. 1. 1. Esquemas de recorrido
Resuelven problemas en los que cada uno de los elementos de la secuencia se trata o procesa para obtener el resultado. Se distinguen dos tipos de problemas:
1.- Aquellos en los que todos los elementos de la secuencia se tratan igual esquema de recorrido número 1 es { recorre una secuencia no vacía tratando de distinto modo al elemento final } iniciar_adquisicion; iniciar_tratamiento; obtener_elemento_siguiente; mientras elemento_no_final hacer { se han tratado todos los elementos que preceden al elemento en curso que no es el final } tratar_elemento obtener_elemento_siguiente; finmientras ; tratar_elemento_final; finalizar_tratamiento fin.
Figura 4
PáginaPágina 16
Apuntes de InformáticaApuntes de Informática Metodología de la programación-PascalMetodología de la programación-Pascal
© JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera
8. 3. 1. 2. Esquemas de Busqueda Asociativa8. 3. 1. 2. Esquemas de Busqueda Asociativa
Se trata de un recorrido especial en el que se recorre la secuencia sin hacer nada con sus elementos, hasta encontrar un elemento que cumpla una determinada propiedad, o bien hasta llegar al final de la secuencia. El esquema de programa asociado es el que se muestra en la Figura 7.
El significado de las acciones y predicados que aparecen en este esquema y que no están en ninguno de los anteriores es el que se muestra en la Figura 8
Resumen de los 3 esquemas generales distintos para tratamientos secuenciales.
Esquema 1:
Inicializar Tratamiento Inicializar Adquisición Obtener_1º_elemento
esquema de búsqueda asociativa es { recorre una secuencia que no puede ser vacía hasta encontrar un elemento que cumpla una propiedad o hasta llegar al final} iniciar_adquisicion; obtener_elemento_siguiente; mientras elemento_no_hallado y elemento_no_final hacer obtener_elemento_siguiente finmientras ; si elemento_hallado entonces tratar_elemento_hallado sino tratar_ausencia finsi ; fin.
Figura 7
esquema de búsqueda asociativa es { recorre una secuencia que no puede ser vacía hasta encontrar un elemento que cumpla una propiedad o hasta llegar al final} iniciar_adquisicion; obtener_elemento_siguiente; mientras elemento_no_hallado y elemento_no_final hacer obtener_elemento_siguiente finmientras ; si elemento_hallado entonces tratar_elemento_hallado sino tratar_ausencia finsi ; fin.
Figura 7
tratar_elemento_hallado tratar_ausencia elemento_hallado Es lo que hay que hacer si se encuentra un elemento que cumpla la propiedad
Es lo que se hace si se llega al final sin haber encontrado un elemento que cumpla la propiedad
Es el predicado que nos indica si un elemento cumple la propiedad buscada Figura 8
Escuela Técnica Superior de Ingenieros Industriales de GijónEscuela Técnica Superior de Ingenieros Industriales de Gijón Apuntes de Informática. Metodología de la programación-Pascal. Curso 3ºApuntes de Informática. Metodología de la programación-Pascal. Curso 3º PáginaPágina 17
JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org
Mientras no_último_elemento Tratar elemento Obtener siguiente_elemento Fmientras Tratar ultimo elemento Finalizar Tratamiento
El último elemento tiene diferente tratamiento del resto.
Esquema 2:
Inicializar Tratamiento Inicializar adquisición Repetir Obtener elemento Tratar elemento Hasta último_elemento Finalizar tratamiento
Esquema 3: esquema de búsqueda
Inicializar Adquisición Obtener primer elemento Mientras no_último_elemento y elemento_no_encontrado hacer Obtener siguiente_elemento Fmientras Si elemento_encontrado entonces Tratar_presencia sino tratar_ausencia finsi
Ejemplo1:Ejemplo1: Dado un nº entero, imprimir en pantalla su imagen especular. (Todos los elementos tienen el mismo tratamiento).
El programa se realizará con divisiones entre 10 y cogiendo el resto. Los elementos de cada secuencia son el resto y el cociente de cada división.
PROGRAM invertir (input, output);
VAR num, digito:integer;
Escuela Técnica Superior de Ingenieros Industriales de GijónEscuela Técnica Superior de Ingenieros Industriales de Gijón Apuntes de Informática. Metodología de la programación-Pascal. Curso 3ºApuntes de Informática. Metodología de la programación-Pascal. Curso 3º PáginaPágina 19
JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org
8. 3. 2. Tratamiento de secuencias eventualmente vacias8. 3. 2. Tratamiento de secuencias eventualmente vacias En esta sección vamos a generalizar los esquemas de programa anteriores para que sean capaces de tratar con secuencias que eventualmente pueden ser vacías. En principio lo único que hay que añadir a los esquemas vistos, tanto de recorrido como de búsqueda asociativa, es la capacidad de detectar que la secuencia es vacía antes de intentar acceder al primer elemento de la misma. Parece lógico que el momento oportuno para realizar esta comprobación es justo después de iniciar la adquisición, pero antes de obtener elementos. Así, lo que necesitamos con respecto a los esquemas anteriores es poder definir el predicado secuencia_vacia cuya especificación será la que se muestra en la Figura 9.
Si comparamos el predicado secuencia_vacia con el predicado ultimo_elemento , aunque en principio fueron concebidos para detectar situaciones distintas, en realidad tienen una utilidad muy parecida. Los dos son ciertos cuando no quedan elementos por tratar (porque no los hay, o bien porque ya se obtuvo el último). Y los dos deben ser evaluados después de la acción iniciar_adquisición. Así, podemos refundirlos en uno solo que nos permitirá
accion control de acceso es {iniciar_adquisicion} ORDEN:=0; {obtener_elemento_siguiente]} leer NUMERO; ORDEN:=ORDEN+1; mientras NUMERO ≠ SECRETO {elemento_no_hallado} y ORDEN<10 {elemento_no_final} hacer {obtener_elemento_siguiente} leer NUMERO; ORDEN:=ORDEN+ finmientras ; si NUMERO = SECRETO {elemento_hallado} entonces escribir “acceso permitido” {tratar_elemento_hallado} sino escribir “acceso denegado” {tratar_ausencia} finsi ; fin.
secuencia_vacia Produce el valor cierto cuando la secuencia es vacía. En otro caso devuelve falso. Debe evaluarse después de la acción iniciar_adquisicion. Figura 9
PáginaPágina 20
Apuntes de InformáticaApuntes de Informática Metodología de la programación-PascalMetodología de la programación-Pascal
© JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera ICQ# 24246105 [email protected] http://www2.drogas.org JJuan Ramón Alvarez Rierauan Ramón Alvarez Riera
detectar las dos situaciones y que denominaremos fin_secuencia. Su especificación se muestra en la Figura 10.
A continuación indicamos cómo se transforman los esquemas introduciendo la posibilidad de tratar con las secuencias vacías.
8. 3. 2.1.Esquemas de recorrido de secuencias eventualmente8. 3. 2.1.Esquemas de recorrido de secuencias eventualmente vaciasvacias
El esquema de recorrido número 1 que recorre secuencias tratando de distinto modo al último elemento queda como se indica en la Figura 11. Por su parte el esquema número 2 que trata igual a todos los elementos queda en principio tal y como se indica en la Figura 12, pero se puede transformar de forma evidente en el que se muestra en la Figura 13 que es más claro.
fin_secuencia Produce el valor cierto si no quedan elementos por recorrer. En otro caso devuelve falso. Debe evaluarse después de la acción iniciar_adquisicion. Figura 10
esquema de recorrido número 1 es { recorre una secuencia que puede ser vacía tratando de distinto modo al elemento final } iniciar_adquisicion; iniciar_tratamiento; si no fin_secuencia entonces obtener_elemento_siguiente; mientras no fin_secuencia hacer { se han tratado todos los elementos que preceden al elemento en curso que no es el final } tratar_elemento; obtener_elemento_siguiente finmientras ; tratar_elemento_final; finsi ; finalizar_tratamiento fin. Figura 11