La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

COMPUTACION 2009 C lase 11 9/17/2014 Computación - Fac. Ingeniería - UNMDP2 Paradigma de programación estructurada  La programación estructurada trata.

Presentaciones similares


Presentación del tema: "COMPUTACION 2009 C lase 11 9/17/2014 Computación - Fac. Ingeniería - UNMDP2 Paradigma de programación estructurada  La programación estructurada trata."— Transcripción de la presentación:

1

2 COMPUTACION 2009 C lase 11

3 9/17/2014 Computación - Fac. Ingeniería - UNMDP2 Paradigma de programación estructurada  La programación estructurada trata sobre como diseñar programas usando procedimientos y como organizar los datos.  Esta programación nos lleva al incremento del tamaño de los programas.

4 9/17/2014 Computación - Fac. Ingeniería - UNMDP3 Paradigma de programación modular (I)  Un conjunto de procedimientos relacionados con los datos que manipulan se llama un módulo. modularización  El paradigma de programación modular sostiene que se debe "decidir que módulos se desea, luego particionar el programa de tal manera que los datos quedan escondidos en los módulos”,i.e., modularización

5 9/17/2014 Computación - Fac. Ingeniería - UNMDP4 Paradigma de programación modular (II) ocultamiento de la información  Este paradigma también se conoce como el principio de datos escondidos (ocultamiento de la información).  Cuando no hay grupos de procedimientos con datos relacionados el estilo estructurado-procedimental es suficiente.  Las técnicas para diseñar "buenos procedimientos" se aplican a cada procedimiento en un módulo.

6 9/17/2014 Computación - Fac. Ingeniería - UNMDP5 Paradigma de programación modular (III) reutilización  Otro aspecto importante es la reutilización del módulo.  Estos pueden ser re-usados por otros módulos transformándose de esta manera en bibliotecas útiles para el programador.  Compilación separada  Compilación separada de los módulos  La modularidad es un aspecto fundamental para que todo programa grande alcance el éxito.

7 9/17/2014 Computación - Fac. Ingeniería - UNMDP6 Aproximándose a la programación modular: Unidades en FREE PASCAL  Free-Pascal 1 soporta parcialmente la programación modular. Se puede reutilizar código y se puede compilar fragmentos de código separadamente. No hay mecanismos para ocultar información. unidades  Estos fragmentos de código se denominan unidades. Se puede construir grandes programas enlazando unidades precompiladas. Cuando se realiza un cambio en el código fuente, solo se tiene que compilar el segmento al que afecta la modificación. (1) El lenguaje original no poseía estas características

8 9/17/2014 Computación - Fac. Ingeniería - UNMDP7 Aproximándose a la programación modular: Unidades en FREE-PASCAL  Una Unidad es un conjunto de procedimientos, funciones, constantes y tipos de datos.  Las Unidades tienen una estructura similar a los programas y en consecuencia requieren un formato estricto y es preciso declararlas por el usuario como si se tratara de un programa o subprograma.

9 9/17/2014 Computación - Fac. Ingeniería - UNMDP8 Aproximándose a la programación modular: Unidades en FREE-PASCAL  Una Unidad se puede compilar, probar y depurar independientemente del resto del programa.  Una vez que una Unidad ha sido compilada y depurada, no es necesario que se vuelva a compilar, a menos que sea modificada  Luego, ésta puede incrustarse (usando USES ) en un programa que la use.

10 9/17/2014 Computación - Fac. Ingeniería - UNMDP9 Aproximándose a la programación modular: Unidades en FREE-PASCAL Una Unidad puede utilizar otras Unidades y posee una sección que puede contener instrucciones de inicialización.  Free Pascal se encarga de enlazar la Unidad al programa que utiliza esa Unidad, empleando siempre en esta tarea menos tiempo que en la propia compilación.

11 9/17/2014 Computación - Fac. Ingeniería - UNMDP10 Unidades FREE-PASCAL  En Free Pascal puede usarse:  Unidades creadas por el programador Unidades predefinidas (= biblioteca estándar) como:CRT (manipulación de la pantalla),DATEUTILS (manipulación de fechas y tiempos),DOS (Información del sistema),GRAPH (Gráficos) KEYBOARD (Provee funcionalidad del teclado),MATH (Funciones matemáticas),MOUSE (Manipulación del mouse),PRINTER STRINGS (Manipulación de strings),SYSTEM

12 9/17/2014 Computación - Fac. Ingeniería - UNMDP11 Unidades creadas por el programador  El programador puede agrupar procedimientos y funciones con la finalidad de solucionar problemas afines. Normalmente, se sigue este proceso con problemas comunes a diversas aplicaciones como manipulación de matrices, polinomios, fechas, etc.  El programador se puede concentrar en su propio problema dejando los detalles de implementación a estos “fragmentos de código” que son las unidades. De esta forma aumenta el nivel de abstracción en la resolución de problemas.

13 9/17/2014 Computación - Fac. Ingeniería - UNMDP12 Mecanismo de creación de una Unidad (.PPU) 1) En el editor, crear el programa fuente de la Unidad siguiendo el formato se presentará a continuación. El nombre de la unidad debe coincidir con el nombre del archivo fuente (Unit MiUnidad; ). 2) Grabar el archivo fuente (MiUnidad.pas). Este archivo con extensión PAS, debe ser grabado en el mismo directorio en el que se encuentra PASCAL para la invocación de unidades (directorio que se establece en el campo UNITS de la opción DIRECTORIES del menú OPTIONS).

14 9/17/2014 Computación - Fac. Ingeniería - UNMDP13 Mecanismo de creación de una Unidad (.PPU) 3) Cambiar la opción DESTINATION MEMORY del Menú COMPILE, a DESTINATION DISK (en TurboPascal). En Free Pascal la guarda, por defecto, en C:\FPC\2.2.2\bin\i386-win32. Se puede modificar y almacenarla en C:\FPC\2.2.2\units\i386-win32 4) Compilar en disco (se crea MiUnidad.tpu). Usar COMPILE, MAKE o BUILD. 5) Se generará un archivo con extensión.TPU (en Turbo Pascal) o.PPU (en FreePascal).

15 9/17/2014 Computación - Fac. Ingeniería - UNMDP14 Declaración de una Unidad Unit interface uses {opcional} {declaraciones públicas de objetos que se exportan} Implementation {declaraciones privadas} {definición de procedimientos y funciones} begin{opcional} {código de inicialización} end. El encabezamiento de una unidad consta de la palabra reservada UNIT seguida de su identificador.

16 9/17/2014 Computación - Fac. Ingeniería - UNMDP15 Declaración de una Unidad Unit interface uses {opcional} {declaraciones públicas de objetos que se exportan} Implementation {declaraciones privadas} {definición de procedimientos y funciones} begin{opcional} {código de inicialización} end. La interface es la sección visible a otras Unidades o programas que utilicen estas Unidades.

17 9/17/2014 Computación - Fac. Ingeniería - UNMDP16 Declaración de una Unidad Unit interface uses {opcional} {declaraciones públicas de objetos que se exportan} Implementation {declaraciones privadas} {definición de procedimientos y funciones} begin{opcional} {código de inicialización} end. La implementation contiene el cuerpo de los procedimientos y funciones declarados en la sección de interface; además de otras declaraciones, como procedimientos y funciones auxiliares no incluidos en la interface. El usuario NO tiene acceso.

18 9/17/2014 Computación - Fac. Ingeniería - UNMDP17 Declaración de una Unidad Unit interface uses {opcional} {declaraciones públicas de objetos que se exportan} Implementation {declaraciones privadas} {definición de procedimientos y funciones} begin{opcional} {código de inicialización} end. La inicialización, puede contener instrucciones, pero puede también estar vacía. Estas instrucciones podrían servir, por ejemplo, para inicializar variables

19 9/17/2014 Computación - Fac. Ingeniería - UNMDP18 Interface Aquí se declaran constantes, tipos, cabeceras de funciones y cabeceras de procedimientos que serán de uso público

20 9/17/2014 Computación - Fac. Ingeniería - UNMDP19 Implementation Se declaran, en forma completa (cabecera mas cuerpo) las funciones y procedimientos de la interface. Las cabeceras DEBEN coincidir exactamente con las de la interface Asimismo, se declaran procedimientos y funciones auxiliares.

21 9/17/2014 Computación - Fac. Ingeniería - UNMDP20 unit CajaUtil; interface function Potencia (X:real; N:integer): real; function Factorial (N:byte): longint; {N<= 12} procedure Intercambio (Var X,Y:real); Procedure OrdenaTres (Var A,B,C:real); {orden creciente} Procedure FechaValida (aaaammdd:string; Var Res: boolean); function Trimestre (aaaammdd:string): byte; {1..4} function Primo (N:integer): boolean;.... Parte de la interface (sección pública) de la unidad CajaUtil

22 9/17/2014 Computación - Fac. Ingeniería - UNMDP21 Ejemplo de declaración de la unidad CajaUtil Esta unidad llamada CajaUtil (nuestra Caja de herramientas utiles) presenta la siguiente funcionalidad:  14 funciones: Potencia de un real a un natural; factorial de N; en que trimestre del año se encuadra una fecha; verificar si un numero es primo; etc.  7 procedimientos: Intercambio de 2 variables; ordenar tres numeros reales; verificar si una fecha es válida; etc.

23 unit CajaUtil; interface function Potencia (X:real; N:integer): real; function Factorial (N:byte): longint; {N<= 12} procedure Intercambio (Var X,Y:real); procedure OrdenaTres (Var A,B,C:real); {orden creciente} Procedure FechaValida (aaaammdd:string; Var Res: boolean); function Trimestre (aaaammdd:string): byte; {1..4} function Primo (N:integer): boolean; function Capicua(N:longint):boolean;{devuelve TRUE si N es capic£a} Function Combinatoria (M,N: integer): integer; {N<= 12 y M <= 12} Function Minuscula (C: char): char;{devuelve la minúscula de C, si es mayúscula} Function Sumatoria ( N: integer): integer; {1+ 2+ 3..+ N} Procedure CordPolares (X, Y:real; Var Ang, Modulo :real); Function Aleatorio (X1,X2: integer): integer; {devuelve un valor entre[X1, X2],debe invocar previamente Randomize} Function Distancia (X1, Y1, X2, Y2: real): real; Function Cuadrante(X,Y : real): byte;{0-origen;1..4-cuadrantes;5- ejeX;6-ejeY} Function MCD (N1,N2: integer): integer; Function MCM (N1,N2: integer): integer; Procedure Vertice (a,b,c : real; Var X1, X2: real);{devuelve el vértice (X1,X2) de la parábola} Function SexagesimalesRadianes(Gr, Min, Seg: Integer): real; Procedure RadianesSexagesimal(Rad: real; Var Gr, Min, Seg : integer); Procedure DivFactor (Var Num,Cant:Integer; F:integer); {devuelve en Cant las veces que F divide a Num y en Num el resto, ej: Num= 48 y F =2 devuelve Cant=4 y Num =3} Funcionalidad de CajaUtil en la sección pública

24 IMPLEMENTATION Const factor1=Pi/180; factor2=180/Pi; {------------------------------------------------------} function Factorial (N:byte): longint; {N <= 12} var i:integer; aux:longint; begin aux:=1; for i:=2 to N do aux:=aux*i; factorial:=aux end; {------------------------------------------------------} Comienza la sección privada. El usuario de la unidad no tiene acceso. Constantes privadas Procedimiento de la interface. Recordar que las cabeceras deben coincidir exactamente Procedimiento de la interface. Recordar que las cabeceras deben coincidir exactamente

25 { **************** ****************************} Procedure CordPolares (X, Y:real; Var Ang, Modulo :real); Begin Modulo:= sqrt(sqr(X)+sqr(Y)); Ang:= ArcTan( abs(Y/X) ); If (X 0) then Ang := pi - Ang Else If (X<0) and (Y<0) then Ang := pi + Ang Else If (X>0) and (Y<0) then Ang := 2 * pi - Ang; End; Function Combinatoria (M,N: integer): integer; {M <= 12} Begin Combinatoria:=Factorial(M)div(Factorial(N)*Factorial(M- N)); End; La implementación de Otros subprogramas La implementación de Otros subprogramas

26 Procedure DivFactor (Var Num,Cant:Integer; F:integer); {Num es modificado en Cant divisiones por F} Begin Cant:=0; While (Num > 1) and (Num Mod F = 0) do Begin Cant:=Cant+1; Num:=Num Div F End; end. {termina la unidad} èEl siguiente paso es grabar en disco el archivo CajaUtil.pas è Luego, usando COMPILE, MAKE o BUILD, crear el archivo compilado CajaUtil.ppu èEl siguiente paso es grabar en disco el archivo CajaUtil.pas è Luego, usando COMPILE, MAKE o BUILD, crear el archivo compilado CajaUtil.ppu

27 9/17/2014 Computación - Fac. Ingeniería - UNMDP26 Compile/Make/Build Compile: si es una unidad compila el archivo fuente que se encuentra en la ventada del editor. Usa extensión.PPU para DOS. Make: Es mas potente que Compile, no solo compila el programa de la ventana, sino todos los archivos fuentes asociados que hayan sido modificados desde la última vez que se compiló el programa completo. Build: funciona como Make, exceptuando que recompila todos los archivos fuentes del programa sin tener en cuenta si han sido o no modificados.

28 9/17/2014 Computación - Fac. Ingeniería - UNMDP27 Uso de una Unidad Free PASCAL creada por el programador o predefinida (ambas compiladas ) PROGRAM DemoUnidad; USES Crt, CajaUtil, Dos;....................... PROGRAM DemoUnidad; USES Crt, CajaUtil, Dos;....................... La cláusula USES indica que el programa está habilitado para usar la unidad (o unidades) cuyo nombre se coloca a continuación. Se incrusta.

29 Program pruebaCajaUtil; uses crt,CajaUtil; var x,y:real; n:integer; Begin clrscr; write('Ingrese un numero real: '); readln(x); write('Ingrese un numero entero: '); readln(n); writeln ('La potencia de ',x,' a la ', n,' es =',Potencia(x,n)); writeln('El factorial de ',n, ' es =', Factorial(n)); write('Ingrese las coordenadas de un punto para verificar el cuadrante'); readln(x,y); write(x:5:2,',',y:5:2,' esta en el '); case cuadrante(x,y) OF 0: write(' origen'); 1: write(' primer cuadrante'); 2: write(' segundo cuadrante'); 3: write(' tercer cuadrante'); 4: write(' cuarto cuadrante'); 5: write(' eje X'); 6: write(' eje Y'); else write('ERROR!!!!'); end; repeat until keypressed end. Se incrustó dos unidades: una estándar y otra creada por el programador Se incrustó dos unidades: una estándar y otra creada por el programador

30 9/17/2014 Computación - Fac. Ingeniería - UNMDP29 Ejemplo de bibliotecas estándar de FREE PASCAL  La dirección del documento donde están detalladas las unidades estándar de Free Pascal es: ftp://ftp.freepascal.org/pub/fpc/docs-pdf/rtl.pdf  A continuación veremos ejemplos de funciones y procedimientos declarados en algunas de esas unidades.

31 9/17/2014 Computación - Fac. Ingeniería - UNMDP30 Unidad System La unidad system contiene las funciones y procedimientos standard de Free Pascal. Es la misma unidad para todas las plataformas. Es la misma que provee Turbo Pascal.

32 9/17/2014 Computación - Fac. Ingeniería - UNMDP31 Unidad System 1. Manipulación de caracteres (chr, copy, delete, str,val,etc.) 2. Entrada/salida (assign,append,close,mkdir,readln, seek, etc.) 3. Matematica (abs, exp,ln, odd, random,sqrt,trunc, etc.) 4. Punteros (addr, dispose, etc.) 5. Otras (halt, low, high,succ, etc.)  No es necesario colocarla en la clausula USES. Está asociada automáticamente a todos los programas. Posee 93 funciones y procedimientos.

33 9/17/2014 Computación - Fac. Ingeniería - UNMDP32 Unidad Crt Esta Unidad proporciona un conjunto específico de declaraciones de entrada y salida:  constantes,  variables,  procedimientos y funciones Permiten el acceso al control de los modos de pantalla de texto, al teclado, a los colores, al posicionamiento del cursor,ventanas y sonido.

34 9/17/2014 Computación - Fac. Ingeniería - UNMDP33 Unidad Crt: procedimientos y funciones ASSIGNCRT (p) GOTOXY (p) KEYPRESSED(f) NORMVIDEO (p) TEXTCOLOR (p) CLREOL (p) HIGHVIDEO (p) TEXTMODE (p) CLRSCR (p) INSLINE (p) READKEY (f) WHEREX (f) DELAY (p) SOUND (p) NOSOUND (p) WHERE (f) DELINE (p) LOWVIDEO (p) TEXTBACKGROUND(p) WINDOW(p) (p) Procedimiento (f) función (p) Procedimiento (f) función

35 9/17/2014 Computación - Fac. Ingeniería - UNMDP34 KEYPRESSED(f) y READKEY (f)  READKEY lee un carácter del teclado. Si la funcion KEYPRESSED tenía el valor verdadero antes de llamar a READKEY, se devuelve un carácter; en caso contrario la funcion READKEY espera a que una tecla sea pulsada. El carácter devuelto no se visualiza en pantalla.  KEYPRESSED devuelve un valor verdadero si se pulsa una tecla y falso en caso contrario. Es una funcion booleana

36 9/17/2014 Computación - Fac. Ingeniería - UNMDP35 TEXTCOLOR(p) TextColor selecciona el color del texto. TextColor (Color:byte); Color puede tomar los siguientes colores: 0..7 igual que TextBackground 8 gris oscuro 9 azul claro 10 verde claro 11 cian claro 12 rojo claro 13 magenta claro 14 amarillo 15 blanco 128 parpadeo

37 9/17/2014 Computación - Fac. Ingeniería - UNMDP36 DELAY y TEXTBACKGROUND  Delay detiene la ejecución del programa durante ms milisegundos. Delay(ms:word);  TextBackground selecciona el color de fondo; TextBackground(Color:byte); Los valores de Color son: 0 negro 1 azul 2 verde 3 cian 4 rojo 5 magenta 6 marron 7 gris claro

38 9/17/2014 Computación - Fac. Ingeniería - UNMDP37 Window  Window crea una ventana en la pantalla, donde se escribe la salida. procedure Window(X1: Byte;Y1: Byte;X2: Byte;Y2: Byte) (X1,Y1) son las coordenadas de la esquina superior-izquierda de la ventana; (X2,Y2) son las coordenadas de la esquina inferior- derecha de la misma ventana. Estas coordenadas son relativas a la pantalla completa, donde la esquina superior es (1,1).

39 9/17/2014 Computación - Fac. Ingeniería - UNMDP38 Unit uniejemp; Interface type arreglo= array [1..20] of real; Function ProdEscalar(n:byte; v,w:arreglo):real; Procedure Numporvec(n:byte; v:arreglo; h:real; var w:arreglo); Declaración de la unidad uniejemp

40 9/17/2014 Computación - Fac. Ingeniería - UNMDP39 Implementation Function ProdEscalar(n:byte; v,w:arreglo):real; Var i:byte; sum:real; Begin sum:=0; For i:=1 to n do sum:=sum+v[i]*w[i]; ProdEscalar:=sum; End; Procedure Numporvec(n:byte; v:arreglo; h:real; var w:arreglo); var i:byte; Begin For i:=1 to n do w[i]:=h*v[i]; End; End. Declaración de la unidad uniejemp

41 9/17/2014 Computación - Fac. Ingeniería - UNMDP40 Program usaunit; uses uniejemp,crt; var i,n:integer; k,norma:real; v,vnorm,s:arreglo; begin cursorbig; textcolor(lightred); writeln('Ingrese la longitud de los vectores'); readln(n); clrscr; Window(30,10,50,30) ; textcolor(lightblue); Programa que usa las unidades uniejemp y crt

42 9/17/2014 Computación - Fac. Ingeniería - UNMDP41 writeln('Ingrese las componentes del vector'); for i:=1 to n do begin writeln('v(',i,')'); readln(v[i]); end; k:=prodescalar(n,v,v); norma:=sqrt(k); writeln('La norma del vector es: ',norma); numporvec(n,v,1/norma,vnorm); writeln('El vector normalizado es:'); for i:=1 to n do writeln(vnorm[i]); readln; end. Programa que usa la unidades uniejemp y crt Programa que usa la unidades uniejemp y crt

43 9/17/2014 Computación - Fac. Ingeniería - UNMDP42 Unidad DOS (Disk Operating System) Rutinas de fecha y hora (SetTime, SetDate, etc.) Rutinas de archivos y discos (DiskFree, DiskSize, FindNext, etc.) Rutinas de procesos (Exec, Keep, DosVersion, etc.) Rutinas de servicio del sistema (MsDos, Intr, etc.)

44 9/17/2014 Computación - Fac. Ingeniería - UNMDP43 Unidad Graph Con esta unidad se puede  crear dibujos  diagramas  texto multifuente Se debe desarrollar métodos para crear dibujos y caracteres a escala en diferentes perspectivas.


Descargar ppt "COMPUTACION 2009 C lase 11 9/17/2014 Computación - Fac. Ingeniería - UNMDP2 Paradigma de programación estructurada  La programación estructurada trata."

Presentaciones similares


Anuncios Google