You are on page 1of 25

Delphi 7

Fermí Vilà

55

II . – Procedimientos y Funciones
La “Programación Estructurada” se basa en dividir el programa en bloques más pequeños, buscando una mayor legibilidad, y más comodidad a la hora de corregir o ampliar. Dichos “bloques” pueden ser de dos tipos: procedimientos (procedure) y funciones (function). La diferencia entre ellos es que un procedimiento ejecuta una serie de acciones que están relacionadas entre sí, y no devuelve ningún valor, mientras que la función sí que va a devolver valores. a) Function - Escribe la siguiente aplicación “tipo cónsola”: program Project045; {$APPTYPE CONSOLE} uses SysUtils; var n1,n2:integer; function potencia(a,b:integer):integer; var i:integer; temp:integer; begin temp:=1; for i:=1 to b do temp:=temp*a; potencia:=temp; end; begin writeln('Potencia de un número entero'); writeln; writeln('Introduce el primer número entero (base de la potencia): '); readln(n1); writeln('Introduce el exponente (también entero)'); readln(n2); writeln(n1,' elevado a ',n2,' vale ',potencia(n1,n2)); readln;

Delphi 7

Fermí Vilà

56

end. - Grábalo en TuCarpeta con el nombre Project045.dpr y ejecútalo. - Estudio del Project045: • Observa la estructura de una función: Function potencia(a,b: integer): integer; Var … Begin … … potencia:= … end; • Observa de qué forma llamamos a la función: potencia(n1 , n2) Es decir: los parámetros de entrada son n1, n2 (números enteros). El resultado o parámetro de salida de la función “potencia” no es más que “n1 elevado a n2” (multiplicar n2 veces el número n1 consigo mismo).

b) Procedure - Escribe el siguiente programa tipo cónsola: program Project046; {$APPTYPE CONSOLE} uses SysUtils; procedure saludo(nom:string); begin writeln('Hola ',nom,' qué tal?'); end; begin writeln; saludo('Pepe'); readln; end. - Grábalo como Project046.dpr y ejecútalo. - Observa la diferencia entre una “function” y un “procedure”: aparte de nombrarlos de forma distinta, la única diferencia estriba en que el “procedure” no devuelve ningún valor.

readln.Escribe el siguiente programa “tipo cónsola”: program Project047.71)).exp(3)). end. begin potenciaReal:=exp(b*ln(a)). .b:real):real. end.Delphi 7 Fermí Vilà 57 c) Adaptación de la función “potencia” para números reales.ln(1)). {$APPTYPE CONSOLE} uses SysUtils. writeln('3 elevado a 5 es '.exp(0.dpr y ejecútalo. Ahora sí.Escribe el siguiente programa MS/DOS: program Project048.71) es '. . writeln('e elevado a 3 es '.5)).num2:real. begin writeln('e elevado a 1 es '.exp(5*ln(3))). . function potenciaReal(a.Grábalo como Project047. writeln('ln(1) es '. var num1. {$APPTYPE CONSOLE} uses SysUtils. begin write('Escribe la base de la potencia: '). writeln('ln(2. Ante todo necesitamos investigar las funciones predefinidas: exp() y ln() .ln(2. readln(num1). podremos programar una “function” para calcular la potencia de números reales. writeln('e elevado a 1/2 es '.exp(1)).

num2. de forma que tengas aproximadamente: .num2):15:5).'Introduce el valor de la base de la potencia'. d) “Function” y “Procedure” en una aplicación windows .Button1Click(Sender: TObject). readln.potenciaReal(num1. writeln(num1:15:5.'Introduce el valor del exponente'.' es '.salida:=''.res:real.Menú File – New .dpr y ejecútalo varias veces para comprobar que funciona. res:=potenciaReal(num1. var num1. begin opc:='S'. opc:string[1].' elevado a '.Clic-clic en el [Button1] y escribe el siguiente procedimiento de evento: procedure TForm1.Grábalo como Project048.Application .'')).''). end.num2:15:5. . salida:string.'¿Quieres calcular otra potencia (S/N)?'. salida:=salida+FloatToStr(num1)+' elevado a '+FloatToStr(num2)+' es '+ FloatToStr(res)+#13+#10. readln(num2).Delphi 7 Fermí Vilà 58 write('Escribe el exponente: '). un “button” y un “Memo” (paleta Standard).num2). while (opc='S') Or (opc='s') do begin num1:=StrToFloat(InputBox('Cálculo de Potencias'. opc:=InputBox('Repetir'. num2:=StrToFloat(InputBox('Cálculo de Potencias'.Inserta en el formulario.'')). .

Desde la ventana de código del formulario. .Clic-clic en el [Button1] y escribe el siguiente procedimiento de evento: procedure TForm1. end.b:real):real.RaizCubica(a:real):real.'Escribe un número'.Inserta en el formulario.Escribe en el Módulo del Formulario: • Apartado public: function RaizCubica(a:real):real.Text:=salida. . . un “button” y un “memo” (con la propiedad ScrollBars = ssVertical) . cambia la propiedad ScrollBars por ssVertical . escribe: function TForm1.Graba el programa como Unit049. seria conveniente incluir en el componente Memo una barra de desplazamiento vertical. .Text:='La Raíz Cúbica de '+FloatToStr(num)+' es '+FloatToStr(RaizCubica(num)).b:real):real. end. Y en el apartado implementation. Memo1.Ejecuta el programa. donde acabas de escribir el procedimiento de evento anterior. de la siguiente forma: • Selecciona el Meno1 • En el Inspector de Objetos. var num:real.dpr e) Function “raíz cúbica” . begin num:=StrToFloat(InputBox('Raíz Cúbica'.Delphi 7 Fermí Vilà 59 end.Menú File New Application .pas – Project049. end. localiza el apartado public y escribe en él: function potenciaReal(a. Memo1. begin potenciaReal:=exp(b*ln(a)). Si quieres calcular muchas potencias.'')).potenciaReal(a. • Apartado implementation: function TForm1.Button1Click(Sender: TObject).

. end.pas – Project050. salida:string. if (opcion='M') Or (opcion='m') then salida:=salida+'El producto de '+FloatToStr(num1)+' y '+FloatToStr(num2)+' es '+FloatToStr(Producto(num1. torni:string[1]. end.Escribe en el apartado implementation: function TForm1. un “button” y un “Memo” (con la propiedad ScrollBars = ssVertical).'')).b:real):real. end.Grábalo como Unit050. num1:=StrToFloat(InputBox('Entrada de Datos'. if (opcion='S') Or (opcion='s') then salida:=salida+'La suma de '+FloatToStr(num1)+' y '+FloatToStr(num2)+' es '+FloatToStr(Suma(num1.dpr y ejecútalo.Suma(a.Application .Menú File – New .'').Button1Click(Sender: TObject).num2:real. num2:=StrToFloat(InputBox('Entrada de Datos'.'')).num2))+#13+#10. opcion:string[1]. begin Suma:=a+b.Producto(a.b:real):real.Multiplicar'.Delphi 7 Fermí Vilà 60 begin RaizCubica:=exp((1/3)*ln(a)). f) Programa con dos “functions” . while (torni='S') Or (torni='s') do begin opcion:=InputBox('Sumar . var num1.b:real):real. torni:=InputBox('Repetir'.Inserta en el formulario. function Producto(a. salida:=''.Escribe en el apartado public: function Suma(a. .Clic – clic en [Button1] y escribe el siguiente procedimiento de evento: procedure TForm1.'Escribe el segundo número'. begin torni:='S'. begin .num2))+#13+#10.'').'¿Qué quieres sumar o multiplicar (S/M)?'. Memo1. . end.b:real):real.'Escribe el primer número'. function TForm1.'¿Quieres volver a calcular (S/N)?'. .Text:=salida.

salida:=salida+'DNI = '+IntToStr(numero)+' .dpr y ejecútalo.NIF = '+IntToStr(numero)+NIF(numero)+#13+#10. corresponderá una letra u otra en el NIF.Escribe en: • El apartado public: • function NIF(dni:integer):string. salida:=''.salida:string. g) Programa que calcula la letra del NIF Según el resto de la división entera del DNI con el número 23. torni:=InputBox('Repetir'.''). . .Button1Click(Sender: TObject). con la propiedad ScrollBars = ssVertical .Inserta en el formulario. end.'¿Quieres calcular otro NIF (S/N)?'.pas – Project051.Text:=salida.Menú File – New . end.Grábalo como Unit051. Memo1. begin torni:='S'.'Escribe el DNI'. while (torni='S') Or (torni='s') do begin numero:=StrToInt(InputBox('DNI'.Application . torni. end. El apartado implementation: . un “button” y un “memo”. de la siguiente forma: Resto Letra Resto Letra 0 T 12 N 1 R 13 J 2 W 14 Z 3 A 15 S 4 G 16 Q 5 M 17 V 6 Y 18 H 7 F 19 L 8 P 20 C 9 D 21 K 10 X 22 E 11 B .Clic-clic en el [Button1] y escribe: procedure TForm1. var numero:integer.'')).Delphi 7 Fermí Vilà 61 Producto:=a*b.

Delphi 7 Fermí Vilà 62 function TForm1. end. begin NIF:=letras[(dni MOD 23)+1]. var dato:integer.NIF(dni:integer):string. h) Parámetro por valor . salida:=salida+'Inicialmente el dato es = '+IntToStr(dato)+#13+#10.modifica(vari:integer). salida:=salida+'Después de pasar por el procedure. . Memo1.Menú File – New . .Inserta en el formulario un “ button” y un “ memo “. .Escribe el siguiente procedimiento de evento: procedure TForm1. end. begin salida:=''. dato = '+IntToStr(dato)+#13+#10.pas – Project052.dpr y pruébalo. dato:=2. const letras:string[23]='TRWAGMYFPDXBNJZSQVHLCKE'.pas – Project053. modifica(dato).Escribe en el apartado implementation del módulo: procedure TForm1.dpr y pruébalo. procedure modifica(vari:integer). begin vari:=3.Application . salida:=salida+'En el interior del procedure.Grábalo como Unit052.Escribe en el apartado public del módulo: salida:string.Grábalo como Unit053. . .Text:=salida. . el dato es = '+IntToStr(vari)+#13+#10. end.Button1Click(Sender: TObject).Si todo funciona correctamente aparece: .

.Continuando con el programa anterior. le asigna el valor 3 y la escribe.Haz lo mismo en el apartado implementation. es decir. i) Parámetro por referencia . toma una variable de tipo entero. por lo tanto escribirá 3. como veremos en el siguiente programa. o sea 2. salida:=salida+'En el interior del procedure. que tendremos el “procedure”: procedure TForm1. La razón es la siguiente: Las modificaciones que hagamos a la variable “dato” dentro del procedimiento modifica. el dato es = '+IntToStr(vari)+#13+#10. • Llamamos al procedimiento modifica.Delphi 7 Fermí Vilà 63 . .modifica(var vari:integer). pero contra toda lógica escribe 2. sólo son válidas mientras estemos dentro del procedimiento. Esto se llama pasar un parámetro por valor. en la línea: procedure modifica(vari: integer) del apartado public. • El procedimiento “modifica”. por esta razón es necesario declararla en el apartado public del módulo. end.Estudio del Project053: • Observa que la variable “salida” la utilizamos en los dos “procedures”. begin vari:=3. Si realmente queremos modificar el parámetro hemos de añadir la palabra “var” delante del parámetro. De esta forma (variable pública). Lógicamente este procedimiento siempre hará lo mismo “escribirá un 3”. • Seguidamente escribimos el valor de este dato. • Volvemos al procedure Button1Click y escribimos de nuevo el valor de “dato”: debería escribir 3. dicha variable será reconocida por cualquier procedimiento y/o función del mismo módulo. añade las letras var delante del nombre de la variable. de forma que nos quede: procedure modifica(var vari:integer). • Al hacer clic en el [Button1] se ejecuta en primer lugar el procedure Button1Click y éste asigna a “dato” el número 2.

n. j) Recursividad El factorial de un número “n”. fact:=1. salida:string.3.'Introduce un número entero'. Decimos que pasamos un parámetro por referencia.1 Por ejemplo. hasta llegar a uno. por sus sucesivos números disminuidos en una unidad. es el producto del número “n”.Delphi 7 Fermí Vilà 64 . var i.dpr y ejecútalo. el programa nos escribe un 3 y no un 2. salida:=salida+'======================='+#13+#10. que matemáticamente se expresa 5! Es 120.Text:=salida.Graba el módulo con el nombre Unit054. El nombre “referencia” alude a que no se pasa realmente al procedimiento o función el valor de la variable. for i:=1 to n do fact:=fact*i. opc:='S'.'¿Quieres calcular otro factorial (S/N)?'. end.Escribe el siguiente procedimiento de evento: procedure TForm1.Vamos a hacer un programa que calcule el factorial … Menú File New Application .4. opc:=InputBox('Otro factorial'. .fact:integer. Ahora sí que en la tercera línea.Button1Click(Sender: TObject). dirección de memoria que se denomina puntero. el factorial de 5. .'')). porque 5. salida:=salida+#13+#10. while (opc='S') Or (opc='s') do begin n:=StrToInt(InputBox('Factorial de un número'. Memo1. un “button” y un “memo” (con la propiedad ScrollBars = ssVertical). begin salida:='Factorial de un número'+#13+#10.2. opc:string[1]. salida:=salida+'El Factorial de '+IntToStr(n)+' es '+IntToStr(fact)+#13+#10.pas y el proyecto como Project054.''). es decir: Factorial de n = n(n-1)(n-2)(n-3) … 2. sino la dirección de memoria en la que se encuentra.1 = 120 .Inserta en el formulario.

Menú File – New . .Delphi 7 Fermí Vilà 65 end.Grábalo como Unit055. end. begin salida:='Factorial de un número'+#13+#10.pas – Project056.pas – Project055. . Memo1.Button1Click(Sender: TObject).''). salida:=salida+#13+#10.Escribe en el apartado implementation del módulo: function TForm1.Application .'¿Quieres calcular otro factorial (S/N)?'. var n:integer.factorial(x:integer):integer. .Text:=salida. while (opc='S') Or (opc='s') do begin n:=StrToInt(InputBox('Factorial de un número'. . el programa anterior no nos sirve. salida:=salida+'El Factorial de '+IntToStr(n)+' es '+IntToStr(factorial(n))+#13+#10.dpr y ejecútalo. si se llama a si mismo.dpr y ejecútalo. opc:='S'.'')).Escribe en el apartado public del “Unit”: function factorial(x:integer):integer.Inserta en el formulario. end. . . ya que 17! Es mayor que el máximo número integer. end.Grábalo como Unit056.Si intentas calcular el factorial a partir del número 17. opc:=InputBox('Otro factorial'. opc:string[1]. begin if x=1 then factorial:=1 else factorial:=x*factorial(x-1). salida:=salida+'======================='+#13+#10.Escribe el siguiente procedimiento de evento: procedure TForm1.'Introduce un número entero'. . un “button” y un “memo” con la propiedad “ScrollBars = ssVertical” .Un procedimiento o función decimos que es recursivo. salida:string. Vamos a calcular el factorial de otra manera: forma recursiva … .

prod(a. end. salida:=salida+'=================================='+#13+#10.Application .'')). opc:string[1]. . opc:=InputBox('Otro Producto'. begin salida:='Producto de dos enteros positivos'+#13+#10.b-1). begin if b=1 then prod:=a else prod:=a+prod(a. salida:string.Inserta en el formulario. salida:=salida+'El producto recursivo de '+IntToStr(num1)+' y '+IntToStr(num2)+' es '+IntToStr(prod(num1.'Escribe un número entero positivo'.Delphi 7 Fermí Vilà 66 k) Función recursiva que calcula el producto de dos enteros positivos… . Memo1.b:integer):integer. num2:=StrToInt(InputBox('Producto Recursivo'.Menú File – New .Escribe: procedure TForm1.b:integer):integer.'')). . .Escribe en el apartado public del “Unit”: function prod(a. var num1.num2:integer. while (opc='S') Or (opc='s') do begin num1:=StrToInt(InputBox('Producto Recursivo'.Text:=salida. un “button” y un “memo”. .Button1Click(Sender: TObject). end.num2))+#13+#10. opc:='S'. con la propiedad “ScrollBars = ssVertical”. salida:=salida+'utilizando una función RECURSIVA'+#13+#10.'¿Quieres calcularotro producto recursivo (S/N)?'.'Escribe otro número entero positivo'.Escribe en el apartado implementation: function TForm1. end.'').

begin salida:='Potencia RECURSIVA'+#13+#10.num2:integer.Delphi 7 Fermí Vilà 67 .dpr y ejecútalo l) Función que calcula una potencia de forma recursiva .dpr y ejecútalo. opc:='S'. opc:=InputBox('Otra Potencia'. salida:string. salida:=salida+IntToStr(num1)+' elevado a '+IntToStr(num2)+' es '+IntToStr(pot(num1.Inserta en el formulario.Escribe en el apartado implementation: function TForm1.Grábalo como Unit058. begin if b=1 then pot:=a else pot:=a*pot(a. while (opc='S') Or (opc='s') do begin num1:=StrToInt(InputBox('Potencia Recursiva'. num2:=StrToInt(InputBox('Potencia Recursiva'. opc:string[1].Button1Click(Sender: TObject).pas – Project057.Grábalo como Unit057.b:integer):integer.Text:=salida. end.Application . var num1.'').pot(a. .b-1). end.pas – Project058.'Escribe el exponente'.'')). .'¿Quieres calcular otra potencia recursiva (S/N)?'.num2))+#13+#10. end. con la propiedad “ScrollBars = ssVertical”.'Escribe la base de la potencia'. Memo1.'')). un “button” y un “memo”.Escribe en el apartado public del “Unit”: function pot(a. salida:=salida+'====================='+#13+#10.b:integer):integer. . . .Menú File – New .Escribe: procedure TForm1.

sa:=sa+#13#10. sa:=sa+#13#10+#13#10. end. . un “button” y un “memo”.Application . Memo1.'')). var i. num:=StrToInt(InputBox('Cuantos cuadrados quieres dibujar'.num.n:integer. end.Cuadrado(n:integer).Inserta en el formulario. .dpr y ejecútalo .''.j:integer. procedure Cuadrado(n:integer). var j.Delphi 7 Fermí Vilà 68 m) “Procedure” que dibuja cuadrados .'')). begin for i:=1 to n do begin for j:=1 to n do sa:=sa+'o'.Button1Click(Sender: TObject). end.Text:=sa.Grábalo como Unit059. begin sa:=''.Escribe en el apartado implementation del módulo: procedure TForm1. end.''. Cuadrado(n). . .Escribe en el apartado public del “Unit”: sa:string.Escribe: procedure TForm1.Menú File – New .pas – Project059. con la propiedad “ScrollBars = ssVertical”. for j:=1 to num do begin n:=StrToInt(InputBox('Longitud del lado='.

Escribe: procedure TForm1.i:integer. Multiplo3(i). begin if x mod 3 =0 then sa:=sa+'(Multiplo de 3). '.En el área “public” del “unit”.Application . sa:=''.Text:=sa.'Escribe el primer número entero'.'')).'.Delphi 7 Fermí Vilà 69 Observa que la variable “sa” es pública.'')).Multiplo3(x:integer).Menú File – New . procedure Multiplo3(x:integer). . var num1.num2.Button1Click(Sender: TObject). . . por esta razón hemos de declararla en el apartado public del “unit”.En el área “implementation” del “unit” escribe: procedure TForm1. for i:=num1 to num2 do if (i mod 2=0) then begin sa:=sa+IntToStr(i)+' . end. num2:=StrToInt(InputBox('Entero mayor: '.Inserta en el formulario. . escribe: sa:string.'Escribe el segundo número entero'. begin num1:=StrToInt(InputBox('Numero menor: '. La idea del programa es hacer un procedimiento que determine si un número es múltiplo de 3 o no. end. un “button” y un “memo”. . con la propiedad “ScrollBars = ssVertical”. ya que la utilizamos en los dos “procedures”: Button1Click y Cuadrado. n) Aplicación windows que escribe los números pares entre dos números cualesquiera e indica los que son múltiplos de 3. Memo1. end.

Memo1. con la propiedad “ScrollBars = ssVertical”.Inserta en el formulario. begin resto:=0.Text:='El MCD es '+IntToStr(sol). if (x<y) then begin aux:=x.y:integer):integer. if (x mod y)=0 then resto:=y. while ((x mod y)<>0) do begin resto:=x mod y. end. .resto:integer. .'')). begin a:=StrToInt(InputBox('Escribe un numero'. . end.sol:integer.Delphi 7 Fermí Vilà 70 . end.''.Guarda el programa como Unit060.b.Menú File – New .''. sol:=MCD(a. escribe: function MCD(x. un “button” y un “memo”.Application . end. y:=aux. y:=resto. x:=y. x:=y.b).y:integer):integer.En el área implementation escribe: function TForm1.pas – Project060. MCD:=resto. b:=StrToInt(InputBox('Escribe otro numero'. o) Función que calcula el máximo común divisor de dos números .En el área public del módulo.MCD(x. var a. var aux.Escribe: procedure TForm1.dpr y ejecútalo. .Button1Click(Sender: TObject).'')).

su función de Euler es el número de enteros positivos inferiores a A y que además son primos con A Dos números son primos si su máximo común divisor es 1.Delphi 7 Fermí Vilà 71 . 10 ) = 2 MCD( 12 . . begin sa:=''.Application .Button1Click(Sender: TObject). var . 70 ) = 14 . Euler(num).Menú File – New .pas – Project061. function Euler(x:integer):integer.Inserta un button y un memo .Código: procedure TForm1. en nuestro ejemplo. 12 p) Función de Euler Dado un número entero positivo A.''. sa:=sa+'Función de Euler del número'+IntToStr(num)+#13#10.En public: sa:string. 5º) El MCD es el último resto distinto de cero.MCD(x. hasta que la división sea exacta. 4 ) = 4 MCD( 42 . Por lo tanto deberemos utilizar la función del programa anterior … . .dpr y pruébalo para los casos: MCD( 7 . var num:integer.Grábalo como Unit061.Para nuestra “function MCD” utilizamos el llamado algoritmo de Euclides. 3 ) = 1 MCD( 6 .En implementation: function TForm1.'')).Text:=sa. calculando el MCD de 36 y 48: 1º) Necesitamos saber el número mayor (por esta razón en nuestro programa utilizamos la variable auxiliar aux 2º) Divido el mayor entre el menor: 48/36 = 1 y resto 12 3º) Divido el divisor de antes entre el resto (de antes): 36/12 = 3 y resto 0 4º) Continuamos dividiendo divisor/resto. Memo1. function MCD(x. num:=StrToInt(InputBox('Función de Euler del número'.y:integer):integer.y:integer):integer. Repasemos este algoritmo. end.

if (x mod y)=0 then resto:=y.Delphi 7 Fermí Vilà 72 aux.Grábalo como Unit062. end.Inserta un button y un memo . sa:=sa+IntToStr(i)+'. end.Button1Click(Sender: TObject). for i:=1 to x-1 do if MCD(x. end.Código: procedure TForm1. q) Función que determina si un año es bisiesto o no . Euler:=contador. . y:=resto. end.i)=1 then begin contador:=contador+1. function TForm1.pas – Project062. end. sa:=sa+#13#10+'N.dpr y pruébalo. y:=aux.Application . de Euler= '+IntToStr(contador). begin resto:=0. var ano:integer.contador:integer.Menú File – New . var i.'. while ((x mod y)<>0) do begin resto:=x mod y. if (x<y) then begin aux:=x.resto:integer. x:=y.Euler(x:integer):integer. . begin contador:=0. x:=y. MCD:=resto.

end. . end.Text:='El Año '+IntToStr(ano)+' es bisiesto' else Memo1.En public: function bisiesto(x:integer):boolean.dpr y ejecútalo.Grábalo como Unit063. . begin num:=StrToInt(InputBox('Número'. var num:integer.Application .Delphi 7 Fermí Vilà 73 begin ano:=StrToInt(InputBox('Año'.''. r) Función que determina si un número es primo. if Primo(num)=1 then Memo1.'')). end.''.'')). .Text:='El numero '+IntToStr(num)+' es primo'.Menú File – New . .En implementation: function TForm1. . begin bisiesto:=((x mod 4=0) And (x mod 100<>0)) Or (x mod 400=0).Text:='El Año '+IntToStr(ano)+' no es bisiesto'.pas – Project063. .Button1Click(Sender: TObject).bisiesto(x:integer):boolean.Text:='El numero '+IntToStr(num)+' no es primo' else Memo1. if bisiesto(ano) then Memo1.Apartado public: function Primo(num:integer):integer.Código: procedure TForm1.Inserta un button y un memo .

var .Button1Click(Sender: TObject). for i:=2 to num-1 do begin resto:=num mod i.dpr y ejecútalo.Grábalo como Unit064.Primo(num:integer):integer.Apartado implementation: function TForm1.Apartado implementation: function TForm1. . solucion:integer.Delphi 7 Fermí Vilà 74 . s) Programa que determina los números primos menores de “x” (Criba de Eratóstenes) .Text:=sa. Memo1. begin num:=StrToInt(InputBox('Números primos hasta'.Primo(num:integer):integer.Menú File – New .'')).Código: procedure TForm1. if (resto=0) And (num<>2) then begin solucion:=1.''.resto:integer. function Primo(num:integer):integer.Application . break. var i. begin solucion:=0. . end. Primos_Menores(num). Primo:=solucion.Inserta un button y un memo . . end. procedure Primos_Menores(x:integer).pas – Project064. end.Apartado public: sa:string. var num:integer.//Primo=0 será primo end.

t) Programa que escribe los primeros “p” números primos (Criba de Eratóstenes) .''.Menú File – New . solucion:integer. begin solucion:=0.Delphi 7 Fermí Vilà 75 i. . Primo:=solucion. primeros_primos(num). '. end. . break. for i:=2 to num-1 do begin resto:=num mod i. Memo1.Primos_Menores(x:integer). begin for i:=1 to x-1 do if Primo(i)=0 then sa:=sa+IntToStr(i)+' . end. begin num:=StrToInt(InputBox('Cuántos primos quieres'.Código: procedure TForm1. var i:integer. end. var num:integer. end.//Primo=0 será primo end.Text:=sa.resto:integer. procedure TForm1.Inserta un button y un memo .Button1Click(Sender: TObject).Apartado public: sa:string.dpr y ejecútalo. .pas – Project065.Grábalo como Unit065.'')). if (resto=0) And (num<>2) then begin solucion:=1.Application .

repeat if Primo(numero)=0 then begin sa:=sa+IntToStr(numero)+' .numero:integer. end. break. var contador. end. '. for i:=2 to num-1 do begin resto:=num mod i. end. procedure primeros_primos(p:integer).Primo(num:integer):integer. until contador=p.resto:integer.pas – Project066.primeros_primos(p:integer).Apartado implementation: function TForm1.Grábalo como Unit066. . u) Programa que lee una frase y cuenta el número de veces que aparece cada letra en la frase .//Primo=0 será primo end. numero:=1. numero:=numero+1.Menú File – New . solucion:integer. Primo:=solucion.Application . procedure TForm1. begin contador:=0.dpr y ejecútalo. if (resto=0) And (num<>2) then begin solucion:=1. . contador:=contador+1.Delphi 7 Fermí Vilà 76 function Primo(num:integer):integer. end. var i. begin solucion:=0.

end.Inserta en el formulario un “button” y un “memo” .pas – ProjectEjer25.Text:=sa. debes utilizar la función MCD del ejercicio anterior. letras='A'.pas – ProjectEjer26.. sa:string.Delphi 7 Fermí Vilà 77 .pas – Project067. i:integer. sa:=''. begin for indice:='A' to 'Z' do cuenta[indice]:=0. cuenta:lista. b) = b b / MCD(a.dpr que sirva para simplificar una fracción numérica.''.'Z'. lista=Array[letras] of integer.dpr y ejecútalo . Observa: a a / MCD(a. b) La “salida” debería ser de la forma: . Memo1. indice:letras.Button1Click(Sender: TObject). for indice:='A' to 'Z' do for i:=1 to length(frase) do if indice=Upcase(frase[i]) then cuenta[indice]:=cuenta[indice]+1.Grábalo como Unit067. for indice:='A'to'Z' do sa:=sa+indice+#9+IntToStr(cuenta[indice])+#13#10.''). type cadena=string[255].y) 2) Haz un programa de nombre Ejer26.Código: procedure TForm1. var frase:cadena.Estudio del Project067: • UpCase(carácter): es una función que escribe en mayúscula el “carácter” • #9: determina una tabulación: el código ASCII número 9 corresponde al tabulador Ejercicios 1) Haz un programa de nombre Ejer25. frase:=InputBox('Escribe una frase'.y) = x*y / MCD(x.dpr que calcule el mínimo común múltiplo de dos números utilizando la función MCD del Project061 y sabiendo que mcm(x. .

c3) AB=(b1-a1.. Observa: a c a (mcm(b.b3).Crea otra función que permita calcular un número combinatorio.pas – ProjectEjer27. d ) La “salida” debería ser: 4) Haz un programa de nombre Ejer28.pas – ProjectEjer29. que sirva para calcular el módulo de un vector en el espacio.pas – ProjectEjer30.dpr.b2-a2.dpr.Delphi 7 Fermí Vilà 78 3) Haz un programa de nombre Ejer27. 2º. . utilizando una función. que sirva para sumar o restar dos fracciones y después simplifique el resultado. utilizando la función del ejercicio anterior.pas – ProjectEjer28..c3-a3) Área del triangulo ABC = ½ del módulo del producto vectorial de AB y AC (consulta el ProjectEjer21) Compruébalo para el siguiente caso: 6) Haz un programa de nombre Ejer30. AC=(c1-a1.dpr. Recuerda: A=(a1.dpr.Crea una función que calcule el factorial de un número (Project056).b3-a3). que sirva para calcular el área de un triángulo en el espacio.a3). B=(b1.a2.c2-a2. C=(c1. d ) / d ) + c(mcm(b. que construya el triángulo de Tartaglia o Pascal de la siguiente forma: 1º.c2. 5) Haz un programa de nombre Ejer29.b2. d ) / d ) + = b d mcm(b.

dpr que calcule los 50 primeros términos de la sucesión de término general: (3n + 1) / (2n – 1) .Delphi 7 Fermí Vilà 79 Recuerda:   3º...El programa nos ha de preguntar de entrada el número de filas del triángulo. 0   0    1 1     0 1     2  2  2       0  1  2      7) Haz un programa de nombre Ejer31.El triángulo de Tartaglia no es más que los resultados de los números combinatorios:  m m! =  n!(m − n)! n … … 4º.pas – ProjectEjer31.