PDF de programación - Repaso de Pascal

Imágen de pdf Repaso de Pascal

Repaso de Pascalgráfica de visualizaciones

Publicado el 11 de Julio del 2017
943 visualizaciones desde el 11 de Julio del 2017
65,4 KB
73 paginas
Creado hace 19a (20/07/2004)
ESTRUCTURA

TEMARIO:

REPASO DE PASCAL.

ESTRUCTURAS DE DATOS LISTA.

Variables de tipo puntero.

− Definición de estructura.

− Implementación en Pascal.

− Operaciones.

PILAS, COLAS Y RECURSIVIDAD.

ESTRUCTURA DE DATOS ARBOLES.

ESTRUCTURA DE DATOS GRAFOS.

LIBROS:

− Programación avanzada y resolución de problemas en Pascal estructura de datos, metodología de la
programación e ingeniería del Software (Autores G. M. Steven C. Bruell) Editorial Anaya.

− Gusta a ella es: Pascal y estructura de datos. Date/Lilly Mc Graw Hill.

− Otro clásico es: Estructura de datos. Seymoul Lipschntz Mc Craw Hill. Es todo en Pseudocódigo.

Apuntes realizados por Ignacio Domínguez (Nacho) y Jose Luis Blanco (Chevere)

TEMA I − REPASO PASCAL

1.− ORGANIZACION DE UN PROGRAMA EN PASCAL.

2.− TIPOS DE DATOS.

3.− ENTRADA SALIDA.

4.− ESTRUCTURAS DE CONTROL.

5.− SUBALGORITMOS DE PROCEDIMIENTO Y

SUBALGORITMO DE FUNCION.

6.− PASO DE PARAMETROS.

7.− ESTRUCTURA DE DATOS VECTOR.

1

8.− ESTRUCTURA DE DATOS REGISTRO.

9.− ESTRUCTURA DE DATOS FICHERO.

1.− ORGANIZACION DE UN PROGRAMA PASCAL:

A) Area de encabezamiento. C) Area de subalgoritmos.

PROGRAM nombre; PROCEDURE

USES librerias; FUNCTION

B) Area de declaraciones. D) Area de programa principal.

CONST identif=valor; BEGIN

TYPE identif=tipo; ...

VAR identif:tipo; END.

2.− TIPOS DE DATOS EN PASCAL:

Los datos se dividen en datos simples y estructurados: son varios datos de tipo simple.

Integer String

SIMPLES Char ESTRUCTURADOS Array

Boolean El resto....

Real

3. ENTRADA. SALIDA.

READ( ); WRITE( );

READLN( ); WRITELN( );

4.− ESTRUCTURAS DE CONTROL:

Se dividen en estructuras de:

− lógica secuencial: asignaciones y llamadas a procedimientos.

− lógica condicional: simple,doble,multiple ( IF ; CASE )

− lógica iterativa o repetitiva: FOR ; WHILE ; REPEAT

SIMPLE DOBLE

IF Condición THEN IF Condición THEN

2

BEGIN BEGIN

−−−− −−−−−

END; END

ELSE

BEGIN

−−−−−

END;

IF Múltiple CASE:

CASE Variable OF

Valor1:−−−−

−−−−

Valor2:−−−−

−−−−

End;

FOR:

FOR Variable:=Valor1 TO Valorn DO

BEGIN

−−−−−

END;

WHILE: REPEAT:

WHILE Condición DO REPEAT

BEGIN −−−−−−

−−−−− UNTIL Condición;

END;

EJER 1: Hacer un programa en Pascal que acepte 20 números de teclado comprendidos entre 1 y 50, y
visualice en pantalla cuantos son mayores o iguales que 25 y cuantos son menores.

Program ejer1;

3

Uses CRT;

Var i,num,may,men: integer;

BEGIN

may := 0; men := 0;

for i := 1 to 20 do

begin

repeat

readln(num);

until (num >= 1) and ( num < 50);

if num >= 25 then may := may+1;

else men := men+1;

end;

writeln(Hay, may, nº mayores o igual a 25 años);

writeln(Hay, men, nº menores a 25 años);

END.

EJER 2: Aceptar el termino cuadrático, lineal e independiente de una ecuación de 2º grado y muestre por
pantalla todas sus posibles soluciones.

ax 2 +bx+c=0 2 −−cuadrado

1º) si a=0 x=−c/b

2º) si a<>0 y b 2 −4ac=0 x=−b/2a

3º) si a<>0 y b 2 −4ac<0 no hay soluciones reales

4º) si a<>0 y b 2 −4ac<0

PROGRAM RAIZ;

VAR

X,A,B,C,X1,X2:INTEGER;

BEGIN

WRITE('TECLEE TÉRMINO CUADRÁTICO');

4

READLN(A);

WRITE('TECLEE TÉRMINO REAL');

READLN(B);

WRITE('TECLEE TÉRMINO INDEPENDIENTE');

READLN(C);

IF A=0 THEN

BEGIN

X := −C/B;

WRITE('EL RESULTADO ES: ',X);

END;

IF (A<>0) AND (SQR(B)−4AC=0) THEN

BEGIN

X:= −B/2A;

WRITE('EL RESULTADO ES: ',X);

END;

IF (A=0) AND (SQR(B)−4AC<0) THEN

WRITE('NO EXISTEN SOLUCIONES REALES. ');

IF (A<>0) AND (SQR(B)−4AC>0) THEN

BEGIN

X1:= (−B−SQRT(SQR(B)−4AC))/2A;

X2:= (−B+SQRT(SQR(B)−4AC))/2A;

WRITE('LOS RESULTADOS SON: ',X1,','X2);

END;

END.

5.− SUBALGORITMOS DE PROCEDIMIENTOS Y DE FUNCION:

PROCEDURE nombre( ); FUNCTION nombre( ):tipo;

5

CONST

TYPE

VAR

EJER 3: Hacer una función que devuelva la suma de los elementos de un vector de n posiciones. Esta
cargado con números enteros:

FUNCTION SUMA:integer;

Var i,aux:integer;

BEGIN

aux := 0;

for i := 1 to n do

aux := aux+vector[i[;

suma:=aux;

END;

EJER 4: Hacer una función de tipo boolean que devuelve verdadero si el número

n es > 10 y falso en el caso contrario.

FUNCTION ERROR:boolean; **programa principal**

BEGIN if ERROR then writeln(n es > que 10)

if n > 10 then error := true else writeln(n no es > que 10);

else error := false;

END;

EJER 5: Codificar la potencia.

FUNCTION POTENCIA:integer;

VAR aux:integer;

BEGIN

aux:=1;

for i:=1 to exp do

aux:=aux*base;

6

potencia:=aux;

END;

EJER 6: Programa que acepte un número entero y mediante una función de tipo boolean visualice en
pantalla si el número es > ó <=10

PROGRAM ent; FUNCTION DECIM : boolean;

VAR num:integer; BEGIN

BEGIN if num>10 then decim:=true

writeln('Teclee un número: '); else decim:=false;

read(num); END;

if decim=T then writeln('El nº es > que 10')

else writeln('El nº es > que 10');

END.

6.− PASO DE PARAMETROS:

PARAMETROS: sirven para enviar informacion desde el punto de llamada del procedimiento o función al
subalgoritmo y viceversa.

Parametros formales en las cabeceras: PROCEDURE UNO (parametros formales);

Parametros actuales en la llamada: UNO (parametros actuales);

Según el sentido del flujo de información hay dos tipos de parámetros:

−PARAMETROS POR VALOR: son de ida. Desde el punto de llamada hasta el procedimiento. No se
modifican a la vuelta porque sólo son de ida.

Procedure Uno (x:integer ; a:char);

−PARAMETROS POR VARIABLE: de ida y vuelta. Llevan y devuelven información.

Procedure Dos (VAR x:real ; VAR z:char);

Nº parametros formales = Nº parametros actuales

Las variables Por Valor deben de ser:

− Mismo nº de parámetros actuales que en la cabecera de la función (formales).

− Del mismo tipo.

− En el mismo orden.

7

− En la llamada se pondría una variable, un valor o una expresión.

Las variables Por Referencia deben de ser:

− Sólo pueden ponerse variables que contengan un valor.

Ejemplo paso de parámetros.

PROGRAM EJERCICIO;

VAR

a,b,c:Integer;

PROCEDURE Parametros (Var x,y:Integer;Z:Integer);

VAR h:Integer

BEGIN

h:=x+2; y:=y+h;

z:=2*y; x:=z;

END;

BEGIN

a:=1; b:=2; c:=3;

Parametros (a,b,c);

WRITE (A); WRITE (B); WRITE (C);

END.

EJER 7: Dada la siguiente declaración de tipos y de variables que representan la cantidad de vehiculos
vendidos en los últimos 20 años.

Se pide:

1.− hacer una funcion que calcule el promedio de ventas de cualquiera de ellos.

2.− hacer un procedimiento que visualica aquellas posiciones del vector que tenga una cantidad superior al
promedio de ventas.

TYPE VECTOR : ARRAY [1..20[ OF INTEGER;

VAR

CANTT : INTEGER;

8

COCHES,MOTOS,CAMIONES,CICLOMOTORES,TRACTORES:VECTOR;

FUNCTION PROMEDIO (V1 : VECTOR):REAL;

VAR

ACUM,I : INTEGER;

BEGIN

ACUM := 0;

FOR I:=1 TO 20 DO ACUM := ACUM+V1[I[;

PROMEDIO := ACUM/20;

END;

PROCEDURE SUPERIOR(X:VECTOR);

VAR

PROM:REAL;

BEGIN

PROM:=PROMEDIO(X);

FOR I:=1 TO 20 DO

IF X[I[ > PROM THEN WRITELN(I);

END;

BEGIN

WRITELN('EL PROMEDIO DE COCHES ES: ' PROMEDIO(COCHES));

WRITELN('EL PROMEDIO DE MOTOS ES: ' PROMEDIO(MOTOS));

....

....

END.

7.− ESTRUCTURA DE DATOS VECTOR:

VECTOR: es una estructura de datos lineal, finita de elementos homogeneos que se almacenan
secuencialmente en memoria y son referenciados mediante un índice.

IMPLEMENTACION:

9

TYPE

VECTOR: = Array [lim.inf. ... lim.sup.[ OF tipo;

VAR

v1,v2,v3: VECTOR;

Búsqueda de un elemento en un Vector de 2 formas:

Secuencial: Del primero al último.

Dicotómica: En un vector ordenado se va partiendo por la mitad y se va buscando, así sucesivamente.

− BUSQUEDA DICOTOMICA:

1.− Calcular el elemento mitad.

2.− Comparar el elemento a buscar con el elemento mitad.

3.− Hacer el vector mas pequeño.

Inf := LI; Sup := LS;

Mitad := [inf+sup[ DIV 2;

Parametros: − vector donde busco.

− elemento a buscar.

− posición donde lo encuentra,si no lo encuentra un 0.

TYPE

VECTOR: = Array [lim.inf. ... lim.sup.[ OF tipo;

VAR

v1,v2: VECTOR;

PROCEDURE DICOTOMICA (v:vector;elem: ;VAR pos:integer);

VAR

Inf, Sup, Mitad: integer;

Enc: boolean;

BEGIN

Inf := LINF;

10

Sup := LSUP;

Enc:= false;

REPEAT

mitad:= (inf+sup) DIV 2;

IF elem = v[mitad[ THEN

BEGIN

enc := true;

pos := mitad;

END;

ELSE

IF elem < v[mitad[ THEN sup := mitad+1

else inf := mitad+1;

UNTIL (enc = true) OR (inf = sup);

IF NOT enc THEN pos := 0;

END;

8.− ESTRUCTURA DE DATOS REGISTRO:

REGISTRO: es una estructura de datos homogeneos o no a los cuales se les llama campos tales que se
accede a ellos mediante su propio nombre. Tienen un número ilimitado de elementos y no tienen porque
guardar un orden natural en memoria.

IMPLEMENTACION:

TYPE registro = RECORD

campo1: tipo;

campo2: tipo;

...

END;

VAR reg1, reg2: registro;

Para acceder : reg1.campo1

11

EJER 8: Se tiene la siguiente declaración de tipos y de variables:

TYPE datos=RECORD

nombre:string;

provincia:string;

ventas:ARRAY[1..12[ of real;

END;

VAR tiendas:ARRAY[1..50[ of datos;

El vector tiendas almacena el nombre,provincia y las ventas realizadas durante los últimos 12 meses de 50
tiendas de España.

Suponiendo cargada la estructura,se pide un algoritmo que visualice el nombre de las tiendas de cuenca cuyo
promedio mensual de ventas sea inferior a 100.000 pts.

FOR I:=1 TO 50 DO

BEGIN

IF TIENDAS[I[ .PROVINCIA=`CUENCA' THEN

BEGIN

ACUM:=0;

FOR J:=1 TO 12 DO

SUM:=SUM+TIENDAS[I[ .VENTAS[J[ ;

IF SUM/12 < 100000 THEN

WRITELN(TIENDAS[I[ .NOMBRE);

END;

END;

EJER 9: Dada la siguiente declaración de tipos y de variables:

TYPE Fecha =RECORD

Día:1..31;

Mes: 1..12;

Año:1960..1995;

12

END;

Alumno=RECORD

Nombre: String;

F−Nac: Fecha;

Notas: ARRAY [1..8] OF REAL;

END;

VAR CLASE2TA: ARRAY [1..35] OF ALUMNO;

Supuesta la estructura que está cargada hacer un algoritmo que visualice el

nombre de todos aquellos alumnos con nota media superior a 7.

Visualizar el nombre de los alumnos que han nacido en el mes de Febrero.

Funcion que cuente el número de alumnos.

PROCEDURE VISUALIZAR:

VAR X,Y: INTEGER; PROM: REAL;

BEGIN

FOR X:=1 TO 35 DO

BEGIN

PROM:=0;

FOR Y:=1 TO 8 DO

PR
  • Links de descarga
http://lwp-l.com/pdf5306

Comentarios de: Repaso de Pascal (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad